<?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>136351</bug_id>
          
          <creation_ts>2014-08-28 14:55:00 -0700</creation_ts>
          <short_desc>Web Inspector: timelines should not count time elapsed while paused in the debugger</short_desc>
          <delta_ts>2014-12-11 09:24:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137629</dependson>
          <blocked>136292</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>benjamin</cc>
    
    <cc>clopez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1032077</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-28 14:55:00 -0700</bug_when>
    <thetext>The timeline is basically useless if you pause in the debugger while recording, as it does not pause the elapsed timer while the debugger is paused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032078</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-08-28 14:55:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/18167351&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037064</commentid>
    <comment_count>2</comment_count>
      <attachid>238617</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-24 16:07:20 -0700</bug_when>
    <thetext>Created attachment 238617
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037153</commentid>
    <comment_count>3</comment_count>
      <attachid>238617</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-24 21:44:31 -0700</bug_when>
    <thetext>Comment on attachment 238617
WIP

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

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:287
&gt; +double InspectorResourceAgent::timestamp()
&gt; +{
&gt; +    // If the timeline agent is recording now, use its stopwatch. Otherwise, just report 0.0
&gt; +    // since the timestamps are only used to accurately graph records on the timeline.
&gt; +    if (InspectorTimelineAgent* timelineAgent = m_instrumentingAgents-&gt;inspectorTimelineAgent())
&gt; +        return timelineAgent-&gt;timestamp();
&gt; +
&gt; +    return 0.0;
&gt; +}

Some how I feel we use those timestamps other times for Resources. But I don&apos;t know…

&gt; Source/WebCore/inspector/InspectorTimelineAgent.h:203
&gt; +    // Returns the elapsed time from a monotonic stopwatch that starts with timeline recording and
&gt; +    // pauses when the debugger pauses or execution is otherwise suspended.
&gt; +    double timestamp();

Such win in this patch!

&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:170
&gt; +            // FIXME: compatibility: old versions pass milliseconds since epoch,
&gt; +            // while trunk uses seconds elapsed since start of recording.
&gt; +            var startTime = recordPayload.startTime;
&gt; +            var endTime = recordPayload.endTime;

Should be easy to convert the old. We just need to subtract the records from the startTime of the first record if greater than epoch?

We will need to address this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037546</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-26 13:40:05 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 238617 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238617&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:287
&gt; &gt; +double InspectorResourceAgent::timestamp()
&gt; &gt; +{
&gt; &gt; +    // If the timeline agent is recording now, use its stopwatch. Otherwise, just report 0.0
&gt; &gt; +    // since the timestamps are only used to accurately graph records on the timeline.
&gt; &gt; +    if (InspectorTimelineAgent* timelineAgent = m_instrumentingAgents-&gt;inspectorTimelineAgent())
&gt; &gt; +        return timelineAgent-&gt;timestamp();
&gt; &gt; +
&gt; &gt; +    return 0.0;
&gt; &gt; +}
&gt; 
&gt; Some how I feel we use those timestamps other times for Resources. But I don&apos;t know…

I did not believe it at first, but I have not found any regressions. The actual wall-clock times are included and displayed as HTTP headers/resource load timing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037703</commentid>
    <comment_count>5</comment_count>
      <attachid>238789</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-27 14:43:10 -0700</bug_when>
    <thetext>Created attachment 238789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037705</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-27 14:45:02 -0700</bug_when>
    <thetext>Attachment 238789 did not pass style-queue:


ERROR: Source/JavaScriptCore/profiler/ProfileGenerator.cpp:50:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037751</commentid>
    <comment_count>7</comment_count>
      <attachid>238789</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-27 23:56:14 -0700</bug_when>
    <thetext>Comment on attachment 238789
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:134
&gt; +        this._capturingStartedTimestamp = Date.now();

The device time might be drastically different from the local machine&apos;s time. So this has a high likelihood of never meeting the &quot;recordPayload.startTime &gt; this._capturingStartedTimestamp&quot; check in processRecord. Even if the device time and local machine time are in sync, the protocol delay can cause the backend times to be a few ms earlier, so the first few records would have bad time values.

The Timeline rulers and graphs simply us TimelineRecording.startTime, which is the earliest record startTime seen. It should always be the first record. So maybe in processRecord, just do something like:

if (isNaN(this._capturingStartedTimestamp))
    this._capturingStartedTimestamp = recordPayload.startTime;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037797</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-28 14:54:04 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 238789 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238789&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:134
&gt; &gt; +        this._capturingStartedTimestamp = Date.now();
&gt; 
&gt; The device time might be drastically different from the local machine&apos;s time. So this has a high likelihood of never meeting the &quot;recordPayload.startTime &gt; this._capturingStartedTimestamp&quot; check in processRecord. Even if the device time and local machine time are in sync, the protocol delay can cause the backend times to be a few ms earlier, so the first few records would have bad time values.
&gt; 
&gt; The Timeline rulers and graphs simply us TimelineRecording.startTime, which is the earliest record startTime seen. It should always be the first record. So maybe in processRecord, just do something like:
&gt; 
&gt; if (isNaN(this._capturingStartedTimestamp))
&gt;     this._capturingStartedTimestamp = recordPayload.startTime;

It&apos;s always safe to subtract the first timestamp from subsequent ones to (possibly no-op) compute the elapsed time. But, how do we know whether to divide by 1000? Hardcoding something like |if (this._capturingStartedTimestamp &gt; 100.0) startTime /= 1000;| seems kinda hacky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037960</commentid>
    <comment_count>9</comment_count>
      <attachid>238862</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-29 09:34:59 -0700</bug_when>
    <thetext>Created attachment 238862
WIP - try to fix windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038718</commentid>
    <comment_count>10</comment_count>
      <attachid>239068</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-01 16:54:41 -0700</bug_when>
    <thetext>Created attachment 239068
Proposed Fix (+legacy backend code path)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038723</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-01 16:57:41 -0700</bug_when>
    <thetext>Attachment 239068 did not pass style-queue:


ERROR: Source/JavaScriptCore/profiler/ProfileGenerator.cpp:50:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039102</commentid>
    <comment_count>12</comment_count>
      <attachid>239068</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-10-02 19:35:44 -0700</bug_when>
    <thetext>Comment on attachment 239068
Proposed Fix (+legacy backend code path)

Not sure what is up with Windows…</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039115</commentid>
    <comment_count>13</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-02 20:58:07 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 239068 [details])
&gt; Not sure what is up with Windows…

Unnecessary WTF_EXPORT_PRIVATE since everything is in the header now. Will remove before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039278</commentid>
    <comment_count>14</comment_count>
      <attachid>239217</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-03 11:19:31 -0700</bug_when>
    <thetext>Created attachment 239217
Try windows fix again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039279</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-03 11:22:31 -0700</bug_when>
    <thetext>Attachment 239217 did not pass style-queue:


ERROR: Source/JavaScriptCore/profiler/ProfileGenerator.cpp:50:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039525</commentid>
    <comment_count>16</comment_count>
      <attachid>239217</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-04 12:18:44 -0700</bug_when>
    <thetext>Comment on attachment 239217
Try windows fix again

Clearing flags on attachment: 239217

Committed r174319: &lt;http://trac.webkit.org/changeset/174319&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039526</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-04 12:18:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039540</commentid>
    <comment_count>18</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-04 14:56:01 -0700</bug_when>
    <thetext>Reverted r174319 for reason:

Causes assertions in fast/profiler tests. Needs nontrivial investigation, will take offline.

Committed r174322: &lt;http://trac.webkit.org/changeset/174322&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040179</commentid>
    <comment_count>19</comment_count>
      <attachid>239446</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-07 19:23:27 -0700</bug_when>
    <thetext>Created attachment 239446
Patch (Fixed test regressions)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040181</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-07 19:24:38 -0700</bug_when>
    <thetext>Attachment 239446 did not pass style-queue:


ERROR: Source/JavaScriptCore/profiler/ProfileGenerator.cpp:50:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040182</commentid>
    <comment_count>21</comment_count>
      <attachid>239446</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-07 19:25:48 -0700</bug_when>
    <thetext>Comment on attachment 239446
Patch (Fixed test regressions)

Relative to the patch that was rolled out, this patch simplifies Stopwatch so reset() doesn&apos;t need to be called before start()---the stopwatch constructor returns an object in a valid state. Also, fix some uses of one-off stopwatches for profiling through console.profile (used in tests) and JSStartProfiling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040319</commentid>
    <comment_count>22</comment_count>
      <attachid>239446</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-10-08 10:02:28 -0700</bug_when>
    <thetext>Comment on attachment 239446
Patch (Fixed test regressions)

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

&gt; Source/WebCore/inspector/InspectorTimelineAgent.cpp:194
&gt; +    // Use an independent stopwatch for console-initiated profiling, since the user will expect it
&gt; +    // to be relative to when their command was issued.

How does this affect the UI?

&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:176
&gt; +            // COMPATIBILITY (iOS8): old versions use milliseconds since the epoch, rather
&gt; +            // than seconds elapsed since timeline capturing started. We approximate the latter by
&gt; +            // subtracting the start timestamp, as old versions did not use monotonic times.
&gt; +            if (isNaN(this._legacyFirstRecordTimestamp))
&gt; +                this._legacyFirstRecordTimestamp = recordPayload.startTime;

What about iOS 8 and earlier with WebInspector.ProfileNodeCall times?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040678</commentid>
    <comment_count>23</comment_count>
      <attachid>239446</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-09 13:48:20 -0700</bug_when>
    <thetext>Comment on attachment 239446
Patch (Fixed test regressions)

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:176
&gt;&gt; +                this._legacyFirstRecordTimestamp = recordPayload.startTime;
&gt; 
&gt; What about iOS 8 and earlier with WebInspector.ProfileNodeCall times?

Double checking, but looks like there are a few regressions with this patch when inspecting iOS 8. Now that I can directly test this use case, I&apos;ll post a revised patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040728</commentid>
    <comment_count>24</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-09 16:23:59 -0700</bug_when>
    <thetext>Another regression: probe samples come with timestamps, but currently they aren&apos;t synced to the timeline&apos;s sense of elapsed time. It is not as easy to plumb the Stopwatch to InspectorDebuggerAgent.

I think it may make sense to move the shared Stopwatch instance (or a getElapsedTime() method) to the InspectorEnvironment since it is used by 4 agents (CSS, Debugger, Page, Timeline). Depending on environment type, the stopwatch could come from Timeline agent (WebCore) or from a JSGlobalObjectInspectorController (JSC).

We don&apos;t need to worry about computing elapsed time for resources when the timelines agent is unavailable, because this is only surfaced in the UI through the timelines UI and the default dashboard&apos;s time-to-load-event ticker (which uses data gathered by an auto-capturing timeline started on page load).

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041074</commentid>
    <comment_count>25</comment_count>
      <attachid>239660</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-10 17:00:11 -0700</bug_when>
    <thetext>Created attachment 239660
Revised approach

This patch is up for review but still has some legacy regressions. Investigating those is somewhat blocked by remote inspector crashing often. Please look at design changes in the attached patch. Namely, moving the shared stopwatch to InspectorEnvironment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041076</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-10 17:01:48 -0700</bug_when>
    <thetext>Attachment 239660 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:47:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/profiler/ProfileGenerator.cpp:50:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042651</commentid>
    <comment_count>27</comment_count>
      <attachid>240077</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-18 17:34:27 -0700</bug_when>
    <thetext>Created attachment 240077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042652</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-18 17:35:59 -0700</bug_when>
    <thetext>Attachment 240077 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:47:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/profiler/ProfileGenerator.cpp:50:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042655</commentid>
    <comment_count>29</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-18 17:41:48 -0700</bug_when>
    <thetext>Latest patch is confirmed to work for iOS 8. It moves the legacy first timestamp to be per-TimelineRecording, since these could be arbitrarily delayed from one another. Elapsed time should be relative to the start of a recording.

Note that for legacy backends, elapsed time will revert to its previous behavior: there will be gaps in the timeline when the debugger pauses. We can&apos;t do much about that, and it&apos;s fine.

On my device there are weird issues with remote inspection hanging after an auto-captured timeline recording, but this happens with a nightly build without these changes. I could not trigger any wrong-timestamp bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042911</commentid>
    <comment_count>30</comment_count>
      <attachid>240077</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-10-20 11:56:29 -0700</bug_when>
    <thetext>Comment on attachment 240077
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:124
&gt; +    computeElapsedTime: function(timestamp)

This function sounds more like a duration calculation taking a start and stop time. Maybe computeRelativeTime?

&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:127
&gt; +        if (!this._activeRecording)
&gt; +            return;

Be explicit here:
return 0; ?
return undefined; ?

&gt; Source/WebInspectorUI/UserInterface/Models/TimelineRecording.js:183
&gt; +    computeElapsedTime: function(timestamp)

Ditto re: computeRelativeTime?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042983</commentid>
    <comment_count>31</comment_count>
      <attachid>240077</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-20 15:08:36 -0700</bug_when>
    <thetext>Comment on attachment 240077
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:124
&gt;&gt; +    computeElapsedTime: function(timestamp)
&gt; 
&gt; This function sounds more like a duration calculation taking a start and stop time. Maybe computeRelativeTime?

It is! The start time is implicit. It&apos;s either 0.0 or the legacy first timestamp for the timeline recording.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:127
&gt;&gt; +            return;
&gt; 
&gt; Be explicit here:
&gt; return 0; ?
&gt; return undefined; ?

oops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044142</commentid>
    <comment_count>32</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-25 15:05:55 -0700</bug_when>
    <thetext>Committed r175203: &lt;http://trac.webkit.org/changeset/175203&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044155</commentid>
    <comment_count>33</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-10-25 20:00:19 -0700</bug_when>
    <thetext>This made a number of Inspector tests assert:

https://build.webkit.org/results/Apple%20Mavericks%20Debug%20WK2%20(Tests)/r175204%20(7622)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044161</commentid>
    <comment_count>34</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-25 20:46:56 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044162</commentid>
    <comment_count>35</comment_count>
      <attachid>240460</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-25 20:47:00 -0700</bug_when>
    <thetext>Created attachment 240460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044164</commentid>
    <comment_count>36</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-25 20:55:05 -0700</bug_when>
    <thetext>Committed r175206: &lt;http://trac.webkit.org/changeset/175206&gt;

Somehow I missed the (unusual for the UI) situation uncovered by inspector-protocol/debugger, where we never start the environment stopwatch then hit a breakpoint. The debugger should check first before calling stop() to respect its precondition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044252</commentid>
    <comment_count>37</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-10-27 09:56:36 -0700</bug_when>
    <thetext>*** Bug 136797 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054518</commentid>
    <comment_count>38</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-12-11 09:24:30 -0800</bug_when>
    <thetext>*** Bug 135612 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238617</attachid>
            <date>2014-09-24 16:07:20 -0700</date>
            <delta_ts>2014-09-27 14:43:07 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-136351-20140924160714.patch</filename>
            <type>text/plain</type>
            <size>45977</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MmM1ZjI3MGMyNDE4MzBmNmM5ODc3MWQxMjM2MTFmYmQzOGE4ZjU3Li5iYmQzOGMwMGY0OTE2ZWEx
OGRlNzRkNWJhYzgyOGRjZDZhYTcxZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxNC0wOS0xNSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291
bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTUHJvZmlsZXJQcml2
YXRlLmNwcDoKKyAgICAgICAgKEpTU3RhcnRQcm9maWxpbmcpOgorICAgICAgICAqIHByb2ZpbGVy
L0xlZ2FjeVByb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OnByb2Zp
bGVyKToKKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OnN0YXJ0UHJvZmlsaW5nKToKKyAg
ICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OnN0b3BQcm9maWxpbmcpOgorICAgICAgICAqIHBy
b2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6OlByb2ZpbGVHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpQcm9maWxlR2VuZXJhdG9yOjpiZWdpbkNhbGxFbnRyeSk6CisgICAgICAgIChKU0M6OlBy
b2ZpbGVHZW5lcmF0b3I6OmVuZENhbGxFbnRyeSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5l
cmF0b3I6OmRpZFBhdXNlKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZUdlbmVyYXRvcjo6d2lsbEV4
ZWN1dGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQcm9maWxlR2VuZXJhdG9yOjpyZW1vdmVQ
cm9maWxlRW5kKTogRGVsZXRlZC4KKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlR2VuZXJhdG9y
Lmg6CisKIDIwMTQtMDktMTQgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEluamVjdGVkU2NyaXB0cyBzaG91bGQgbm90IGJl
IHByb2ZpbGVkIG9yIGRpc3BsYXllZCBpbiBUaW1lbGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3M2NiN2ZiMDdlMzNlNzFi
NDA0MjIyMDgxYzBhYmZjYmM2MWM0ZGQ2Li45MDVhMGQxZWM4N2Y4N2FhODRlOTZiN2NkNGFkMjNk
NGJjZTJmMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE0LTA5LTE1ICBCcmlhbiBKLiBCdXJn
ICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aW1l
bGluZXMgc2hvdWxkIG5vdCBjb3VudCB0aW1lIGVsYXBzZWQgd2hpbGUgcGF1c2VkIGluIHRoZSBk
ZWJ1Z2dlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM2MzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNC0wOS0yMCAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgcG9zc2libGUgSGFzaFNldDxzdGQ6
OnVuaXF1ZV9wdHI8Pj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NGIxMmZmMWE3NGU5ZjVhYWYxM2YzYmZlODUx
OWRhZTUwMmRjZDM0Li5iZmZjOTAyZDU0YzE4ZWQwOTg5MTc5ZmRkMGU0YjI2MTNlMzgxZjAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTQtMDktMTUgIEJyaWFuIEouIEJ1cmcgIDxi
dXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRpbWVsaW5l
cyBzaG91bGQgbm90IGNvdW50IHRpbWUgZWxhcHNlZCB3aGlsZSBwYXVzZWQgaW4gdGhlIGRlYnVn
Z2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYz
NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnRpbWVzdGFtcCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRvbUNvbnRlbnRFdmVudEZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bG9hZEV2ZW50RmlyZWQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50Ojp0aW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxs
U2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENsb3NlV2ViU29j
a2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2Vp
dmVXZWJTb2NrZXRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRTZW5kV2ViU29ja2V0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdG9wKToKKyAgICAgICAg
KFdlYkNvcmU6OnN0YXJ0UHJvZmlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6d2lsbENhbGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkUGF1c2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29udGludWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpwYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRpbWVzdGFtcCk6CisgICAgICAgIChXZWJD
b3JlOjpUaW1lbGluZVRpbWVDb252ZXJ0ZXI6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGlt
ZWxpbmVUaW1lQ29udmVydGVyOjpUaW1lbGluZVRpbWVDb252ZXJ0ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VGltZWxpbmVUaW1lQ29udmVydGVyOjpmcm9tTW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OnRpbWVDb252ZXJ0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9U
aW1lbGluZVJlY29yZEZhY3RvcnkuY3BwOgorCiAyMDE0LTA5LTE0ICBCcmlhbiBKLiBCdXJnICA8
YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbmplY3Rl
ZFNjcmlwdHMgc2hvdWxkIG5vdCBiZSBwcm9maWxlZCBvciBkaXNwbGF5ZWQgaW4gVGltZWxpbmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDIwMGM5MmU0YjFkZjVkMTBlNjE1ZGJlYmNmNjZm
ZDdkMDJkNmU0NzYuLjBkMzg5ZTY5NmE0MTg5NDZjZmQwNjUzNGVmOWY3ZjAyYmJhNGE5MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA5LTE1ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiB0aW1lbGluZXMgc2hvdWxkIG5vdCBjb3VudCB0aW1lIGVsYXBzZWQgd2hpbGUgcGF1c2Vk
IGluIHRoZSBkZWJ1Z2dlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM2MzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmV2ZW50UmVj
b3JkZWQucHJvY2Vzc1JlY29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5h
Z2VyLnByb3RvdHlwZS5ldmVudFJlY29yZGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1RpbWVsaW5lQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxp
bmVDb250ZW50Vmlldy5wcm90b3R5cGUuX2RlYnVnZ2VyUGF1c2VkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fZGVidWdnZXJSZXN1bWVkKToK
KwogMjAxNC0wOC0xMSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIGVqZWN0IGN1cnJlbnQgcmVjb3JkaW5nIGJ1dHRv
biB0byB0aGUgcmVwbGF5IGRhc2hib2FyZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1Byb2ZpbGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTUHJvZmlsZXJQcml2YXRlLmNwcAppbmRleCAyYTVlYzJjODIzOTAxZWQ5ZTFiYmQ4MjRjZmE5
YzYzZjhhODIzNjg2Li4zNWJhODNiYjYwODgxYmFmNjRlZTdmNTBlYzQ4YjFiNWQ1ZDE2MTJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNwcApA
QCAtMzQsNyArMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiB2b2lkIEpTU3RhcnRQcm9m
aWxpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgdGl0bGUpCiB7Ci0gICAgTGVnYWN5
UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0YXJ0UHJvZmlsaW5nKHRvSlMoY3R4KSwgdGl0bGUtPnN0
cmluZygpKTsKKyAgICBMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmco
dG9KUyhjdHgpLCB0aXRsZS0+c3RyaW5nKCksIFN0b3B3YXRjaDo6Y3JlYXRlKCkpOwogfQogCiB2
b2lkIEpTRW5kUHJvZmlsaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHRpdGxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5jcHAK
aW5kZXggNGZlMmJhNmIxY2U0MmI2OTJhNmM0ODU3MDM2ODZmYTllNGY3ZjdmZi4uZDlmNTBjZTgz
YzU3YTk3ZjVkNGE2OGQwNmFkMmI3YTBhODM0NTA1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwCkBAIC01MCwxNiArNTAsMTYgQEAg
c3RhdGljIHVuc2lnbmVkIFByb2ZpbGVzVUlEID0gMDsKIAogc3RhdGljIENhbGxJZGVudGlmaWVy
IGNyZWF0ZUNhbGxJZGVudGlmaWVyRnJvbUZ1bmN0aW9uSW1wKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgY29uc3QgU3RyaW5nJiBkZWZhdWx0U291cmNlVVJMLCB1bnNpZ25lZCBkZWZhdWx0TGluZU51
bWJlciwgdW5zaWduZWQgZGVmYXVsdENvbHVtbk51bWJlcik7CiAKLUxlZ2FjeVByb2ZpbGVyKiBM
ZWdhY3lQcm9maWxlcjo6c19zaGFyZWRMZWdhY3lQcm9maWxlciA9IDA7CitMZWdhY3lQcm9maWxl
ciogTGVnYWN5UHJvZmlsZXI6OnNfc2hhcmVkTGVnYWN5UHJvZmlsZXIgPSBudWxscHRyOwogCiBM
ZWdhY3lQcm9maWxlciogTGVnYWN5UHJvZmlsZXI6OnByb2ZpbGVyKCkKIHsKICAgICBpZiAoIXNf
c2hhcmVkTGVnYWN5UHJvZmlsZXIpCiAgICAgICAgIHNfc2hhcmVkTGVnYWN5UHJvZmlsZXIgPSBu
ZXcgTGVnYWN5UHJvZmlsZXIoKTsKICAgICByZXR1cm4gc19zaGFyZWRMZWdhY3lQcm9maWxlcjsK
LX0gICAKK30KIAotdm9pZCBMZWdhY3lQcm9maWxlcjo6c3RhcnRQcm9maWxpbmcoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBMZWdhY3lQcm9maWxlcjo6c3RhcnRQ
cm9maWxpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRy
PFN0b3B3YXRjaD4gc3RvcHdhdGNoKQogewogICAgIGlmICghZXhlYykKICAgICAgICAgcmV0dXJu
OwpAQCAtNzUsMTQgKzc1LDE0IEBAIHZvaWQgTGVnYWN5UHJvZmlsZXI6OnN0YXJ0UHJvZmlsaW5n
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICB9CiAKICAgICBleGVj
LT52bSgpLnNldEVuYWJsZWRQcm9maWxlcih0aGlzKTsKLSAgICBSZWZQdHI8UHJvZmlsZUdlbmVy
YXRvcj4gcHJvZmlsZUdlbmVyYXRvciA9IFByb2ZpbGVHZW5lcmF0b3I6OmNyZWF0ZShleGVjLCB0
aXRsZSwgKytQcm9maWxlc1VJRCk7CisgICAgUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IHByb2Zp
bGVHZW5lcmF0b3IgPSBQcm9maWxlR2VuZXJhdG9yOjpjcmVhdGUoZXhlYywgdGl0bGUsICsrUHJv
ZmlsZXNVSUQsIHN0b3B3YXRjaCk7CiAgICAgbV9jdXJyZW50UHJvZmlsZXMuYXBwZW5kKHByb2Zp
bGVHZW5lcmF0b3IpOwogfQogCiBQYXNzUmVmUHRyPFByb2ZpbGU+IExlZ2FjeVByb2ZpbGVyOjpz
dG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAg
ICBpZiAoIWV4ZWMpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIEpTR2xvYmFsT2JqZWN0KiBvcmlnaW4gPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CiAgICAgZm9yIChwdHJkaWZmX3QgaSA9IG1fY3VycmVudFByb2ZpbGVzLnNpemUoKSAtIDE7
IGkgPj0gMDsgLS1pKSB7CkBAIC05NCwxMiArOTQsMTIgQEAgUGFzc1JlZlB0cjxQcm9maWxlPiBM
ZWdhY3lQcm9maWxlcjo6c3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYKICAgICAgICAgICAgIG1fY3VycmVudFByb2ZpbGVzLnJlbW92ZShpKTsKICAgICAgICAgICAg
IGlmICghbV9jdXJyZW50UHJvZmlsZXMuc2l6ZSgpKQogICAgICAgICAgICAgICAgIGV4ZWMtPnZt
KCkuc2V0RW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpOwotICAgICAgICAgICAgCisKICAgICAgICAg
ICAgIHJldHVybiByZXR1cm5Qcm9maWxlOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgTGVnYWN5UHJvZmlsZXI6OnN0b3BQ
cm9maWxpbmcoSlNHbG9iYWxPYmplY3QqIG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmgKaW5kZXggMWQ2Y2IyNmY4M2ZmMDJmOGNhZDMy
NzBkMTRlMDE0MzY2MGFiNzZhZi4uMzJlODhkNzcxOTZiMjgxMmM4OTY4ZDhlYWE2ZDc3OGRjYmFj
YzdhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVBy
b2ZpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2Zp
bGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJQcm9maWxlLmgiCiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC00OCwxMCArNDksMTAgQEAgc3RydWN0IENhbGxJZGVudGlmaWVyOwogY2xhc3MgTGVnYWN5
UHJvZmlsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMZWdhY3lQcm9maWxlciogcHJvZmlsZXIoKTsgCisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlcigpOwogICAg
IHN0YXRpYyBDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxsSWRlbnRpZmllcihFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBkZWZhdWx0TGlu
ZU51bWJlciwgdW5zaWduZWQgZGVmYXVsdENvbHVtbk51bWJlcik7CiAKLSAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHN0YXJ0UHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5n
JiB0aXRsZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVj
U3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxQcm9maWxlPiBzdG9wUHJvZmlsaW5n
KEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSk7CiAgICAgdm9pZCBzdG9wUHJv
ZmlsaW5nKEpTR2xvYmFsT2JqZWN0Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNwcAppbmRleCAzMmU4OTI2MGVlZmM3OGYyYThl
Yjk5NmFlOWE3N2Y4OTZlZDk0Mzc4Li5jMDVjNzA3ZjU4N2Q0ZWI4OWQwNWE5ZWI5YzU5MTM2MGFh
YTRmOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVHZW5lcmF0b3IuY3BwCkBAIC00MCwyMCArNDAsMjEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LVBhc3NSZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4gUHJvZmlsZUdlbmVyYXRvcjo6Y3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKQorUGFzc1Jl
ZlB0cjxQcm9maWxlR2VuZXJhdG9yPiBQcm9maWxlR2VuZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQsIFBhc3NSZWZQdHI8U3Rv
cHdhdGNoPiBzdG9wd2F0Y2gpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcm9maWxlR2Vu
ZXJhdG9yKGV4ZWMsIHRpdGxlLCB1aWQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2Zp
bGVHZW5lcmF0b3IoZXhlYywgdGl0bGUsIHVpZCwgc3RvcHdhdGNoKSk7CiB9CiAKLVByb2ZpbGVH
ZW5lcmF0b3I6OlByb2ZpbGVHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCB1bnNpZ25lZCB1aWQpCitQcm9maWxlR2VuZXJhdG9yOjpQcm9maWxlR2VuZXJhdG9y
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkLCBQYXNz
UmVmUHRyPFN0b3B3YXRjaD4gc3RvcHdhdGNoKQogICAgIDogbV9vcmlnaW4oZXhlYyA/IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSA6IG51bGxwdHIpCiAgICAgLCBtX3Byb2ZpbGVHcm91cChl
eGVjID8gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9maWxlR3JvdXAoKSA6IDApCisg
ICAgLCBtX3N0b3B3YXRjaChzdG9wd2F0Y2gpCiAgICAgLCBtX2RlYnVnZ2VyUGF1c2VkVGltZXN0
YW1wKE5BTikKICAgICAsIG1fZm91bmRDb25zb2xlU3RhcnRQYXJlbnQoZmFsc2UpCiAgICAgLCBt
X3N1c3BlbmRlZChmYWxzZSkKIHsKICAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKQotICAgICAgICBtX2RlYnVnZ2VyUGF1
c2VkVGltZXN0YW1wID0gZGVidWdnZXItPmlzUGF1c2VkKCkgPyBjdXJyZW50VGltZSgpIDogTkFO
OworICAgICAgICBtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wID0gZGVidWdnZXItPmlzUGF1c2Vk
KCkgPyBtX3N0b3B3YXRjaC0+ZWxhcHNlZFRpbWUoKSA6IE5BTjsKIAogICAgIG1fcHJvZmlsZSA9
IFByb2ZpbGU6OmNyZWF0ZSh0aXRsZSwgdWlkKTsKICAgICBtX2N1cnJlbnROb2RlID0gbV9yb290
Tm9kZSA9IG1fcHJvZmlsZS0+cm9vdE5vZGUoKTsKQEAgLTExOCw3ICsxMTksNyBAQCB2b2lkIFBy
b2ZpbGVHZW5lcmF0b3I6OmJlZ2luQ2FsbEVudHJ5KFByb2ZpbGVOb2RlKiBub2RlLCBkb3VibGUg
c3RhcnRUaW1lKQogICAgIEFTU0VSVF9BUkcobm9kZSwgbm9kZSk7CiAKICAgICBpZiAoaXNuYW4o
c3RhcnRUaW1lKSkKLSAgICAgICAgc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAg
c3RhcnRUaW1lID0gbV9zdG9wd2F0Y2gtPmVsYXBzZWRUaW1lKCk7CiAKICAgICAvLyBJZiB0aGUg
ZGVidWdnZXIgaXMgcGF1c2VkIHdoZW4gYmVnaW5uaW5nLCB0aGVuIGRvbid0IHNldCB0aGUgc3Rh
cnQgdGltZS4gSXQKICAgICAvLyB3aWxsIGJlIGZpeGVkIHVwIHdoZW4gdGhlIGRlYnVnZ2VyIHVu
cGF1c2VzIG9yIHRoZSBjYWxsIGVudHJ5IGVuZHMuCkBAIC0xNDgsNyArMTQ5LDcgQEAgdm9pZCBQ
cm9maWxlR2VuZXJhdG9yOjplbmRDYWxsRW50cnkoUHJvZmlsZU5vZGUqIG5vZGUpCiAKICAgICAv
LyBPdGhlcndpc2UsIGFkZCB0aGUgaW50ZXJ2YWwgZW5kaW5nIG5vdyB0byBlbGFwc2VkIHRpbWUu
CiAgICAgZG91YmxlIHByZXZpb3VzRWxhcHNlZFRpbWUgPSBpc25hbihsYXN0LmVsYXBzZWRUaW1l
KCkpID8gMC4wIDogbGFzdC5lbGFwc2VkVGltZSgpOwotICAgIGRvdWJsZSBuZXdseUVsYXBzZWRU
aW1lID0gY3VycmVudFRpbWUoKSAtIGxhc3Quc3RhcnRUaW1lKCk7CisgICAgZG91YmxlIG5ld2x5
RWxhcHNlZFRpbWUgPSBtX3N0b3B3YXRjaC0+ZWxhcHNlZFRpbWUoKSAtIGxhc3Quc3RhcnRUaW1l
KCk7CiAgICAgbGFzdC5zZXRFbGFwc2VkVGltZShwcmV2aW91c0VsYXBzZWRUaW1lICsgbmV3bHlF
bGFwc2VkVGltZSk7CiB9CiAKQEAgLTIyNyw3ICsyMjgsNyBAQCB2b2lkIFByb2ZpbGVHZW5lcmF0
b3I6OmRpZFBhdXNlKFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+LCBjb25zdCBDYWxsSWRl
bnRpZgogewogICAgIEFTU0VSVChpc25hbihtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wKSk7CiAK
LSAgICBtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKKyAgICBtX2Rl
YnVnZ2VyUGF1c2VkVGltZXN0YW1wID0gbV9zdG9wd2F0Y2gtPmVsYXBzZWRUaW1lKCk7CiAKICAg
ICBmb3IgKFByb2ZpbGVOb2RlKiBub2RlID0gbV9jdXJyZW50Tm9kZS5nZXQoKTsgbm9kZSAhPSBt
X3Byb2ZpbGUtPnJvb3ROb2RlKCk7IG5vZGUgPSBub2RlLT5wYXJlbnQoKSkgewogICAgICAgICBQ
cm9maWxlTm9kZTo6Q2FsbCYgbGFzdCA9IG5vZGUtPmxhc3RDYWxsKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuaAppbmRleCA5ZjUxYTNk
Yzg2Y2QzM2Y0MWE0ZTRiZWFmZTlmNTBjM2NjYzk0MWYyLi41NmNlMjRhNjBkOTJiYWFmY2RjMzYz
OGFmNzU0ZGY2ODA3MzViNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlR2VuZXJhdG9yLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Miw3ICs0Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJvZmlsZUdlbmVyYXRvciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFByb2ZpbGVHZW5lcmF0b3I+ICB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxQcm9maWxlR2VuZXJhdG9yPiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpT
dHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
cm9maWxlR2VuZXJhdG9yPiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIHRp
dGxlLCB1bnNpZ25lZCB1aWQsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPik7CiAKICAgICAgICAgLy8g
TWVtYmVycwogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUoKSBjb25zdDsKQEAgLTYy
LDcgKzYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc3RvcFByb2ZpbGluZygp
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUHJvZmlsZUdlbmVyYXRvcihFeGVjU3RhdGUqLCBj
b25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7CisgICAgICAgIFByb2ZpbGVH
ZW5lcmF0b3IoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1
aWQsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPik7CiAgICAgICAgIHZvaWQgYWRkUGFyZW50Rm9yQ29u
c29sZVN0YXJ0KEV4ZWNTdGF0ZSopOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlUHJvZmlsZVN0YXJ0
KCk7CkBAIC03NCw3ICs3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8UHJv
ZmlsZT4gbV9wcm9maWxlOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogbV9vcmlnaW47CiAgICAg
ICAgIHVuc2lnbmVkIG1fcHJvZmlsZUdyb3VwOwotICAgICAgICAvLyBUaW1lc3RhbXAgaXMgc2V0
IHRvIE5BTiB3aGVuIHRoZSBkZWJ1Z2dlciBpcyBub3QgY3VycmVudGx5IHBhdXNlZC4KKyAgICAg
ICAgUmVmUHRyPFN0b3B3YXRjaD4gbV9zdG9wd2F0Y2g7CiAgICAgICAgIGRvdWJsZSBtX2RlYnVn
Z2VyUGF1c2VkVGltZXN0YW1wOwogICAgICAgICBSZWZQdHI8UHJvZmlsZU5vZGU+IG1fcm9vdE5v
ZGU7CiAgICAgICAgIFJlZlB0cjxQcm9maWxlTm9kZT4gbV9jdXJyZW50Tm9kZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM1YjdkY2M0Y2I0ODcyMDQ3NDc4
ODNmZjAwYjlkYTUzMTFmNmVmMDIuLjc4NGVmMmE0ODQ4ZTBkZDBjYzA0MDg0M2VlMGQ5NWQzZjg5
ZDMwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjcy
LDYgKzI3Miw3IEBACiAJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM3
QjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovOyB9OwogCQlBOEE0NzQ4QzE1
MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmggKi87
IH07CiAJCUIzOEZEN0JEMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVmaW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjM4RkQ3QkMxNjg5NTNF
ODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggKi87IH07CisJCUM0RjhBOTM3MTlDNjVFQjQw
MEIyQjE1RCAvKiBTdG9wd2F0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM0RjhBOTM2MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0Y2guaCAqLzsg
fTsKIAkJQ0Q1NDk3QUMxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQTE1ODU3RDAzMDBC
NUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLzsgfTsKIAkJQ0Q1NDk3QUQxNTg1N0QwMzAwQjVCQzMw
IC8qIE1lZGlhVGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovOyB9OwogCQlF
MTU1NTZGNTE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1NTZGMzE4QTBD
QzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi87IH07CkBAIC01NjIs
NiArNTYzLDcgQEAKIAkJQThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV1RGVGhyZWFkRGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYgLyogY29u
ZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVy
ZURlZmluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmVhdHVyZURlZmlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRGOEE5MzYxOUM2NUVCNDAwQjJC
MTVEIC8qIFN0b3B3YXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9w
d2F0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NDk3QUExNTg1N0QwMzAw
QjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZWRpYVRpbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0OTdB
QjE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhVGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1
NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1Miw2ICs4NTQsNyBAQAogCQkJCUZF
REFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8sCiAJCQkJQThBNDczMTAx
NTFBODI1QjAwNDEyM0ZGIC8qIFN0YXRpY0NvbnN0cnVjdG9ycy5oICovLAogCQkJCUE4QTQ3MzEx
MTUxQTgyNUIwMDQxMjNGRiAvKiBTdGRMaWJFeHRyYXMuaCAqLywKKwkJCQlDNEY4QTkzNjE5QzY1
RUI0MDBCMkIxNUQgLyogU3RvcHdhdGNoLmggKi8sCiAJCQkJMUE2QkI3NjgxNjJGMzAwNTAwREQx
NkRCIC8qIFN0cmVhbUJ1ZmZlci5oICovLAogCQkJCUE4QTQ3MzEzMTUxQTgyNUIwMDQxMjNGRiAv
KiBTdHJpbmdFeHRyYXMuaCAqLywKIAkJCQlBNzQ4NzQ1MTE3QTBCREFFMDBGQTA0Q0IgLyogU3Ry
aW5nSGFzaER1bXBDb250ZXh0LmggKi8sCkBAIC0xMDQ1LDYgKzEwNDgsNyBAQAogCQkJCUE4QTQ3
M0EzMTUxQTgyNUIwMDQxMjNGRiAvKiBEZWNpbWFsTnVtYmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjZBNjE3QjZCNEZCMDBBN0FFM0YgLyogRGVmZXJyYWJsZVJlZkNvdW50ZWQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QTQ3M0E1MTUxQTgyNUIwMDQxMjNGRiAvKiBEZXF1ZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQzRGOEE5MzcxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQTYxNTFBODI1QjAwNDEyM0ZGIC8qIERpc2FsbG93Q1R5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0FGMTUxQTgyNUIwMDQxMjNGRiAvKiBkaXkt
ZnAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0IxMTUxQTgyNUIwMDQxMjNGRiAvKiBkb3Vi
bGUtY29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9TdG9wd2F0Y2guaCBiL1NvdXJjZS9XVEYvd3RmL1N0b3B3YXRjaC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhm
MjgwYmM3MzI5YjUxMjg3YWM3Nzc1OTYyMDgxNTIzYWE2NzUzOGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9TdG9wd2F0Y2guaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFN0b3B3YXRjaF9oCisjZGVmaW5lIFN0b3B3YXRjaF9oCisKKyNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaW5jbHVk
ZSA8Y21hdGg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUg
U3RvcHdhdGNoIDogcHVibGljIFJlZkNvdW50ZWQ8U3RvcHdhdGNoPiB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RvcHdhdGNo
PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9wd2F0Y2go
KSk7CisgICAgfQorCisgICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2
b2lkIHN0b3AoKTsKKworICAgIGRvdWJsZSBlbGFwc2VkVGltZSgpIHsKKyAgICAgICAgYm9vbCBz
aG91bGRTdXNwZW5kID0gIWlzbmFuKG1fbGFzdFN0YXJ0VGltZSk7CisgICAgICAgIGlmIChzaG91
bGRTdXNwZW5kKQorICAgICAgICAgICAgc3RvcCgpOworCisgICAgICAgIEFTU0VSVCghaXNuYW4o
bV9lbGFwc2VkVGltZSkgJiYgaXNuYW4obV9sYXN0U3RhcnRUaW1lKSk7CisgICAgICAgIGRvdWJs
ZSBlbGFwc2VkVGltZSA9IG1fZWxhcHNlZFRpbWU7CisKKyAgICAgICAgaWYgKHNob3VsZFN1c3Bl
bmQpCisgICAgICAgICAgICBzdGFydCgpOworICAgICAgICByZXR1cm4gZWxhcHNlZFRpbWU7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFN0b3B3YXRjaCgpCisgICAgICAgIDogbV9lbGFwc2VkVGlt
ZShOQU4pCisgICAgICAgICwgbV9sYXN0U3RhcnRUaW1lKE5BTikKKyAgICB7CisgICAgfQorCisg
ICAgZG91YmxlIG1fZWxhcHNlZFRpbWU7CisgICAgZG91YmxlIG1fbGFzdFN0YXJ0VGltZTsKK307
CisKK2lubGluZSB2b2lkIFN0b3B3YXRjaDo6cmVzZXQoKQoreworICAgIG1fZWxhcHNlZFRpbWUg
PSAwLjA7CisgICAgbV9sYXN0U3RhcnRUaW1lID0gTkFOOworfQorCitpbmxpbmUgdm9pZCBTdG9w
d2F0Y2g6OnN0YXJ0KCkKK3sKKyAgICBBU1NFUlQoIWlzbmFuKG1fZWxhcHNlZFRpbWUpICYmIGlz
bmFuKG1fbGFzdFN0YXJ0VGltZSkpOworCisgICAgbV9sYXN0U3RhcnRUaW1lID0gbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCk7Cit9CisKK2lubGluZSB2b2lkIFN0b3B3YXRjaDo6c3RvcCgp
Cit7CisgICAgQVNTRVJUKCFpc25hbihtX2VsYXBzZWRUaW1lKSAmJiAhaXNuYW4obV9sYXN0U3Rh
cnRUaW1lKSk7CisKKyAgICBtX2VsYXBzZWRUaW1lICs9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpIC0gbV9sYXN0U3RhcnRUaW1lOworICAgIG1fbGFzdFN0YXJ0VGltZSA9IE5BTjsKK30K
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6U3RvcHdhdGNoOworCisjZW5kaWYg
Ly8gU3RvcHdhdGNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCmluZGV4IGY1Y2FkYmZiMTdhZWRhYWQ4ZGNjMDAzMTI4NDkwMGNkZGExZTU4OWMu
LmQ4NWIyZWM5NTcwYjc4ZjAxOGZiZTkwMTllMGNkYWIyYzg3MzIwODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNTcsNyArNTcsNiBA
QAogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0TmFtZWRGbG93
LmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgotI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggZWI4YTQ5MjJiYTkyZTdiZjM1YjA2
MGM1YWRlMGY1MzQ3OGE4M2E2NS4uZTA5Nzg1YmExMjMwNzRlZWRhODE2NmU2YTRjOThmMDgxMjRk
OTkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ck92ZXJsYXkuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3RydW1l
bnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKQEAgLTczLDcgKzc0LDYgQEAK
ICNpbmNsdWRlIDxpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oPgogI2luY2x1ZGUg
PGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8
d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtMzYxLDYgKzM2MSwxNiBAQCB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbgogI2VuZGlmCiB9CiAKK2RvdWJsZSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnRpbWVzdGFtcCgp
Cit7CisgICAgLy8gSWYgdGhlIHRpbWVsaW5lIGFnZW50IGlzIHJlY29yZGluZyBub3csIHVzZSBp
dHMgc3RvcHdhdGNoLiBPdGhlcndpc2UsIGp1c3QgcmVwb3J0IDAuMAorICAgIC8vIHNpbmNlIHRo
ZSB0aW1lc3RhbXBzIGFyZSBvbmx5IHVzZWQgdG8gYWNjdXJhdGVseSBncmFwaCByZWNvcmRzIG9u
IHRoZSB0aW1lbGluZS4KKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQor
ICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+dGltZXN0YW1wKCk7CisKKyAgICByZXR1cm4g
MC4wOworfQorCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikK
IHsKICAgICBtX2VuYWJsZWQgPSB0cnVlOwpAQCAtNzUxLDEyICs3NjEsMTIgQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUs
IERPTVdyYXBwZXJXb3IKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpkb21Db250ZW50RXZlbnRG
aXJlZCgpCiB7CiAgICAgbV9pc0ZpcnN0TGF5b3V0QWZ0ZXJPbkxvYWQgPSB0cnVlOwotICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT5kb21Db250ZW50RXZlbnRGaXJlZChjdXJyZW50VGltZSgpKTsK
KyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZG9tQ29udGVudEV2ZW50RmlyZWQodGltZXN0YW1w
KCkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bG9hZEV2ZW50RmlyZWQoKQogewot
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sb2FkRXZlbnRGaXJlZChjdXJyZW50VGltZSgpKTsK
KyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9hZEV2ZW50RmlyZWQodGltZXN0YW1wKCkpOwog
fQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuaAppbmRleCAyNWZlMWQ1YTYwM2FlMTMyMDdlMTRiMzQzMDgxZTY3ZDdiZTJlYWU3Li41ZGEw
MTVjN2ZmMTU4MzYyZjY0YWJiNTUxY2Q3YWFkZDgzY2FhZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC0xNjcsNiArMTY3LDggQEAgcHJp
dmF0ZToKICAgICB2b2lkIHVwZGF0ZVRvdWNoRXZlbnRFbXVsYXRpb25JblBhZ2UoYm9vbCk7CiAj
ZW5kaWYKIAorICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKKwogICAgIHN0YXRpYyBib29sIG1haW5S
ZXNvdXJjZUNvbnRlbnQoRnJhbWUqLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVz
dWx0KTsKICAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2
NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggNTcxZDM1NjI0MjZjZTY1NDZm
ZWVhODdjMWYxNWQzZGJjZWY0ZDQxMC4uYTQ3NDQyODNkN2E5NDcxZjU5NDhiYTcxNWFhNDIwMDk2
YTk2M2NmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkljb25Db250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
UGFnZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnN0cnVt
ZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCkBAIC02
OSw3ICs3MCw2IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAKQEAgLTI3Niw2ICsyNzYsMTYgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fkluc3Bl
Y3RvclJlc291cmNlQWdlbnQoKQogICAgIEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpOwogfQogCitkb3VibGUgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6dGltZXN0YW1wKCkKK3sKKyAgICAvLyBJZiB0aGUgdGltZWxpbmUgYWdlbnQgaXMgcmVj
b3JkaW5nIG5vdywgdXNlIGl0cyBzdG9wd2F0Y2guIE90aGVyd2lzZSwganVzdCByZXBvcnQgMC4w
CisgICAgLy8gc2luY2UgdGhlIHRpbWVzdGFtcHMgYXJlIG9ubHkgdXNlZCB0byBhY2N1cmF0ZWx5
IGdyYXBoIHJlY29yZHMgb24gdGhlIHRpbWVsaW5lLgorICAgIGlmIChJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkpCisgICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT50aW1lc3RhbXAo
KTsKKworICAgIHJldHVybiAwLjA7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGlmIChyZXF1ZXN0LmhpZGRlbkZyb21JbnNwZWN0
b3IoKSkgewpAQCAtMzIwLDcgKzMzMCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMCiAgICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSA9IElu
c3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSnNvbih0eXBlKTsKIAogICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9
IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+
ZG9jdW1lbnQoKSA6IG51bGxwdHIpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0
V2lsbEJlU2VudChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUo
KSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBsb2FkZXItPnVybCgpLnN0cmluZygp
LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgY3VycmVudFRpbWUoKSwg
aW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVkaXJlY3RS
ZXNwb25zZSwgbG9hZGVyKSwgdHlwZSAhPSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3Vy
Y2UgPyAmcmVzb3VyY2VUeXBlIDogbnVsbHB0cik7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PnJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVy
LT5mcmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciksIGxvYWRlci0+dXJsKCku
c3RyaW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCB0aW1lc3Rh
bXAoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVk
aXJlY3RSZXNwb25zZSwgbG9hZGVyKSwgdHlwZSAhPSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVy
UmVzb3VyY2UgPyAmcmVzb3VyY2VUeXBlIDogbnVsbHB0cik7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6bWFya1Jlc291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKQpAQCAtMzY1LDcgKzM3NSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lCiAgICAgbV9y
ZXNvdXJjZXNEYXRhLT5yZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZy
YW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgcmVzcG9uc2UpOwogICAgIG1fcmVzb3VyY2VzRGF0YS0+
c2V0UmVzb3VyY2VUeXBlKHJlcXVlc3RJZCwgdHlwZSk7CiAKLSAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+cmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxv
YWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBjdXJyZW50VGlt
ZSgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24odHlwZSksIHJlc291cmNl
UmVzcG9uc2UpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNwb25zZVJlY2VpdmVkKHJl
cXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgbV9wYWdlQWdl
bnQtPmxvYWRlcklkKGxvYWRlciksIHRpbWVzdGFtcCgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJl
c291cmNlVHlwZUpzb24odHlwZSksIHJlc291cmNlUmVzcG9uc2UpOwogCiAgICAgLy8gSWYgd2Ug
cmV2YWxpZGF0ZWQgdGhlIHJlc291cmNlIGFuZCBnb3QgTm90IG1vZGlmaWVkLCBzZW5kIGNvbnRl
bnQgbGVuZ3RoIGZvbGxvd2luZyBkaWRSZWNlaXZlUmVzcG9uc2UKICAgICAvLyBhcyB0aGVyZSB3
aWxsIGJlIG5vIGNhbGxzIHRvIGRpZFJlY2VpdmVEYXRhIGZyb20gdGhlIG5ldHdvcmsgc3RhY2su
CkBAIC0zOTEsNyArNDAxLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNl
aXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIKICAgICAgICAgICAg
IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBkYXRhLCBk
YXRhTGVuZ3RoKTsKICAgICB9CiAKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGF0YVJlY2Vp
dmVkKHJlcXVlc3RJZCwgY3VycmVudFRpbWUoKSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kYXRhUmVjZWl2ZWQocmVxdWVzdElkLCB0
aW1lc3RhbXAoKSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBkb3VibGUgZmluaXNoVGltZSkKQEAgLTQx
MSw3ICs0MjEsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRp
bmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudAogICAgIC8vIEhvd2V2ZXIsIGFs
bCBvdGhlciB0aW1lcyBwYXNzZWQgdG8gdGhlIEluc3BlY3RvciBhcmUgZ2VuZXJhdGVkIGZyb20g
dGhlIHdlYiBwcm9jZXNzLiBNaXhpbmcKICAgICAvLyB0aW1lcyBmcm9tIGRpZmZlcmVudCBwcm9j
ZXNzZXMgY2FuIGNhdXNlIHRoZSBmaW5pc2ggdGltZSB0byBiZSBlYXJsaWVyIHRoYW4gdGhlIHJl
c3BvbnNlCiAgICAgLy8gcmVjZWl2ZWQgdGltZSBkdWUgdG8gaW50ZXItcHJvY2VzcyBjb21tdW5p
Y2F0aW9uIGxhZy4KLSAgICBmaW5pc2hUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBmaW5pc2hU
aW1lID0gdGltZXN0YW1wKCk7CiAKICAgICBTdHJpbmcgc291cmNlTWFwcGluZ1VSTDsKICAgICBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBt
X3Jlc291cmNlc0RhdGEtPmRhdGEocmVxdWVzdElkKTsKQEAgLTQzNyw3ICs0NDcsNyBAQCB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgRG9jdW1lbnRMbwogICAgIH0KIAogICAgIGJvb2wgY2FuY2VsZWQgPSBlcnJvci5p
c0NhbmNlbGxhdGlvbigpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sb2FkaW5nRmFpbGVk
KHJlcXVlc3RJZCwgY3VycmVudFRpbWUoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSwg
Y2FuY2VsZWQgPyAmY2FuY2VsZWQgOiBudWxscHRyKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+bG9hZGluZ0ZhaWxlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCgpLCBlcnJvci5sb2NhbGl6ZWRE
ZXNjcmlwdGlvbigpLCBjYW5jZWxlZCA/ICZjYW5jZWxlZCA6IG51bGxwdHIpOwogfQogCiB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShE
b2N1bWVudExvYWRlciogbG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCkBAIC00NTYs
NyArNDY2LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VG
cm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWQKIAogICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxk
SW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1l
bnQoKSA6IG51bGxwdHIpOwogCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RTZXJ2
ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51
cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVj
dEZvckNhY2hlZFJlc291cmNlKHJlc291cmNlLCBsb2FkZXIpKTsKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+cmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1lSWQs
IGxvYWRlcklkLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCB0aW1lc3RhbXAoKSwgaW5pdGlhdG9y
T2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKHJlc291cmNlLCBsb2FkZXIpKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRJbml0aWFsU2NyaXB0Q29udGVu
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQpA
QCAtNTg4LDcgKzU5OCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlCiB7CiAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OldlYlNvY2tldFJlcXVlc3Q+IHJlcXVlc3RP
YmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0Ojpj
cmVhdGUoKQogICAgICAgICAuc2V0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMocmVxdWVz
dC5odHRwSGVhZGVyRmllbGRzKCkpKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29j
a2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElk
KGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCByZXF1ZXN0T2JqZWN0KTsKKyAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KElkZW50aWZp
ZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgcmVxdWVzdE9i
amVjdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC01OTcsMTIgKzYwNywxMiBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSh1
bnNpZ25lZCBsb25nCiAgICAgICAgIC5zZXRTdGF0dXMocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSkKICAgICAgICAgLnNldFN0YXR1c1RleHQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSkKICAg
ICAgICAgLnNldEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZHMoKSkpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZVJlY2VpdmVkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZp
ZXIpLCBjdXJyZW50VGltZSgpLCByZXNwb25zZU9iamVjdCk7CisgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPndlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlUmVjZWl2ZWQoSWRlbnRpZmllcnNGYWN0
b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFtcCgpLCByZXNwb25zZU9iamVjdCk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ2xvc2VXZWJTb2NrZXQodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJT
b2NrZXRDbG9zZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIGN1
cnJlbnRUaW1lKCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRDbG9zZWQo
SWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFtcCgpKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJh
bWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUp
CkBAIC02MTEsNyArNjIxLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNl
aXZlV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLAogICAgICAgICAuc2V0
T3Bjb2RlKGZyYW1lLm9wQ29kZSkKICAgICAgICAgLnNldE1hc2soZnJhbWUubWFza2VkKQogICAg
ICAgICAuc2V0UGF5bG9hZERhdGEoU3RyaW5nKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRM
ZW5ndGgpKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0RnJhbWVSZWNlaXZl
ZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUo
KSwgZnJhbWVPYmplY3QpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRGcmFt
ZVJlY2VpdmVkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1l
c3RhbXAoKSwgZnJhbWVPYmplY3QpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZFNlbmRXZWJTb2NrZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdl
YlNvY2tldEZyYW1lJiBmcmFtZSkKQEAgLTYyMCwxMiArNjMwLDEyIEBAIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkU2VuZFdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uCiAgICAgICAgIC5zZXRPcGNvZGUoZnJhbWUub3BDb2RlKQogICAgICAgICAuc2V0
TWFzayhmcmFtZS5tYXNrZWQpCiAgICAgICAgIC5zZXRQYXlsb2FkRGF0YShTdHJpbmcoZnJhbWUu
cGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT53ZWJTb2NrZXRGcmFtZVNlbnQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRp
ZmllciksIGN1cnJlbnRUaW1lKCksIGZyYW1lT2JqZWN0KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+d2ViU29ja2V0RnJhbWVTZW50KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlk
ZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgZnJhbWVPYmplY3QpOwogfQogCiB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPndlYlNvY2tldEZyYW1lRXJyb3IoSWRlbnRpZmllcnNGYWN0b3J5Ojpy
ZXF1ZXN0SWQoaWRlbnRpZmllciksIGN1cnJlbnRUaW1lKCksIGVycm9yTWVzc2FnZSk7CisgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEZyYW1lRXJyb3IoSWRlbnRpZmllcnNGYWN0
b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFtcCgpLCBlcnJvck1lc3NhZ2UpOwog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggOWNhNDgzZGY3ZWNiNWNh
NDZhZjYyMThhZjIwNDc5YTMyZGU5YmQ1Yy4uNjEwY2FhNGE3N2ZlMGMzNGU0MWI3OGEyMTFlNjE4
NDdkN2NiYjU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5oCkBAIC0xMzgsNiArMTM4LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2b2lkIGVuYWJsZSgpOwogCisgICAgZG91YmxlIHRpbWVzdGFtcCgpOworCiAgICAgSW5zcGVj
dG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck5ldHdvcmtGcm9udGVu
ZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDAyODEwMmJjZDc2
MTExYjU5MGIwY2UzNDQ4NmYyMGNiYTE2YTJlNTcuLjMzZWU4ZGIyNTBhY2IwNjdhMmFmZWMxYmVm
NDgwODM5NDMwMGFiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTYxLDExICs2MSw2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBUaW1lbGluZVRpbWVD
b252ZXJ0ZXI6OnJlc2V0KCkKLXsKLSAgICBtX3N0YXJ0T2Zmc2V0ID0gbW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCkgLSBjdXJyZW50VGltZSgpOwotfQotCiBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpCiB7CiB9CkBAIC03Niw2ICs3MSw3IEBAIHZv
aWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rv
clRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cyk7CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFBlcnNpc3RlbnRJbnNwZWN0b3JU
aW1lbGluZUFnZW50KHRoaXMpOworICAgIG1fc3RvcHdhdGNoLT5yZXNldCgpOwogCiAgICAgaWYg
KG1fc2NyaXB0RGVidWdTZXJ2ZXIpCiAgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXItPnJlY29t
cGlsZUFsbEpTRnVuY3Rpb25zKCk7CkBAIC0xMTgsNyArMTE0LDcgQEAgdm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgp
CiAgICAgZWxzZQogICAgICAgICBtX21heENhbGxTdGFja0RlcHRoID0gNTsKIAotICAgIG1fdGlt
ZUNvbnZlcnRlci5yZXNldCgpOworICAgIG1fc3RvcHdhdGNoLT5zdGFydCgpOwogCiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMpOwogCkBA
IC0xMzYsNiArMTMyLDggQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0
b3AoKQogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX3N0b3B3
YXRjaC0+c3RvcCgpOworCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JU
aW1lbGluZUFnZW50KG51bGxwdHIpOwogCiAgICAgaWYgKG1fc2NyaXB0RGVidWdTZXJ2ZXIpCkBA
IC0xNTcsOSArMTU1LDkgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIoUGFnZVNjcmlwdERlYnVnU2VydmVyKiBzY3IKICAgICBtX3NjcmlwdERl
YnVnU2VydmVyID0gc2NyaXB0RGVidWdTZXJ2ZXI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBz
dGFydFByb2ZpbGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkK
K3N0YXRpYyBpbmxpbmUgdm9pZCBzdGFydFByb2ZpbGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzc1JlZlB0cjxTdG9wd2F0Y2g+IHN0b3B3YXRjaCkKIHsK
LSAgICBKU0M6OkxlZ2FjeVByb2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2ZpbGluZyhleGVj
LCB0aXRsZSk7CisgICAgSlNDOjpMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9m
aWxpbmcoZXhlYywgdGl0bGUsIHN0b3B3YXRjaCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxKU0M6OlByb2ZpbGU+IHN0b3BQcm9maWxpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCkBAIC0xNjcsOSArMTY1LDkgQEAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPEpTQzo6UHJvZmlsZT4gc3RvcFByb2ZpbGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QKICAgICByZXR1cm4gSlNDOjpMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RvcFBy
b2ZpbGluZyhleGVjLCB0aXRsZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFydFByb2Zp
bGluZyhGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCitzdGF0aWMgaW5saW5lIHZv
aWQgc3RhcnRQcm9maWxpbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNz
UmVmUHRyPFN0b3B3YXRjaD4gc3RvcHdhdGNoKQogewotICAgIHN0YXJ0UHJvZmlsaW5nKHRvSlNE
T01XaW5kb3coZnJhbWUsIGRlYnVnZ2VyV29ybGQoKSktPmdsb2JhbEV4ZWMoKSwgdGl0bGUpOwor
ICAgIHN0YXJ0UHJvZmlsaW5nKHRvSlNET01XaW5kb3coZnJhbWUsIGRlYnVnZ2VyV29ybGQoKSkt
Pmdsb2JhbEV4ZWMoKSwgdGl0bGUsIHN0b3B3YXRjaCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxKU0M6OlByb2ZpbGU+IHN0b3BQcm9maWxpbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBT
dHJpbmcmIHRpdGxlKQpAQCAtMTkzLDcgKzE5MSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
CiAgICAgaWYgKCFtX2VuYWJsZWQgJiYgbV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzLmlz
RW1wdHkoKSkKICAgICAgICAgaW50ZXJuYWxTdGFydCgpOwogCi0gICAgc3RhcnRQcm9maWxpbmco
ZXhlYywgdGl0bGUpOworICAgIHN0YXJ0UHJvZmlsaW5nKGV4ZWMsIHRpdGxlLCBtX3N0b3B3YXRj
aCk7CiAKICAgICBtX3BlbmRpbmdDb25zb2xlUHJvZmlsZVJlY29yZHMuYXBwZW5kKGNyZWF0ZVJl
Y29yZEVudHJ5KFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlQ29uc29sZVByb2ZpbGVEYXRh
KHRpdGxlKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpDb25zb2xlUHJvZmlsZSwgdHJ1ZSwgZnJhbWVG
cm9tRXhlY1N0YXRlKGV4ZWMpKSk7CiB9CkBAIC0yMzIsNyArMjMwLDcgQEAgdm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50Ojp3aWxsQ2FsbEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0TmFt
ZSwgaW50IHNjcmkKICAgICBwdXNoQ3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6
OmNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEoc2NyaXB0TmFtZSwgc2NyaXB0TGluZSksIFRpbWVsaW5l
UmVjb3JkVHlwZTo6RnVuY3Rpb25DYWxsLCB0cnVlLCBmcmFtZSk7CiAKICAgICBpZiAoZnJhbWUg
JiYgIW1fY2FsbFN0YWNrRGVwdGgpCi0gICAgICAgIHN0YXJ0UHJvZmlsaW5nKGZyYW1lLCBBU0NJ
SUxpdGVyYWwoIlRpbWVsaW5lIEZ1bmN0aW9uQ2FsbCIpKTsKKyAgICAgICAgc3RhcnRQcm9maWxp
bmcoZnJhbWUsIEFTQ0lJTGl0ZXJhbCgiVGltZWxpbmUgRnVuY3Rpb25DYWxsIiksIG1fc3RvcHdh
dGNoKTsKIAogICAgICsrbV9jYWxsU3RhY2tEZXB0aDsKIH0KQEAgLTQwNiw3ICs0MDQsNyBAQCB2
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxFdmFsdWF0ZVNjcmlwdChjb25zdCBTdHJp
bmcmIHVybCwgaW50IGxpbmVOdW1iZQogICAgIHB1c2hDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlRXZhbHVhdGVTY3JpcHREYXRhKHVybCwgbGluZU51bWJlciksIFRp
bWVsaW5lUmVjb3JkVHlwZTo6RXZhbHVhdGVTY3JpcHQsIHRydWUsIGZyYW1lKTsKIAogICAgIGlm
IChmcmFtZSAmJiAhbV9jYWxsU3RhY2tEZXB0aCkKLSAgICAgICAgc3RhcnRQcm9maWxpbmcoZnJh
bWUsIEFTQ0lJTGl0ZXJhbCgiVGltZWxpbmUgRXZhbHVhdGVTY3JpcHQiKSk7CisgICAgICAgIHN0
YXJ0UHJvZmlsaW5nKGZyYW1lLCBBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIEV2YWx1YXRlU2NyaXB0
IiksIG1fc3RvcHdhdGNoKTsKIAogICAgICsrbV9jYWxsU3RhY2tEZXB0aDsKIH0KQEAgLTU1NCw2
ICs1NTIsMTYgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpicmVha3BvaW50QWN0aW9u
UHJvYmUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEkKICAgICBhcHBlbmRSZWNvcmQoVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQcm9iZVNhbXBsZURhdGEoYWN0aW9uLCBoaXRDb3Vu
dCksIFRpbWVsaW5lUmVjb3JkVHlwZTo6UHJvYmVTYW1wbGUsIGZhbHNlLCBmcmFtZUZyb21FeGVj
U3RhdGUoZXhlYykpOwogfQogCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFBhdXNl
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpCit7CisgICAgbV9zdG9wd2F0Y2gtPnN0b3AoKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb250aW51ZSgpCit7CisgICAgbV9z
dG9wd2F0Y2gtPnN0YXJ0KCk7Cit9CisKIHN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1l
bGluZTo6RXZlbnRUeXBlIHRvUHJvdG9jb2woVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiB7CiAg
ICAgc3dpdGNoICh0eXBlKSB7CkBAIC02OTAsNiArNjk4LDcgQEAgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW4KICAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIiks
IGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAg
LCBtX3NjcmlwdERlYnVnU2VydmVyKG51bGxwdHIpCisgICAgLCBtX3N0b3B3YXRjaChTdG9wd2F0
Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9pZCgxKQogICAgICwgbV9jYWxsU3RhY2tEZXB0aCgwKQog
ICAgICwgbV9tYXhDYWxsU3RhY2tEZXB0aCg1KQpAQCAtNzQ2LDE0ICs3NTUsMTQgQEAgdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojpsb2NhbFRvUGFnZVF1YWQoY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlciwgY29uc3QKICAgICBxdWFkLT5zZXRQNChmcmFtZVZpZXcuY29udGVudHNUb1Jv
b3RWaWV3KHJvdW5kZWRJbnRQb2ludChhYnNvbHV0ZS5wNCgpKSkpOwogfQogCi1kb3VibGUgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6dGltZXN0YW1wKCkKK1BhZ2UqIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OnBhZ2UoKQogewotICAgIHJldHVybiBtX3RpbWVDb252ZXJ0ZXIuZnJvbU1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CisgICAg
cmV0dXJuIG1fcGFnZUFnZW50ID8gbV9wYWdlQWdlbnQtPnBhZ2UoKSA6IG51bGxwdHI7CiB9CiAK
LVBhZ2UqIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnBhZ2UoKQorZG91YmxlIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OnRpbWVzdGFtcCgpCiB7Ci0gICAgcmV0dXJuIG1fcGFnZUFnZW50ID8gbV9w
YWdlQWdlbnQtPnBhZ2UoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIG1fc3RvcHdhdGNoLT5lbGFw
c2VkVGltZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCA1MjRmOTcyOGNj
MDU1YjVjNTNjZDNlOTVmYTk4MWNkZWQxMDA3MGUzLi4xYjU3YWExZmMyMTQ4YmQ2YTM4MjU5ZDEw
ZGY2MWE0Zjc4NzdmOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJMYXlvdXRS
ZWN0LmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUg
PGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg+CisjaW5jbHVkZSA8d3RmL1N0b3B3YXRj
aC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CkBAIC0xMTMsMTkgKzExNCw2IEBAIGVudW0gY2xhc3MgVGltZWxpbmVSZWNvcmRUeXBlIHsKICAg
ICBXZWJTb2NrZXREZXN0cm95CiB9OwogCi1jbGFzcyBUaW1lbGluZVRpbWVDb252ZXJ0ZXIgewot
cHVibGljOgotICAgIFRpbWVsaW5lVGltZUNvbnZlcnRlcigpCi0gICAgICAgIDogbV9zdGFydE9m
ZnNldCgwKQotICAgIHsKLSAgICB9Ci0gICAgZG91YmxlIGZyb21Nb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoZG91YmxlIHRpbWUpIGNvbnN0ICB7IHJldHVybiAodGltZSAtIG1fc3RhcnRPZmZz
ZXQpICogMTAwMC4wOyB9Ci0gICAgdm9pZCByZXNldCgpOwotCi1wcml2YXRlOgotICAgIGRvdWJs
ZSBtX3N0YXJ0T2Zmc2V0OwotfTsKLQogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudAogICAg
IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZQogICAgICwgcHVibGljIEluc3BlY3Rvcjo6SW5z
cGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKQEAgLTIxMCw2ICsxOTgsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgd2lsbEZpcmVBbmltYXRpb25GcmFtZShpbnQgY2FsbGJhY2tJ
ZCwgRnJhbWUqKTsKICAgICB2b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZSgpOwogCisgICAgLy8g
UmV0dXJucyB0aGUgZWxhcHNlZCB0aW1lIGZyb20gYSBtb25vdG9uaWMgc3RvcHdhdGNoIHRoYXQg
c3RhcnRzIHdpdGggdGltZWxpbmUgcmVjb3JkaW5nIGFuZAorICAgIC8vIHBhdXNlcyB3aGVuIHRo
ZSBkZWJ1Z2dlciBwYXVzZXMgb3IgZXhlY3V0aW9uIGlzIG90aGVyd2lzZSBzdXNwZW5kZWQuCisg
ICAgZG91YmxlIHRpbWVzdGFtcCgpOworCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogICAgIHZv
aWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRnJhbWUqKTsKICAgICB2b2lkIHdpbGxTZW5kV2Vi
U29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIEZyYW1lKik7
CkBAIC0yMTgsMTEgKzIxMCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAg
IC8vIFNjcmlwdERlYnVnTGlzdGVuZXIuIFRoaXMgaXMgb25seSB1c2VkIHRvIGNyZWF0ZSByZWNv
cmRzIGZvciBwcm9iZSBzYW1wbGVzLgorICAgIC8vIFNjcmlwdERlYnVnTGlzdGVuZXIKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCwgY29uc3QgU2NyaXB0Jikg
b3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgaW50LCBpbnQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKSBv
dmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoKSBvdmVycmlkZSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uU291bmQo
aW50KSBvdmVycmlkZSB7IH0KQEAgLTI2NCwxNyArMjU2LDE1IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjbGVhclJlY29yZFN0YWNrKCk7CiAKICAgICB2b2lkIGxvY2FsVG9QYWdlUXVhZChjb25zdCBS
ZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0JiwgRmxvYXRRdWFkKik7Ci0gICAgY29uc3Qg
VGltZWxpbmVUaW1lQ29udmVydGVyJiB0aW1lQ29udmVydGVyKCkgY29uc3QgeyByZXR1cm4gbV90
aW1lQ29udmVydGVyOyB9Ci0gICAgZG91YmxlIHRpbWVzdGFtcCgpOwogICAgIFBhZ2UqIHBhZ2Uo
KTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgUGFnZVNjcmlw
dERlYnVnU2VydmVyKiBtX3NjcmlwdERlYnVnU2VydmVyOwotICAgIFRpbWVsaW5lVGltZUNvbnZl
cnRlciBtX3RpbWVDb252ZXJ0ZXI7CisKKyAgICBSZWZQdHI8U3RvcHdhdGNoPiBtX3N0b3B3YXRj
aDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvclRpbWVsaW5lRnJv
bnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwotICAgIGRvdWJsZSBtX3RpbWVzdGFtcE9mZnNldDsKIAogICAgIFZlY3RvcjxUaW1lbGlu
ZVJlY29yZEVudHJ5PiBtX3JlY29yZFN0YWNrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCmluZGV4IDNmZWM0MDBhYjEyMjQyNThk
Nzg4ZDI5ZDNlNjViOTVjMTZiYzIzMGMuLjE2Y2IzODhkZjI4N2FmNDRhYTAwY2YzZGQ2ODczNzk4
ZTYwOTMwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL1Nj
cmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5Lmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgotI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1h
bmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXggOTAyMTJlMTQyNTY4Y2I2YjNiYWE0MTliMWJmNzAz
YWM4NWRlZTg4Ni4uYzZmNDUyYzA3NDBmYWY3NTJlNmUzNTZiOTRkOWY1YTcyNTdmNDUzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
VGltZWxpbmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwpAQCAtMTY0LDggKzE2NCwxMCBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgZnVuY3Rp
b24gcHJvY2Vzc1JlY29yZChyZWNvcmRQYXlsb2FkLCBwYXJlbnRSZWNvcmRQYXlsb2FkKQogICAg
ICAgICB7CiAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXBzIHRvIHNlY29uZHMg
dG8gbWF0Y2ggdGhlIHJlc291cmNlIHRpbWVzdGFtcHMuCi0gICAgICAgICAgICB2YXIgc3RhcnRU
aW1lID0gcmVjb3JkUGF5bG9hZC5zdGFydFRpbWUgLyAxMDAwOwotICAgICAgICAgICAgdmFyIGVu
ZFRpbWUgPSByZWNvcmRQYXlsb2FkLmVuZFRpbWUgLyAxMDAwOworICAgICAgICAgICAgLy8gRklY
TUU6IGNvbXBhdGliaWxpdHk6IG9sZCB2ZXJzaW9ucyBwYXNzIG1pbGxpc2Vjb25kcyBzaW5jZSBl
cG9jaCwKKyAgICAgICAgICAgIC8vIHdoaWxlIHRydW5rIHVzZXMgc2Vjb25kcyBlbGFwc2VkIHNp
bmNlIHN0YXJ0IG9mIHJlY29yZGluZy4KKyAgICAgICAgICAgIHZhciBzdGFydFRpbWUgPSByZWNv
cmRQYXlsb2FkLnN0YXJ0VGltZTsKKyAgICAgICAgICAgIHZhciBlbmRUaW1lID0gcmVjb3JkUGF5
bG9hZC5lbmRUaW1lOwogCiAgICAgICAgICAgICB2YXIgY2FsbEZyYW1lcyA9IHRoaXMuX2NhbGxG
cmFtZXNGcm9tUGF5bG9hZChyZWNvcmRQYXlsb2FkLnN0YWNrVHJhY2UpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZUNvbnRl
bnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVDb250ZW50Vmlldy5qcwppbmRleCBiZTRhNGU3YTg4NDEyYmM0MDczMzhlNTE5YjA1YmZj
OTI1YjRlMjBkLi5hMjAzZjJlMzFmYjM5OWNlYjdlZDA5NGEwOWYzYjM1ZWMwYzlmMDIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGlu
ZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RpbWVsaW5lQ29udGVudFZpZXcuanMKQEAgLTk4LDYgKzk4LDkgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZWNvcmRpbmcpCiAgICAgV2ViSW5z
cGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1l
bGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RhcnRlZCwgdGhpcy5fY2FwdHVyaW5nU3RhcnRl
ZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RvcHBlZCwg
dGhpcy5fY2FwdHVyaW5nU3RvcHBlZCwgdGhpcyk7CiAKKyAgICBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5F
dmVudC5QYXVzZWQsIHRoaXMuX2RlYnVnZ2VyUGF1c2VkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TWFuYWdlci5FdmVudC5SZXN1bWVkLCB0aGlzLl9kZWJ1Z2dlclJlc3VtZWQsIHRoaXMpOworCiAg
ICAgdGhpcy5zaG93T3ZlcnZpZXdUaW1lbGluZVZpZXcoKTsKIH07CiAKQEAgLTQwNyw2ICs0MTAs
MjIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9zdG9wVXBkYXRpbmdDdXJyZW50VGltZSgpOwogICAgIH0sCiAKKyAgICBfZGVi
dWdnZXJQYXVzZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Npb25TdGF0ZSA9PT0gV2ViSW5zcGVjdG9yLlJlcGxheU1h
bmFnZXIuU2Vzc2lvblN0YXRlLlJlcGxheWluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLl9zdG9wVXBkYXRpbmdDdXJyZW50VGltZSgpOworICAgIH0sCisKKyAgICBfZGVi
dWdnZXJSZXN1bWVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChXZWJJbnNw
ZWN0b3IucmVwbGF5TWFuYWdlci5zZXNzaW9uU3RhdGUgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlN
YW5hZ2VyLlNlc3Npb25TdGF0ZS5SZXBsYXlpbmcpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5fc3RhcnRVcGRhdGluZ0N1cnJlbnRUaW1lKCk7CisgICAgfSwKKwogICAgIF9y
ZWNvcmRpbmdUaW1lc1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLl93YWl0aW5nVG9SZXNldEN1cnJlbnRUaW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238789</attachid>
            <date>2014-09-27 14:43:10 -0700</date>
            <delta_ts>2014-09-29 09:34:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136351-20140927144252.patch</filename>
            <type>text/plain</type>
            <size>56719</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OTBiNmVhMWQ2YzJmYWY5OTU5Mjc5ZGE3NTZlZmIwMzcwYTg5ZjE5Li44MGYxMjYyY2E5MGRhM2Ri
MGZmZWZlMDYxM2FjZTk4NTg1NmE0MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxNC0wOS0yNyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291
bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0aGF0IHdlIGhhdmUgYSBz
dG9wd2F0Y2ggdG8gcHJvdmlkZSBwYXVzZS1hd2FyZSB0aW1pbmcgZGF0YSwgd2UgY2FuIHJlbW92
ZSB0aGUKKyAgICAgICAgcHJvZmlsZXIncyBoYW5kbGluZyBvZiBkZWJ1Z2dlciBwYXVzZS9jb250
aW51ZSBjYWxsYmFja3MuIFRoZSB0aW1lbGluZSBhZ2VudCBhY2NvdW50cworICAgICAgICBmb3Ig
ZGVidWdnZXIgcGF1c2VzIGJ5IHBhdXNpbmcgYW5kIHJlc3VtaW5nIHRoZSBzdG9wd2F0Y2guCisK
KyAgICAgICAgKiBBUEkvSlNQcm9maWxlclByaXZhdGUuY3BwOgorICAgICAgICAoSlNTdGFydFBy
b2ZpbGluZyk6IFVzZSBhIGZyZXNoIHN0b3B3YXRjaCB3aGVuIHByb2ZpbGluZyBmcm9tIHRoZSBK
U0MgQVBJLgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVQYXVzZSk6CisgICAgICAg
ICogcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpMZWdhY3lQcm9m
aWxlcjo6cHJvZmlsZXIpOiBVc2UgbnVsbHB0ci4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmls
ZXI6OnN0YXJ0UHJvZmlsaW5nKTogSGFuZCBvZmYgYSBzdG9wd2F0Y2ggdG8gdGhlIHByb2ZpbGUg
Z2VuZXJhdG9yLgorICAgICAgICAoSlNDOjpMZWdhY3lQcm9maWxlcjo6c3RvcFByb2ZpbGluZyk6
IFVzZSBudWxscHRyLgorICAgICAgICAoSlNDOjpMZWdhY3lQcm9maWxlcjo6ZGlkUGF1c2UpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpMZWdhY3lQcm9maWxlcjo6ZGlkQ29udGludWUpOiBEZWxl
dGVkLgorICAgICAgICAqIHByb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmg6CisgICAgICAgICogcHJv
ZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHA6IFJlbW92ZSBkZWJ1Z2dlciBwYXVzZS9jb250aW51
ZSBjYWxsYmFja3MgYW5kIHRoZQorICAgICAgICB0aW1lc3RhbXAgbWVtYmVyIHRoYXQgd2FzIHVz
ZWQgdG8gdHJhY2sgdGltZSBlbGFwc2VkIGJ5IHRoZSBkZWJ1Z2dlci4gSnVzdCB1c2UgdGhlCisg
ICAgICAgIHN0b3B3YXRjaCdzIGVsYXBzZWQgdGltZXMgdG8gZ2VuZXJhdGUgc3RhcnQvZWxhcHNl
ZCB0aW1lcyBmb3IgZnVuY3Rpb24gY2FsbHMuCisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6OlByb2ZpbGVHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpQcm9maWxlR2VuZXJhdG9yOjpiZWdpbkNhbGxFbnRyeSk6
CisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6OmVuZENhbGxFbnRyeSk6CisgICAgICAg
IChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6OmRpZFBhdXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6UHJvZmlsZUdlbmVyYXRvcjo6ZGlkQ29udGludWUpOiBEZWxldGVkLgorICAgICAgICAqIHBy
b2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuaDoKKwogMjAxNC0wOS0yNiAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEF1dG9tYXRp
YyBJbnNwZWN0aW9uIHNob3VsZCBjb250aW51ZSBvbmNlIGFsbCBicmVha3BvaW50cyBhcmUgbG9h
ZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IDg5MDc0YTMxYjdjNWU5N2QwNzNmOWFhMjg0ZjMxNDkyZmZkMTllNmQuLjJhZTU2
NWFjMzkxMjMyYjE4OGNmNDJiODEwMmFlNzgyNjNmMDNkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTQtMDktMjcgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IHRpbWVsaW5lcyBzaG91bGQgbm90IGNvdW50IHRpbWUgZWxh
cHNlZCB3aGlsZSBwYXVzZWQgaW4gdGhlIGRlYnVnZ2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdURi52Y3hwcm9qL1dURi52Y3hwcm9qOgorICAg
ICAgICAqIFdURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIHd0Zi9TdG9wd2F0Y2guaDogQWRkZWQuIFRoaXMgaW1wbGVtZW50cyBhIHJlZmNv
dW50ZWQgbW9ub3RvbmljIHN0b3B3YXRjaC4KKyAgICAgICAgKFdURjo6U3RvcHdhdGNoOjpyZXNl
dCk6CisgICAgICAgIChXVEY6OlN0b3B3YXRjaDo6c3RhcnQpOgorICAgICAgICAoV1RGOjpTdG9w
d2F0Y2g6OnN0b3ApOgorCiAyMDE0LTA5LTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgRlRMIHNob3VsZCBzaW5rIG9iamVjdCBhbGxvY2F0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGEzNDgxYzA5NTFjZTM5NjhhM2Y5MDNlNTQzMDAwMGE2NDQ0YjZlMGEuLmM1OTU3MTg4
ODgzYTcxMmMwNzk3MGE3NzJjNzg4NTI5Y2QwOWZjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
NiBAQAorMjAxNC0wOS0yNyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291bnQgdGlt
ZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGF2b2lkIGNvdW50aW5nIHRpbWUgZWxh
cHNlZCB3aGlsZSB0aGUgZGVidWdnZXIgaXMgcGF1c2VkLCB0aW1lbGluZSByZWNvcmRzIHNob3Vs
ZAorICAgICAgICBrZWVwIHRyYWNrIG9mIHRpbWUgZWxhcHNlZCBzaW5jZSB0aGUgc3RhcnQgb2Yg
dGltZWxpbmUgY2FwdHVyaW5nLCByYXRoZXIgdGhhbiB3YWxsIGNsb2NrCisgICAgICAgIHRpbWVz
dGFtcHMuIFdlIGNhbiBlYXNpbHkgY29tcHV0ZSBlbGFwc2VkIHRpbWUgYnkgc2hhcmluZyBTdG9w
d2F0Y2ggaW5zdGFuY2UgYW1vbmcKKyAgICAgICAgYWxsIHRpbWVsaW5lIHJlY29yZC1nZW5lcmF0
aW5nIGNvZGUuIFRoZSBzdG9wd2F0Y2ggaXMgcGF1c2VkIHdoaWxlIHRoZSBkZWJ1Z2dlciBpcyBw
YXVzZWQsCisgICAgICAgIHNvIHN1YnNlcXVlbnQgdGltZSBtZWFzdXJlbWVudHMgd2lsbCBub3Qg
aW5jbHVkZSB0aW1lIGVsYXBzZWQgd2hpbGUgdGhlIGRlYnVnZ2VyIGlzIHBhdXNlZC4KKworICAg
ICAgICBBZ2VudHMgdXNlIHRoZSBzaGFyZWQgc3RvcHdhdGNoIHRvIGdlbmVyYXRlIHRpbWVzdGFt
cHMgaWYgdGhlIHRpbWVsaW5lIGFnZW50IGlzIGFjdGl2ZQorICAgICAgICAoaS5lLiwgYSB0aW1l
bGluZSByZWNvcmRpbmcgaXMgYmVpbmcgY2FwdHVyZWQpLiBJZiBub3QsIHVzZSBhIHplcm8gdGlt
ZXN0YW1wIHNpbmNlIHRoZSB0aW1pbmcgZGF0YSBpcyBvbmx5IHJldmVhbGVkIHRocm91Z2ggdGhl
IFRpbWVsaW5lIGludGVyZmFjZS4KKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIGlzIHNhZmUg
YmVjYXVzZSBzdGFydCBhbmQgZW5kIHRpbWVzIGFyZSBvbmx5IHVzZWQgdG8gZ3JhcGggcmVjb3Jk
czsgdGhlCisgICAgICAgIHRpbWVzdGFtcCdzIGFjdHVhbCB2YWx1ZSBpcyBpcnJlbGV2YW50IGFu
ZCBpcyBub3QgZGlzcGxheWVkIGluIHRoZSB1c2VyIGludGVyZmFjZS4gRGF0ZQorICAgICAgICB0
aW1lc3RhbXBzIGFyZSBzdGlsbCBpbmNsdWRlZCB3aXRoIG5ldHdvcmstcmVsYXRlZCByZWNvcmRz
IGFzIHBhcnQgb2YgdGhlaXIgaGVhZGVyIGRhdGEuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBi
ZWNhdXNlIHdlIGNhbm5vdCByZWxpYWJseSB0ZXN0IHRpbWluZyBjaGFuZ2VzIGluZHVjZWQgYnkg
ZGVidWdnZXIgcGF1c2VzLgorICAgICAgICBJdCBpcyBwb3NzaWJsZSBmb3IgcmVjb3JkcyB0byBh
Y2NydWUgdGltZSBiZWZvcmUgdGhlIGRlYnVnZ2VyIHBhdXNlcyBvciBhZnRlciBpdCByZXN1bWVz
LgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDogUmVtb3ZlIHVu
dXNlZCBpbmNsdWRlLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
OiBVc2UgdGltZXN0YW1wcyBmcm9tIHRoZSBzaGFyZWQgc3RvcHdhdGNoLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojp0aW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50Ojpkb21Db250ZW50RXZlbnRGaXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmxvYWRFdmVudEZpcmVkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwOiBVc2UgdGltZXN0YW1wcyBmcm9tIHRoZSBzaGFyZWQgc3RvcHdh
dGNoLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6dGltZXN0YW1w
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVx
dWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJl
Y2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDbG9zZVdlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkU2VuZFdlYlNvY2tldEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2Vp
dmVXZWJTb2NrZXRGcmFtZUVycm9yKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcDogQWRkIGNhbGxzIHRvIHJlc2V0LCBzdGFydCwgYW5kIHN0b3AgdGhlIHN0b3B3YXRjaC4K
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjppbnRlcm5hbFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OmludGVybmFsU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpzdGFydFByb2ZpbGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydEZyb21Db25zb2xl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxDYWxsRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbEV2
YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZFBhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRp
ZENvbnRpbnVlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Oklu
c3BlY3RvclRpbWVsaW5lQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6dGltZXN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lVGltZUNvbnZl
cnRlcjo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50Lmg6IE1ha2UgdGltZXN0YW1wKCkgcHVibGljLCBhbmQgcmVtb3ZlIG9sZCB0aW1l
cGllY2VzLgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVUaW1lQ29udmVydGVyOjpUaW1lbGlu
ZVRpbWVDb252ZXJ0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVUaW1l
Q29udmVydGVyOjpmcm9tTW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRpbWVDb252ZXJ0ZXIpOiBE
ZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwOgor
CiAyMDE0LTA5LTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdG9wIHVzaW5nIGxlZ2FjeSBOT0RFX1RZUEVfQ0FTVFMoKSBtYWNybyBmb3IgSFRNTCBF
bGVtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggOWIyNjRkMmYxN2ZkYzlmZWU3MDI0
Yzg3ZmFiMWY0ODQ4NGI3Y2EwMC4uOTAyMmI3ZGRkNjI0MTNiMjg5ZjA1MDgyMDhjZmJhNDFkN2Nh
ZGZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTQtMDkt
MjcgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IHRpbWVsaW5lcyBzaG91bGQgbm90IGNvdW50IHRpbWUgZWxhcHNlZCB3aGls
ZSBwYXVzZWQgaW4gdGhlIGRlYnVnZ2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzYzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBEb24ndCB1cGRhdGUgdGhlIHRpbWVsaW5lJ3MgY3VycmVudCB0aW1l
IHdoZW4gdGhlIGRlYnVnZ2VyIGlzIHBhdXNlZC4KKworICAgICAgICBTdGFydCBhbmQgZW5kIHRp
bWVzIGZvciB0aW1lbGluZSByZWNvcmRzIGFyZSBub3cgaW4gc2Vjb25kcyBlbGFwc2VkIHNpbmNl
IHRpbWVsaW5lCisgICAgICAgIHJlY29yZGluZyBzdGFydGVkLCByYXRoZXIgdGhhbiBtaWxsaXNl
Y29uZHMgc2luY2UgdGhlIGVwb2NoLiBBZGQgYSB3b3JrYXJvdW5kIHRvCisgICAgICAgIHByZXNl
cnZlIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgYmFja2VuZHMuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmNhcHR1cmluZ1N0YXJ0ZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuZXZlbnRSZWNvcmRlZC5w
cm9jZXNzUmVjb3JkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJv
dG90eXBlLmV2ZW50UmVjb3JkZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRl
bnRWaWV3LnByb3RvdHlwZS5fZGVidWdnZXJQYXVzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lQ29udGVudFZpZXcucHJvdG90eXBlLl9kZWJ1Z2dlclJlc3VtZWQpOgorCiAyMDE0
LTA5LTI2ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogQXV0b21hdGljIEluc3BlY3Rpb24gc2hvdWxkIGNvbnRpbnVlIG9uY2Ug
YWxsIGJyZWFrcG9pbnRzIGFyZSBsb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNQcm9maWxlclByaXZhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1Byb2ZpbGVyUHJpdmF0ZS5jcHAKaW5kZXggMmE1ZWMyYzgyMzkwMWVkOWUxYmJkODI0Y2Zh
OWM2M2Y4YTgyMzY4Ni4uMzViYTgzYmI2MDg4MWJhZjY0ZWU3ZjUwZWM0OGIxYjVkNWQxNjEyYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Byb2ZpbGVyUHJpdmF0ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Byb2ZpbGVyUHJpdmF0ZS5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogdm9pZCBKU1N0YXJ0UHJv
ZmlsaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHRpdGxlKQogewotICAgIExlZ2Fj
eVByb2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2ZpbGluZyh0b0pTKGN0eCksIHRpdGxlLT5z
dHJpbmcoKSk7CisgICAgTGVnYWN5UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0YXJ0UHJvZmlsaW5n
KHRvSlMoY3R4KSwgdGl0bGUtPnN0cmluZygpLCBTdG9wd2F0Y2g6OmNyZWF0ZSgpKTsKIH0KIAog
dm9pZCBKU0VuZFByb2ZpbGluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiB0aXRsZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKaW5kZXggMmM3ODNhZjQ3NzZkNjE1NGYwZmYzMjM0NjA3NWY3MTg0YjJlMGI0OS4u
M2E2MTY2M2UzNmM0NzdjMTE3M2IyY2MzODg3OTNkMTUyY2JmMzhjZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAg
LTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNs
dWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVk
ZSAiTGVnYWN5UHJvZmlsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUg
IlNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0z
MDcsMTQgKzMwNiwxMiBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVFeGNlcHRpb25J
bkJyZWFrcG9pbnRDb25kaXRpb24oSlNDOjpFeGVjU3RhdGUqIGV4ZQogdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6aGFuZGxlUGF1c2UoRGVidWdnZXI6OlJlYXNvbkZvclBhdXNlLCBKU0dsb2JhbE9i
amVjdCogdm1FbnRyeUdsb2JhbE9iamVjdCkKIHsKICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0
ZW5lcnMoJlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFBhdXNlKTsKLSAgICBMZWdhY3lQ
cm9maWxlcjo6cHJvZmlsZXIoKS0+ZGlkUGF1c2UoY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCkp
OwogICAgIGRpZFBhdXNlKHZtRW50cnlHbG9iYWxPYmplY3QpOwogCiAgICAgbV9kb25lUHJvY2Vz
c2luZ0RlYnVnZ2VyRXZlbnRzID0gZmFsc2U7CiAgICAgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQo
KTsKIAogICAgIGRpZENvbnRpbnVlKHZtRW50cnlHbG9iYWxPYmplY3QpOwotICAgIExlZ2FjeVBy
b2ZpbGVyOjpwcm9maWxlcigpLT5kaWRDb250aW51ZShjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUo
KSk7CiAgICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKCZTY3JpcHREZWJ1Z1NlcnZlcjo6
ZGlzcGF0Y2hEaWRDb250aW51ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwCmluZGV4IDNhOTljYzRlYTIwZDQ3YjE2M2VkYzJh
YjI5ZDZjZjEwMWM0YjMyNmEuLmU2MjUwZTlhYWZhMGY3ZDliZjc0M2QzZGY3ZWQ2ZDNiNGY2NmFk
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9m
aWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2Zp
bGVyLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCi0jaW5jbHVk
ZSAiRGVidWdnZXJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC01
MCwxNiArNDksMTYgQEAgc3RhdGljIHVuc2lnbmVkIFByb2ZpbGVzVUlEID0gMDsKIAogc3RhdGlj
IENhbGxJZGVudGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyRnJvbUZ1bmN0aW9uSW1wKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBkZWZhdWx0U291cmNlVVJMLCB1bnNpZ25l
ZCBkZWZhdWx0TGluZU51bWJlciwgdW5zaWduZWQgZGVmYXVsdENvbHVtbk51bWJlcik7CiAKLUxl
Z2FjeVByb2ZpbGVyKiBMZWdhY3lQcm9maWxlcjo6c19zaGFyZWRMZWdhY3lQcm9maWxlciA9IDA7
CitMZWdhY3lQcm9maWxlciogTGVnYWN5UHJvZmlsZXI6OnNfc2hhcmVkTGVnYWN5UHJvZmlsZXIg
PSBudWxscHRyOwogCiBMZWdhY3lQcm9maWxlciogTGVnYWN5UHJvZmlsZXI6OnByb2ZpbGVyKCkK
IHsKICAgICBpZiAoIXNfc2hhcmVkTGVnYWN5UHJvZmlsZXIpCiAgICAgICAgIHNfc2hhcmVkTGVn
YWN5UHJvZmlsZXIgPSBuZXcgTGVnYWN5UHJvZmlsZXIoKTsKICAgICByZXR1cm4gc19zaGFyZWRM
ZWdhY3lQcm9maWxlcjsKLX0gICAKK30KIAotdm9pZCBMZWdhY3lQcm9maWxlcjo6c3RhcnRQcm9m
aWxpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBMZWdhY3lQ
cm9maWxlcjo6c3RhcnRQcm9maWxpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBQYXNzUmVmUHRyPFN0b3B3YXRjaD4gc3RvcHdhdGNoKQogewogICAgIGlmICghZXhlYykK
ICAgICAgICAgcmV0dXJuOwpAQCAtNzUsMTQgKzc0LDE0IEBAIHZvaWQgTGVnYWN5UHJvZmlsZXI6
OnN0YXJ0UHJvZmlsaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAg
ICB9CiAKICAgICBleGVjLT52bSgpLnNldEVuYWJsZWRQcm9maWxlcih0aGlzKTsKLSAgICBSZWZQ
dHI8UHJvZmlsZUdlbmVyYXRvcj4gcHJvZmlsZUdlbmVyYXRvciA9IFByb2ZpbGVHZW5lcmF0b3I6
OmNyZWF0ZShleGVjLCB0aXRsZSwgKytQcm9maWxlc1VJRCk7CisgICAgUmVmUHRyPFByb2ZpbGVH
ZW5lcmF0b3I+IHByb2ZpbGVHZW5lcmF0b3IgPSBQcm9maWxlR2VuZXJhdG9yOjpjcmVhdGUoZXhl
YywgdGl0bGUsICsrUHJvZmlsZXNVSUQsIHN0b3B3YXRjaCk7CiAgICAgbV9jdXJyZW50UHJvZmls
ZXMuYXBwZW5kKHByb2ZpbGVHZW5lcmF0b3IpOwogfQogCiBQYXNzUmVmUHRyPFByb2ZpbGU+IExl
Z2FjeVByb2ZpbGVyOjpzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiB0aXRsZSkKIHsKICAgICBpZiAoIWV4ZWMpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBvcmlnaW4gPSBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgZm9yIChwdHJkaWZmX3QgaSA9IG1fY3VycmVudFByb2Zp
bGVzLnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CkBAIC05NCwxMiArOTMsMTIgQEAgUGFzc1Jl
ZlB0cjxQcm9maWxlPiBMZWdhY3lQcm9maWxlcjo6c3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIG1fY3VycmVudFByb2ZpbGVzLnJlbW92ZShp
KTsKICAgICAgICAgICAgIGlmICghbV9jdXJyZW50UHJvZmlsZXMuc2l6ZSgpKQogICAgICAgICAg
ICAgICAgIGV4ZWMtPnZtKCkuc2V0RW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpOwotICAgICAgICAg
ICAgCisKICAgICAgICAgICAgIHJldHVybiByZXR1cm5Qcm9maWxlOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgTGVnYWN5
UHJvZmlsZXI6OnN0b3BQcm9maWxpbmcoSlNHbG9iYWxPYmplY3QqIG9yaWdpbikKQEAgLTE2OCwy
OCArMTY3LDYgQEAgdm9pZCBMZWdhY3lQcm9maWxlcjo6ZXhjZXB0aW9uVW53aW5kKEV4ZWNTdGF0
ZSogaGFuZGxlckNhbGxGcmFtZSkKICAgICBjYWxsRnVuY3Rpb25Gb3JQcm9maWxlc1dpdGhHcm91
cChzdGQ6OmJpbmQoJlByb2ZpbGVHZW5lcmF0b3I6OmV4Y2VwdGlvblVud2luZCwgc3RkOjpwbGFj
ZWhvbGRlcnM6Ol8xLCBoYW5kbGVyQ2FsbEZyYW1lLCBjYWxsSWRlbnRpZmllciksIG1fY3VycmVu
dFByb2ZpbGVzLCBoYW5kbGVyQ2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb2Zp
bGVHcm91cCgpKTsKIH0KIAotdm9pZCBMZWdhY3lQcm9maWxlcjo6ZGlkUGF1c2UoUGFzc1JlZlB0
cjxEZWJ1Z2dlckNhbGxGcmFtZT4gcHJwQ2FsbEZyYW1lKQotewotICAgIGlmIChtX2N1cnJlbnRQ
cm9maWxlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxEZWJ1Z2dl
ckNhbGxGcmFtZT4gY2FsbEZyYW1lID0gcHJwQ2FsbEZyYW1lOwotICAgIENhbGxJZGVudGlmaWVy
IGNhbGxJZGVudGlmaWVyID0gY3JlYXRlQ2FsbElkZW50aWZpZXIoY2FsbEZyYW1lLT5leGVjKCks
IEpTVmFsdWUoKSwgU3RyaW5nSW1wbDo6ZW1wdHkoKSwgMCwgMCk7Ci0KLSAgICBjYWxsRnVuY3Rp
b25Gb3JQcm9maWxlc1dpdGhHcm91cChzdGQ6OmJpbmQoJlByb2ZpbGVHZW5lcmF0b3I6OmRpZFBh
dXNlLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzEsIGNhbGxGcmFtZSwgY2FsbElkZW50aWZpZXIpLCBt
X2N1cnJlbnRQcm9maWxlcywgY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnByb2Zp
bGVHcm91cCgpKTsKLX0KLQotdm9pZCBMZWdhY3lQcm9maWxlcjo6ZGlkQ29udGludWUoUGFzc1Jl
ZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4gcHJwQ2FsbEZyYW1lKQotewotICAgIGlmIChtX2N1cnJl
bnRQcm9maWxlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxEZWJ1
Z2dlckNhbGxGcmFtZT4gY2FsbEZyYW1lID0gcHJwQ2FsbEZyYW1lOwotICAgIENhbGxJZGVudGlm
aWVyIGNhbGxJZGVudGlmaWVyID0gY3JlYXRlQ2FsbElkZW50aWZpZXIoY2FsbEZyYW1lLT5leGVj
KCksIEpTVmFsdWUoKSwgU3RyaW5nSW1wbDo6ZW1wdHkoKSwgMCwgMCk7Ci0KLSAgICBjYWxsRnVu
Y3Rpb25Gb3JQcm9maWxlc1dpdGhHcm91cChzdGQ6OmJpbmQoJlByb2ZpbGVHZW5lcmF0b3I6OmRp
ZENvbnRpbnVlLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzEsIGNhbGxGcmFtZSwgY2FsbElkZW50aWZp
ZXIpLCBtX2N1cnJlbnRQcm9maWxlcywgY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkt
PnByb2ZpbGVHcm91cCgpKTsKLX0KLQogQ2FsbElkZW50aWZpZXIgTGVnYWN5UHJvZmlsZXI6OmNy
ZWF0ZUNhbGxJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvblZhbHVl
LCBjb25zdCBTdHJpbmcmIGRlZmF1bHRTb3VyY2VVUkwsIHVuc2lnbmVkIGRlZmF1bHRMaW5lTnVt
YmVyLCB1bnNpZ25lZCBkZWZhdWx0Q29sdW1uTnVtYmVyKQogewogICAgIGlmICghZnVuY3Rpb25W
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQ
cm9maWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVy
LmgKaW5kZXggN2U3OWNiY2MwOTZjMGUzZWFkNzg1MjU3NTFjOTUzMWY3NTg4MzBlOS4uM2ExY2Rm
OTQ4Y2QwZWM5OWM1ODI3YzI2YjBkNTMxMGRmZjUyMWQyMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmgKQEAgLTMyLDEzICszMiwxMiBAQAog
I2luY2x1ZGUgIlByb2ZpbGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRGVidWdnZXJDYWxsRnJh
bWU7CiBjbGFzcyBFeGVjU3RhdGU7Ci1jbGFzcyBWTTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owog
Y2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1ZhbHVlOwpAQCAtNDgsMTAgKzQ3LDEwIEBAIHN0cnVj
dCBDYWxsSWRlbnRpZmllcjsKIGNsYXNzIExlZ2FjeVByb2ZpbGVyIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgTGVn
YWN5UHJvZmlsZXIqIHByb2ZpbGVyKCk7IAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBM
ZWdhY3lQcm9maWxlciogcHJvZmlsZXIoKTsKICAgICBzdGF0aWMgQ2FsbElkZW50aWZpZXIgY3Jl
YXRlQ2FsbElkZW50aWZpZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgV1RGOjpTdHJpbmcm
IHNvdXJjZVVSTCwgdW5zaWduZWQgZGVmYXVsdExpbmVOdW1iZXIsIHVuc2lnbmVkIGRlZmF1bHRD
b2x1bW5OdW1iZXIpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydFByb2ZpbGlu
ZyhFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgc3RhcnRQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcm
IHRpdGxlLCBQYXNzUmVmUHRyPFN0b3B3YXRjaD4pOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFBh
c3NSZWZQdHI8UHJvZmlsZT4gc3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0
cmluZyYgdGl0bGUpOwogICAgIHZvaWQgc3RvcFByb2ZpbGluZyhKU0dsb2JhbE9iamVjdCopOwog
CkBAIC02Miw5ICs2MSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZXhjZXB0aW9uVW53aW5kKEV4
ZWNTdGF0ZSogaGFuZGxlckNhbGxGcmFtZSk7CiAKLSAgICB2b2lkIGRpZFBhdXNlKFBhc3NSZWZQ
dHI8RGVidWdnZXJDYWxsRnJhbWU+KTsKLSAgICB2b2lkIGRpZENvbnRpbnVlKFBhc3NSZWZQdHI8
RGVidWdnZXJDYWxsRnJhbWU+KTsKLQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UHJvZmlsZUdl
bmVyYXRvcj4+JiBjdXJyZW50UHJvZmlsZXMoKSB7IHJldHVybiBtX2N1cnJlbnRQcm9maWxlczsg
fTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlR2VuZXJhdG9yLmNwcAppbmRleCA3ZTQzNDQ2ZjM1MGE0NmU3NTNlOWNjYzRhOWQ5Nzkx
NDk0NTdiZDlhLi4yMmNiMTBmMWYyMThmY2ExOGZjZGE1Y2EwNzYzYTE5ZmZiNWU1Y2M2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3Iu
Y3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdSZWYuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCkBAIC00MCwyMCArMzksMTcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLVBhc3NSZWZQdHI8
UHJvZmlsZUdlbmVyYXRvcj4gUHJvZmlsZUdlbmVyYXRvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKQorUGFzc1JlZlB0cjxQcm9maWxl
R2VuZXJhdG9yPiBQcm9maWxlR2VuZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPiBzdG9w
d2F0Y2gpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcm9maWxlR2VuZXJhdG9yKGV4ZWMs
IHRpdGxlLCB1aWQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2ZpbGVHZW5lcmF0b3Io
ZXhlYywgdGl0bGUsIHVpZCwgc3RvcHdhdGNoKSk7CiB9CiAKLVByb2ZpbGVHZW5lcmF0b3I6OlBy
b2ZpbGVHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNp
Z25lZCB1aWQpCitQcm9maWxlR2VuZXJhdG9yOjpQcm9maWxlR2VuZXJhdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkLCBQYXNzUmVmUHRyPFN0b3B3
YXRjaD4gc3RvcHdhdGNoKQogICAgIDogbV9vcmlnaW4oZXhlYyA/IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSA6IG51bGxwdHIpCiAgICAgLCBtX3Byb2ZpbGVHcm91cChleGVjID8gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9maWxlR3JvdXAoKSA6IDApCi0gICAgLCBtX2RlYnVn
Z2VyUGF1c2VkVGltZXN0YW1wKE5BTikKKyAgICAsIG1fc3RvcHdhdGNoKHN0b3B3YXRjaCkKICAg
ICAsIG1fZm91bmRDb25zb2xlU3RhcnRQYXJlbnQoZmFsc2UpCiB7Ci0gICAgaWYgKERlYnVnZ2Vy
KiBkZWJ1Z2dlciA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkKLSAg
ICAgICAgbV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCA9IGRlYnVnZ2VyLT5pc1BhdXNlZCgpID8g
Y3VycmVudFRpbWUoKSA6IE5BTjsKLQogICAgIG1fcHJvZmlsZSA9IFByb2ZpbGU6OmNyZWF0ZSh0
aXRsZSwgdWlkKTsKICAgICBtX2N1cnJlbnROb2RlID0gbV9yb290Tm9kZSA9IG1fcHJvZmlsZS0+
cm9vdE5vZGUoKTsKICAgICBpZiAoZXhlYykKQEAgLTExNywxMiArMTEzLDcgQEAgdm9pZCBQcm9m
aWxlR2VuZXJhdG9yOjpiZWdpbkNhbGxFbnRyeShQcm9maWxlTm9kZSogbm9kZSwgZG91YmxlIHN0
YXJ0VGltZSkKICAgICBBU1NFUlRfQVJHKG5vZGUsIG5vZGUpOwogCiAgICAgaWYgKGlzbmFuKHN0
YXJ0VGltZSkpCi0gICAgICAgIHN0YXJ0VGltZSA9IGN1cnJlbnRUaW1lKCk7Ci0KLSAgICAvLyBJ
ZiB0aGUgZGVidWdnZXIgaXMgcGF1c2VkIHdoZW4gYmVnaW5uaW5nLCB0aGVuIGRvbid0IHNldCB0
aGUgc3RhcnQgdGltZS4gSXQKLSAgICAvLyB3aWxsIGJlIGZpeGVkIHVwIHdoZW4gdGhlIGRlYnVn
Z2VyIHVucGF1c2VzIG9yIHRoZSBjYWxsIGVudHJ5IGVuZHMuCi0gICAgaWYgKCFpc25hbihtX2Rl
YnVnZ2VyUGF1c2VkVGltZXN0YW1wKSkKLSAgICAgICAgc3RhcnRUaW1lID0gTkFOOworICAgICAg
ICBzdGFydFRpbWUgPSBtX3N0b3B3YXRjaC0+ZWxhcHNlZFRpbWUoKTsKIAogICAgIG5vZGUtPmFw
cGVuZENhbGwoUHJvZmlsZU5vZGU6OkNhbGwoc3RhcnRUaW1lKSk7CiB9CkBAIC0xMzIsMjIgKzEy
Myw4IEBAIHZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6ZW5kQ2FsbEVudHJ5KFByb2ZpbGVOb2RlKiBu
b2RlKQogICAgIEFTU0VSVF9BUkcobm9kZSwgbm9kZSk7CiAKICAgICBQcm9maWxlTm9kZTo6Q2Fs
bCYgbGFzdCA9IG5vZGUtPmxhc3RDYWxsKCk7Ci0KLSAgICAvLyBJZiB0aGUgZGVidWdnZXIgaXMg
cGF1c2VkLCBpZ25vcmUgdGhlIGludGVydmFsIHRoYXQgZW5kcyBub3cuCi0gICAgaWYgKCFpc25h
bihtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wKSAmJiAhaXNuYW4obGFzdC5lbGFwc2VkVGltZSgp
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSWYgcGF1c2VkIGFuZCBubyB0aW1lIHdhcyBh
Y2NydWVkIHRoZW4gdGhlIGRlYnVnZ2VyIHdhcyBuZXZlciB1bnBhdXNlZC4gVGhlIGNhbGwgd2ls
bAotICAgIC8vIGhhdmUgbm8gdGltZSBhY2NydWVkIGFuZCBhcHBlYXIgdG8gaGF2ZSBzdGFydGVk
IHdoZW4gdGhlIGRlYnVnZ2VyIHdhcyBwYXVzZWQuCi0gICAgaWYgKCFpc25hbihtX2RlYnVnZ2Vy
UGF1c2VkVGltZXN0YW1wKSkgewotICAgICAgICBsYXN0LnNldFN0YXJ0VGltZShtX2RlYnVnZ2Vy
UGF1c2VkVGltZXN0YW1wKTsKLSAgICAgICAgbGFzdC5zZXRFbGFwc2VkVGltZSgwLjApOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gT3RoZXJ3aXNlLCBhZGQgdGhlIGludGVydmFs
IGVuZGluZyBub3cgdG8gZWxhcHNlZCB0aW1lLgogICAgIGRvdWJsZSBwcmV2aW91c0VsYXBzZWRU
aW1lID0gaXNuYW4obGFzdC5lbGFwc2VkVGltZSgpKSA/IDAuMCA6IGxhc3QuZWxhcHNlZFRpbWUo
KTsKLSAgICBkb3VibGUgbmV3bHlFbGFwc2VkVGltZSA9IGN1cnJlbnRUaW1lKCkgLSBsYXN0LnN0
YXJ0VGltZSgpOworICAgIGRvdWJsZSBuZXdseUVsYXBzZWRUaW1lID0gbV9zdG9wd2F0Y2gtPmVs
YXBzZWRUaW1lKCkgLSBsYXN0LnN0YXJ0VGltZSgpOwogICAgIGxhc3Quc2V0RWxhcHNlZFRpbWUo
cHJldmlvdXNFbGFwc2VkVGltZSArIG5ld2x5RWxhcHNlZFRpbWUpOwogfQogCkBAIC0yMTYsMzMg
KzE5Myw2IEBAIHZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6ZXhjZXB0aW9uVW53aW5kKEV4ZWNTdGF0
ZSogaGFuZGxlckNhbGxGcmFtZSwgY29uc3QgQ2FsbElkCiAgICAgfQogfQogCi12b2lkIFByb2Zp
bGVHZW5lcmF0b3I6OmRpZFBhdXNlKFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+LCBjb25z
dCBDYWxsSWRlbnRpZmllciYpCi17Ci0gICAgQVNTRVJUKGlzbmFuKG1fZGVidWdnZXJQYXVzZWRU
aW1lc3RhbXApKTsKLQotICAgIG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXAgPSBjdXJyZW50VGlt
ZSgpOwotCi0gICAgZm9yIChQcm9maWxlTm9kZSogbm9kZSA9IG1fY3VycmVudE5vZGUuZ2V0KCk7
IG5vZGUgIT0gbV9wcm9maWxlLT5yb290Tm9kZSgpOyBub2RlID0gbm9kZS0+cGFyZW50KCkpIHsK
LSAgICAgICAgUHJvZmlsZU5vZGU6OkNhbGwmIGxhc3QgPSBub2RlLT5sYXN0Q2FsbCgpOwotICAg
ICAgICBBU1NFUlQoIWlzbmFuKGxhc3Quc3RhcnRUaW1lKCkpKTsKLQotICAgICAgICBkb3VibGUg
cHJldmlvdXNFbGFwc2VkVGltZSA9IGlzbmFuKGxhc3QuZWxhcHNlZFRpbWUoKSkgPyAwLjAgOiBs
YXN0LmVsYXBzZWRUaW1lKCk7Ci0gICAgICAgIGRvdWJsZSBhZGRpdGlvbmFsRWxhcHNlZFRpbWUg
PSBtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wIC0gbGFzdC5zdGFydFRpbWUoKTsKLSAgICAgICAg
bGFzdC5zZXRTdGFydFRpbWUoTkFOKTsKLSAgICAgICAgbGFzdC5zZXRFbGFwc2VkVGltZShwcmV2
aW91c0VsYXBzZWRUaW1lICsgYWRkaXRpb25hbEVsYXBzZWRUaW1lKTsKLSAgICB9Ci19Ci0KLXZv
aWQgUHJvZmlsZUdlbmVyYXRvcjo6ZGlkQ29udGludWUoUGFzc1JlZlB0cjxEZWJ1Z2dlckNhbGxG
cmFtZT4sIGNvbnN0IENhbGxJZGVudGlmaWVyJikKLXsKLSAgICBBU1NFUlQoIWlzbmFuKG1fZGVi
dWdnZXJQYXVzZWRUaW1lc3RhbXApKTsKLQotICAgIGZvciAoUHJvZmlsZU5vZGUqIG5vZGUgPSBt
X2N1cnJlbnROb2RlLmdldCgpOyBub2RlICE9IG1fcHJvZmlsZS0+cm9vdE5vZGUoKTsgbm9kZSA9
IG5vZGUtPnBhcmVudCgpKQotICAgICAgICBub2RlLT5sYXN0Q2FsbCgpLnNldFN0YXJ0VGltZSht
X2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wKTsKLQotICAgIG1fZGVidWdnZXJQYXVzZWRUaW1lc3Rh
bXAgPSBOQU47Ci19Ci0KIHZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6c3RvcFByb2ZpbGluZygpCiB7
CiAgICAgZm9yIChQcm9maWxlTm9kZSogbm9kZSA9IG1fY3VycmVudE5vZGUuZ2V0KCk7IG5vZGUg
IT0gbV9wcm9maWxlLT5yb290Tm9kZSgpOyBub2RlID0gbm9kZS0+cGFyZW50KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuaAppbmRleCA3
Yzk3MGQ2OWNjNjc4ZWM2NWRiNjc4YzZmZWRkNThiZDBmZWZmYTQwLi4wNTk4ZGRlOTgyZTZmM2M2
MTY3ZTQxMzc5YzJlYmEzM2M4ZmNkNGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Miw3ICs0Myw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJvZmlsZUdlbmVyYXRvciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFByb2ZpbGVHZW5lcmF0b3I+ICB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQcm9maWxlR2VuZXJhdG9yPiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3Qg
V1RGOjpTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpOworICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQcm9maWxlR2VuZXJhdG9yPiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpTdHJp
bmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPik7CiAKICAgICAg
ICAgLy8gTWVtYmVycwogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUoKSBjb25zdDsK
QEAgLTU0LDE1ICs1NSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBkaWRFeGVj
dXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZyYW1lLCBjb25zdCBDYWxsSWRlbnRpZmllciYpOwog
ICAgICAgICB2b2lkIGV4Y2VwdGlvblVud2luZChFeGVjU3RhdGUqIGhhbmRsZXJDYWxsRnJhbWUs
IGNvbnN0IENhbGxJZGVudGlmaWVyJik7CiAKLSAgICAgICAgdm9pZCBkaWRQYXVzZShQYXNzUmVm
UHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiwgY29uc3QgQ2FsbElkZW50aWZpZXImKTsKLSAgICAgICAg
dm9pZCBkaWRDb250aW51ZShQYXNzUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiwgY29uc3QgQ2Fs
bElkZW50aWZpZXImKTsKLQogICAgICAgICB2b2lkIHN0b3BQcm9maWxpbmcoKTsKIAogICAgICAg
ICB0eXBlZGVmIHZvaWQgKFByb2ZpbGVHZW5lcmF0b3I6OipQcm9maWxlRnVuY3Rpb24pKEV4ZWNT
dGF0ZSogY2FsbGVyT3JIYW5kbGVyQ2FsbEZyYW1lLCBjb25zdCBDYWxsSWRlbnRpZmllciYgY2Fs
bElkZW50aWZpZXIpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUHJvZmlsZUdlbmVyYXRvcihF
eGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7CisgICAg
ICAgIFByb2ZpbGVHZW5lcmF0b3IoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxl
LCB1bnNpZ25lZCB1aWQsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPik7CiAgICAgICAgIHZvaWQgYWRk
UGFyZW50Rm9yQ29uc29sZVN0YXJ0KEV4ZWNTdGF0ZSopOwogCiAgICAgICAgIHZvaWQgcmVtb3Zl
UHJvZmlsZVN0YXJ0KCk7CkBAIC03NCw4ICs3Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBSZWZQdHI8UHJvZmlsZT4gbV9wcm9maWxlOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogbV9v
cmlnaW47CiAgICAgICAgIHVuc2lnbmVkIG1fcHJvZmlsZUdyb3VwOwotICAgICAgICAvLyBUaW1l
c3RhbXAgaXMgc2V0IHRvIE5BTiB3aGVuIHRoZSBkZWJ1Z2dlciBpcyBub3QgY3VycmVudGx5IHBh
dXNlZC4KLSAgICAgICAgZG91YmxlIG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXA7CisgICAgICAg
IFJlZlB0cjxTdG9wd2F0Y2g+IG1fc3RvcHdhdGNoOwogICAgICAgICBSZWZQdHI8UHJvZmlsZU5v
ZGU+IG1fcm9vdE5vZGU7CiAgICAgICAgIFJlZlB0cjxQcm9maWxlTm9kZT4gbV9jdXJyZW50Tm9k
ZTsKICAgICAgICAgYm9vbCBtX2ZvdW5kQ29uc29sZVN0YXJ0UGFyZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnZjeHBy
b2ovV1RGLnZjeHByb2oKaW5kZXggOGFiMWE0MzMxYTY4YTQ0N2VjNDllZWFmNDVlNTRjM2FjYzcy
Nzg4NS4uNzg4OWUyYTk4NjI5MGZkZDg1OGVkZTJmNzQyMmRhMDE1YTBiZTY0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dU
Ri52Y3hwcm9qL1dURi52Y3hwcm9qCkBAIC0yNzAsNiArMjcwLDcgQEAg77u/PD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0
ZlxTdGFja0JvdW5kcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0YXRp
Y0NvbnN0cnVjdG9ycy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0ZExp
YkV4dHJhcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0b3B3YXRjaC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0cmluZ0V4dHJhcy5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0cmluZ0hhc2hlci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0cmluZ1ByaW50U3RyZWFtLmgiIC8+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2Uv
V1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZDVlNTYwODNiNzAwZGU2
YWI5OTEyMmIyMTkxZTAyYjE4NDQ4NWE4OC4uMGIzNmUyMjg2MWQxNmJiOWVmM2EwYTlkMjMzN2Zh
YTZkZDM5ZTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJv
ai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVy
cwpAQCAtNjEyLDYgKzYxMiw5IEBAIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0
Zi04Ij8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3RkTGliRXh0cmFzLmgiPgog
ICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdG9wd2F0Y2guaCI+CisgICAgICA8RmlsdGVyPnd0ZjwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0
cmluZ0V4dHJhcy5oIj4KICAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNWI3ZGNj
NGNiNDg3MjA0NzQ3ODgzZmYwMGI5ZGE1MzExZjZlZjAyLi43ODRlZjJhNDg0OGUwZGQwY2MwNDA4
NDNlZTBkOTVkM2Y4OWQzMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTI3Miw2ICsyNzIsNyBAQAogCQlBOEE0NzQ4NzE1MUE4MjVCMDA0MTIzRkYgLyog
V1RGVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLzsgfTsK
IAkJQThBNDc0OEMxNTFBODI2NDAwNDEyM0ZGIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDc0OEIxNTFBODI2NDAwNDEyM0ZGIC8q
IGNvbmZpZy5oICovOyB9OwogCQlCMzhGRDdCRDE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURl
ZmluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIz
OEZEN0JDMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVmaW5lcy5oICovOyB9OworCQlDNEY4
QTkzNzE5QzY1RUI0MDBCMkIxNUQgLyogU3RvcHdhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNEY4QTkzNjE5QzY1RUI0MDBCMkIxNUQgLyogU3Rv
cHdhdGNoLmggKi87IH07CiAJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3
QUExNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi87IH07CiAJCUNENTQ5N0FEMTU4
NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUu
aCAqLzsgfTsKIAkJRTE1NTU2RjUxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGls
aXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwICov
OyB9OwpAQCAtNTYyLDYgKzU2Myw3IEBACiAJCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZUaHJlYWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlRocmVh
ZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDc0OEIxNTFBODI2NDAw
NDEyM0ZGIC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25m
aWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjM4RkQ3QkMxNjg5NTNFODAwNjVD
OTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZlYXR1cmVEZWZpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0RjhBOTM2
MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RvcHdhdGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5
N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRp
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvZ3JhcGhp
Y1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTIsNiArODU0
LDcgQEAKIAkJCQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovLAog
CQkJCUE4QTQ3MzEwMTUxQTgyNUIwMDQxMjNGRiAvKiBTdGF0aWNDb25zdHJ1Y3RvcnMuaCAqLywK
IAkJCQlBOEE0NzMxMTE1MUE4MjVCMDA0MTIzRkYgLyogU3RkTGliRXh0cmFzLmggKi8sCisJCQkJ
QzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovLAogCQkJCTFBNkJCNzY4
MTYyRjMwMDUwMEREMTZEQiAvKiBTdHJlYW1CdWZmZXIuaCAqLywKIAkJCQlBOEE0NzMxMzE1MUE4
MjVCMDA0MTIzRkYgLyogU3RyaW5nRXh0cmFzLmggKi8sCiAJCQkJQTc0ODc0NTExN0EwQkRBRTAw
RkEwNENCIC8qIFN0cmluZ0hhc2hEdW1wQ29udGV4dC5oICovLApAQCAtMTA0NSw2ICsxMDQ4LDcg
QEAKIAkJCQlBOEE0NzNBMzE1MUE4MjVCMDA0MTIzRkYgLyogRGVjaW1hbE51bWJlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyQjY2QTYxN0I2QjRGQjAwQTdBRTNGIC8qIERlZmVycmFibGVSZWZD
b3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNBNTE1MUE4MjVCMDA0MTIzRkYgLyog
RGVxdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUM0RjhBOTM3MTlDNjVFQjQwMEIyQjE1RCAvKiBT
dG9wd2F0Y2guaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0E2MTUxQTgyNUIwMDQxMjNGRiAv
KiBEaXNhbGxvd0NUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNBRjE1MUE4MjVCMDA0
MTIzRkYgLyogZGl5LWZwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNCMTE1MUE4MjVCMDA0
MTIzRkYgLyogZG91YmxlLWNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dAppbmRleCBmNTA0MGY5OGZjNTk1ZWJjYTgxOWZlY2QwMTVhYTAwYjJlYTEwYmU1Li4yNThi
YzZiZTJmMjBhMmY5YjU2OGJhMGU4ODQ2ZTM4ZGI0NGJjNzMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dApAQCAtOTMsNiArOTMsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBTdGFja1N0YXRzLmgKICAg
ICBTdGF0aWNDb25zdHJ1Y3RvcnMuaAogICAgIFN0ZExpYkV4dHJhcy5oCisgICAgU3RvcHdhdGNo
LmgKICAgICBTdHJpbmdFeHRyYXMuaAogICAgIFN0cmluZ0hhc2hlci5oCiAgICAgU3RyaW5nUHJp
bnRTdHJlYW0uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RvcHdhdGNoLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9TdG9wd2F0Y2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmExMDMwNWY4ZmY1ZDg3MTQxOThl
OTY1ZTIwNjZlNDdkOTA2N2U2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvU3Rv
cHdhdGNoLmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2
ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdG9wd2F0Y2hf
aAorI2RlZmluZSBTdG9wd2F0Y2hfaAorCisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK2NsYXNzIFdURl9FWFBPUlRfUFJJVkFURSBTdG9wd2F0Y2ggOiBwdWJsaWMgUmVm
Q291bnRlZDxTdG9wd2F0Y2g+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdG9wd2F0Y2g+IGNyZWF0ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3B3YXRjaCgpKTsKKyAgICB9CisKKyAgICB2b2lk
IHJlc2V0KCk7CisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgc3RvcCgpOworCisgICAgZG91
YmxlIGVsYXBzZWRUaW1lKCkKKyAgICB7CisgICAgICAgIGJvb2wgc2hvdWxkU3VzcGVuZCA9ICFp
c25hbihtX2xhc3RTdGFydFRpbWUpOworICAgICAgICBpZiAoc2hvdWxkU3VzcGVuZCkKKyAgICAg
ICAgICAgIHN0b3AoKTsKKworICAgICAgICBBU1NFUlQoIWlzbmFuKG1fZWxhcHNlZFRpbWUpICYm
IGlzbmFuKG1fbGFzdFN0YXJ0VGltZSkpOworICAgICAgICBkb3VibGUgZWxhcHNlZFRpbWUgPSBt
X2VsYXBzZWRUaW1lOworCisgICAgICAgIGlmIChzaG91bGRTdXNwZW5kKQorICAgICAgICAgICAg
c3RhcnQoKTsKKyAgICAgICAgcmV0dXJuIGVsYXBzZWRUaW1lOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBTdG9wd2F0Y2goKQorICAgICAgICA6IG1fZWxhcHNlZFRpbWUoTkFOKQorICAgICAgICAs
IG1fbGFzdFN0YXJ0VGltZShOQU4pCisgICAgeworICAgIH0KKworICAgIGRvdWJsZSBtX2VsYXBz
ZWRUaW1lOworICAgIGRvdWJsZSBtX2xhc3RTdGFydFRpbWU7Cit9OworCitpbmxpbmUgdm9pZCBT
dG9wd2F0Y2g6OnJlc2V0KCkKK3sKKyAgICBtX2VsYXBzZWRUaW1lID0gMC4wOworICAgIG1fbGFz
dFN0YXJ0VGltZSA9IE5BTjsKK30KKworaW5saW5lIHZvaWQgU3RvcHdhdGNoOjpzdGFydCgpCit7
CisgICAgQVNTRVJUKCFpc25hbihtX2VsYXBzZWRUaW1lKSAmJiBpc25hbihtX2xhc3RTdGFydFRp
bWUpKTsKKworICAgIG1fbGFzdFN0YXJ0VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpOworfQorCitpbmxpbmUgdm9pZCBTdG9wd2F0Y2g6OnN0b3AoKQoreworICAgIEFTU0VSVCgh
aXNuYW4obV9lbGFwc2VkVGltZSkgJiYgIWlzbmFuKG1fbGFzdFN0YXJ0VGltZSkpOworCisgICAg
bV9lbGFwc2VkVGltZSArPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fbGFzdFN0
YXJ0VGltZTsKKyAgICBtX2xhc3RTdGFydFRpbWUgPSBOQU47Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCit1c2luZyBXVEY6OlN0b3B3YXRjaDsKKworI2VuZGlmIC8vIFN0b3B3YXRjaF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAy
YzczZGI5ZmQ0YmVjZGE0NDRkZTlmM2I4MDM3ODc2YWEyOGE3MzdiLi44MTVjOWRjMjViMjdhYWVl
YmRlMzgxZjFiYjY0MDEzZTY2ODgzMjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTU3LDcgKzU3LDYgQEAKICNpbmNsdWRlICJTdHls
ZVNoZWV0TGlzdC5oIgogI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgogI2luY2x1ZGUgPGlu
c3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwCmluZGV4IGViOGE0OTIyYmE5MmU3YmYzNWIwNjBjNWFkZTBmNTM0NzhhODNh
NjUuLmUwOTc4NWJhMTIzMDc0ZWVkYTgxNjZlNmE0Yzk4ZjA4MTI0ZDk5MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC01Nyw2ICs1
Nyw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkZy
b250ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAj
aW5jbHVkZSAiTWFpbkZyYW1lLmgiCkBAIC03Myw3ICs3NCw2IEBACiAjaW5jbHVkZSA8aW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSWRlbnRp
ZmllcnNGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgot
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4K
QEAgLTM2MSw2ICszNjEsMTYgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OndpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24KICNlbmRpZgogfQog
Citkb3VibGUgSW5zcGVjdG9yUGFnZUFnZW50Ojp0aW1lc3RhbXAoKQoreworICAgIC8vIElmIHRo
ZSB0aW1lbGluZSBhZ2VudCBpcyByZWNvcmRpbmcgbm93LCB1c2UgaXRzIHN0b3B3YXRjaC4gT3Ro
ZXJ3aXNlLCBqdXN0IHJlcG9ydCAwLjAKKyAgICAvLyBzaW5jZSB0aGUgdGltZXN0YW1wcyBhcmUg
b25seSB1c2VkIHRvIGFjY3VyYXRlbHkgZ3JhcGggcmVjb3JkcyBvbiB0aGUgdGltZWxpbmUuCisg
ICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKKyAgICAgICAgcmV0dXJuIHRp
bWVsaW5lQWdlbnQtPnRpbWVzdGFtcCgpOworCisgICAgcmV0dXJuIDAuMDsKK30KKwogdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiB7CiAgICAgbV9lbmFibGVk
ID0gdHJ1ZTsKQEAgLTc1MSwxMiArNzYxLDEyIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpk
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29yCiB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZG9tQ29udGVudEV2ZW50RmlyZWQoKQogewogICAgIG1f
aXNGaXJzdExheW91dEFmdGVyT25Mb2FkID0gdHJ1ZTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+ZG9tQ29udGVudEV2ZW50RmlyZWQoY3VycmVudFRpbWUoKSk7CisgICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPmRvbUNvbnRlbnRFdmVudEZpcmVkKHRpbWVzdGFtcCgpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmxvYWRFdmVudEZpcmVkKCkKIHsKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+bG9hZEV2ZW50RmlyZWQoY3VycmVudFRpbWUoKSk7CisgICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPmxvYWRFdmVudEZpcmVkKHRpbWVzdGFtcCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggMjVmZTFk
NWE2MDNhZTEzMjA3ZTE0YjM0MzA4MWU2N2Q3YmUyZWFlNy4uNWRhMDE1YzdmZjE1ODM2MmY2NGFi
YjU1MWNkN2FhZGQ4M2NhYWQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuaApAQCAtMTY3LDYgKzE2Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1
cGRhdGVUb3VjaEV2ZW50RW11bGF0aW9uSW5QYWdlKGJvb2wpOwogI2VuZGlmCiAKKyAgICBkb3Vi
bGUgdGltZXN0YW1wKCk7CisKICAgICBzdGF0aWMgYm9vbCBtYWluUmVzb3VyY2VDb250ZW50KEZy
YW1lKiwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CiAgICAgc3RhdGlj
IGJvb2wgZGF0YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyog
cmVzdWx0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuY3BwCmluZGV4IDkwNzgxYTI3M2RkZDgxMTYwNGM2NzQzNjNhNGFhYzBhNWEx
YzcxODUuLmNlM2I3N2E2NmFkZWE2YjFiNDJmN2M4Njk4MGI5NTdlYWQ2MDc1M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAK
QEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJJY29uQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJG
cm9udGVuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgog
I2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgpAQCAtNjksNyArNzAsNiBAQAogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0yNzYsNiAr
Mjc2LDE2IEBAIEluc3BlY3RvclJlc291cmNlQWdlbnQ6On5JbnNwZWN0b3JSZXNvdXJjZUFnZW50
KCkKICAgICBBU1NFUlQoIW1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCgpKTsKIH0KIAorZG91YmxlIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnRpbWVzdGFtcCgp
Cit7CisgICAgLy8gSWYgdGhlIHRpbWVsaW5lIGFnZW50IGlzIHJlY29yZGluZyBub3csIHVzZSBp
dHMgc3RvcHdhdGNoLiBPdGhlcndpc2UsIGp1c3QgcmVwb3J0IDAuMAorICAgIC8vIHNpbmNlIHRo
ZSB0aW1lc3RhbXBzIGFyZSBvbmx5IHVzZWQgdG8gYWNjdXJhdGVseSBncmFwaCByZWNvcmRzIG9u
IHRoZSB0aW1lbGluZS4KKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQor
ICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+dGltZXN0YW1wKCk7CisKKyAgICByZXR1cm4g
MC4wOworfQorCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSkKIHsKICAgICBpZiAocmVxdWVzdC5oaWRkZW5Gcm9tSW5zcGVjdG9yKCkpIHsKQEAgLTMyMCw3
ICszMzAsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TAogICAgIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnJlc291cmNlVHlwZUpzb24odHlwZSk7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9i
amVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiBudWxs
cHRyKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVz
dElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+
bG9hZGVySWQobG9hZGVyKSwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgYnVpbGRPYmplY3RGb3JS
ZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwg
YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UsIGxvYWRlciks
IHR5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlID8gJnJlc291cmNlVHlw
ZSA6IG51bGxwdHIpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0V2lsbEJlU2Vu
dChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFn
ZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBidWlsZE9i
amVjdEZvclJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgdGltZXN0YW1wKCksIGluaXRpYXRvck9i
amVjdCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UsIGxv
YWRlciksIHR5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlID8gJnJlc291
cmNlVHlwZSA6IG51bGxwdHIpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1h
cmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTM2NSw3ICsz
NzUsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZQogICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVz
cG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJh
bWUoKSksIHJlc3BvbnNlKTsKICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlVHlwZShy
ZXF1ZXN0SWQsIHR5cGUpOwogCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3BvbnNlUmVj
ZWl2ZWQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCBt
X3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSwgY3VycmVudFRpbWUoKSwgSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKHR5cGUpLCByZXNvdXJjZVJlc3BvbnNlKTsKKyAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIG1fcGFnZUFn
ZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2Fk
ZXIpLCB0aW1lc3RhbXAoKSwgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKHR5
cGUpLCByZXNvdXJjZVJlc3BvbnNlKTsKIAogICAgIC8vIElmIHdlIHJldmFsaWRhdGVkIHRoZSBy
ZXNvdXJjZSBhbmQgZ290IE5vdCBtb2RpZmllZCwgc2VuZCBjb250ZW50IGxlbmd0aCBmb2xsb3dp
bmcgZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAgLy8gYXMgdGhlcmUgd2lsbCBiZSBubyBjYWxscyB0
byBkaWRSZWNlaXZlRGF0YSBmcm9tIHRoZSBuZXR3b3JrIHN0YWNrLgpAQCAtMzkxLDcgKzQwMSw3
IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZURhdGEodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyCiAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEt
Pm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgZGF0YSwgZGF0YUxlbmd0aCk7CiAgICAg
fQogCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIGN1
cnJlbnRUaW1lKCksIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+ZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wKCksIGRhdGFM
ZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgZG91YmxlIGZpbmlzaFRpbWUpCkBAIC00MTEsNyArNDIxLDcgQEAgdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnQKICAgICAvLyBIb3dldmVyLCBhbGwgb3RoZXIgdGltZXMgcGFz
c2VkIHRvIHRoZSBJbnNwZWN0b3IgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4g
TWl4aW5nCiAgICAgLy8gdGltZXMgZnJvbSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGNhbiBjYXVzZSB0
aGUgZmluaXNoIHRpbWUgdG8gYmUgZWFybGllciB0aGFuIHRoZSByZXNwb25zZQogICAgIC8vIHJl
Y2VpdmVkIHRpbWUgZHVlIHRvIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBsYWcuCi0gICAg
ZmluaXNoVGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgZmluaXNoVGltZSA9IHRpbWVzdGFtcCgp
OwogCiAgICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkw7CiAgICAgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5k
YXRhKHJlcXVlc3RJZCk7CkBAIC00MzcsNyArNDQ3LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50
TG8KICAgICB9CiAKICAgICBib29sIGNhbmNlbGVkID0gZXJyb3IuaXNDYW5jZWxsYXRpb24oKTsK
LSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9hZGluZ0ZhaWxlZChyZXF1ZXN0SWQsIGN1cnJl
bnRUaW1lKCksIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCksIGNhbmNlbGVkID8gJmNhbmNl
bGVkIDogbnVsbHB0cik7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmxvYWRpbmdGYWlsZWQo
cmVxdWVzdElkLCB0aW1lc3RhbXAoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSwgY2Fu
Y2VsZWQgPyAmY2FuY2VsZWQgOiBudWxscHRyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQpAQCAtNDU2LDcgKzQ2Niw3IEBAIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERv
Y3VtZW50TG9hZGVyKiBsb2FkCiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0
d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChs
b2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiBudWxscHRyKTsK
IAotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0U2VydmVkRnJvbU1lbW9yeUNhY2hl
KHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGN1
cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJj
ZShyZXNvdXJjZSwgbG9hZGVyKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RT
ZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVy
LT51cmwoKS5zdHJpbmcoKSwgdGltZXN0YW1wKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmpl
Y3RGb3JDYWNoZWRSZXNvdXJjZShyZXNvdXJjZSwgbG9hZGVyKSk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6c2V0SW5pdGlhbFNjcmlwdENvbnRlbnQodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKQEAgLTU4OCw3ICs1OTgsNyBA
QCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZQogewogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0PiByZXF1ZXN0T2JqZWN0ID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6V2ViU29ja2V0UmVxdWVzdDo6Y3JlYXRlKCkKICAgICAgICAg
LnNldEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxk
cygpKSk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldFdpbGxTZW5kSGFuZHNo
YWtlUmVxdWVzdChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgY3Vy
cmVudFRpbWUoKSwgcmVxdWVzdE9iamVjdCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndl
YlNvY2tldFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVl
c3RJZChpZGVudGlmaWVyKSwgdGltZXN0YW1wKCksIHJlcXVlc3RPYmplY3QpOwogfQogCiB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQpAQCAtNTk3LDEyICs2MDcsMTIgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZwogICAg
ICAgICAuc2V0U3RhdHVzKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpCiAgICAgICAgIC5zZXRT
dGF0dXNUZXh0KHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpCiAgICAgICAgIC5zZXRIZWFkZXJz
KGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpKTsKLSAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VSZWNlaXZl
ZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUo
KSwgcmVzcG9uc2VPYmplY3QpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZVJlY2VpdmVkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlk
ZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgcmVzcG9uc2VPYmplY3QpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZENsb3NlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0Q2xvc2VkKElkZW50
aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpKTsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0Q2xvc2VkKElkZW50aWZpZXJzRmFjdG9y
eTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUmIGZyYW1lKQpAQCAtNjExLDcgKzYyMSw3
IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1l
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwKICAgICAgICAgLnNldE9wY29kZShmcmFtZS5vcENv
ZGUpCiAgICAgICAgIC5zZXRNYXNrKGZyYW1lLm1hc2tlZCkKICAgICAgICAgLnNldFBheWxvYWRE
YXRhKFN0cmluZyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSk7Ci0gICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEZyYW1lUmVjZWl2ZWQoSWRlbnRpZmllcnNGYWN0
b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIGN1cnJlbnRUaW1lKCksIGZyYW1lT2JqZWN0KTsK
KyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0RnJhbWVSZWNlaXZlZChJZGVudGlm
aWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgdGltZXN0YW1wKCksIGZyYW1lT2Jq
ZWN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRTZW5kV2ViU29ja2V0
RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJh
bWUpCkBAIC02MjAsMTIgKzYzMCwxMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRp
ZFNlbmRXZWJTb2NrZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbgogICAgICAg
ICAuc2V0T3Bjb2RlKGZyYW1lLm9wQ29kZSkKICAgICAgICAgLnNldE1hc2soZnJhbWUubWFza2Vk
KQogICAgICAgICAuc2V0UGF5bG9hZERhdGEoU3RyaW5nKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBh
eWxvYWRMZW5ndGgpKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0RnJhbWVT
ZW50KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGlt
ZSgpLCBmcmFtZU9iamVjdCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEZy
YW1lU2VudChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgdGltZXN0
YW1wKCksIGZyYW1lT2JqZWN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpk
aWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvcih1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53
ZWJTb2NrZXRGcmFtZUVycm9yKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZp
ZXIpLCBjdXJyZW50VGltZSgpLCBlcnJvck1lc3NhZ2UpOworICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT53ZWJTb2NrZXRGcmFtZUVycm9yKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlk
ZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IDljYTQ4M2RmN2VjYjVjYTQ2YWY2MjE4YWYyMDQ3OWEz
MmRlOWJkNWMuLjYxMGNhYTRhNzdmZTBjMzRlNDFiNzhhMjExZTYxODQ3ZDdjYmI1OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApA
QCAtMTM4LDYgKzEzOCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbmFibGUoKTsK
IAorICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKKwogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9w
YWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zy
b250ZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCA4MDdkZDI4NjVlN2RhODg0ZWM5MjNiM2FhM2Jm
NTNiMzMwM2Q2NzYyLi40OTdiMWQ1NjRjZjI3YWJiNGJjZDQ0MGIwMzUyYzk4ZWU1YjMxODAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwCkBAIC02MSwxMSArNjEsNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgVGltZWxpbmVUaW1lQ29udmVydGVyOjpyZXNldCgp
Ci17Ci0gICAgbV9zdGFydE9mZnNldCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0g
Y3VycmVudFRpbWUoKTsKLX0KLQogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6fkluc3BlY3RvclRp
bWVsaW5lQWdlbnQoKQogewogfQpAQCAtNzYsNiArNzEsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3Rv
ckZybwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JUaW1lbGluZUJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogCiAgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLT5zZXRQZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudCh0aGlz
KTsKKyAgICBtX3N0b3B3YXRjaC0+cmVzZXQoKTsKIAogICAgIGlmIChtX3NjcmlwdERlYnVnU2Vy
dmVyKQogICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLT5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9u
cygpOwpAQCAtMTE4LDcgKzExNCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50
ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogICAgIGVsc2UKICAgICAg
ICAgbV9tYXhDYWxsU3RhY2tEZXB0aCA9IDU7CiAKLSAgICBtX3RpbWVDb252ZXJ0ZXIucmVzZXQo
KTsKKyAgICBtX3N0b3B3YXRjaC0+c3RhcnQoKTsKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0SW5zcGVjdG9yVGltZWxpbmVBZ2VudCh0aGlzKTsKIApAQCAtMTM2LDYgKzEzMiw4IEBA
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdG9wKCkKICAgICBpZiAoIW1f
ZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9zdG9wd2F0Y2gtPnN0b3AoKTsKKwog
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yVGltZWxpbmVBZ2VudChudWxs
cHRyKTsKIAogICAgIGlmIChtX3NjcmlwdERlYnVnU2VydmVyKQpAQCAtMTU3LDkgKzE1NSw5IEBA
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0UGFnZVNjcmlwdERlYnVnU2VydmVyKFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlciogc2NyCiAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlciA9IHNjcmlw
dERlYnVnU2VydmVyOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRQcm9maWxpbmcoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCitzdGF0aWMgaW5saW5lIHZv
aWQgc3RhcnRQcm9maWxpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0
bGUsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPiBzdG9wd2F0Y2gpCiB7Ci0gICAgSlNDOjpMZWdhY3lQ
cm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmcoZXhlYywgdGl0bGUpOworICAgIEpT
Qzo6TGVnYWN5UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0YXJ0UHJvZmlsaW5nKGV4ZWMsIHRpdGxl
LCBzdG9wd2F0Y2gpOwogfQogCiBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpQcm9maWxl
PiBzdG9wUHJvZmlsaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQpAQCAtMTY3LDkgKzE2NSw5IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxKU0M6OlByb2Zp
bGU+IHN0b3BQcm9maWxpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0CiAgICAgcmV0dXJu
IEpTQzo6TGVnYWN5UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0b3BQcm9maWxpbmcoZXhlYywgdGl0
bGUpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRQcm9maWxpbmcoRnJhbWUqIGZyYW1l
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQorc3RhdGljIGlubGluZSB2b2lkIHN0YXJ0UHJvZmlsaW5n
KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzc1JlZlB0cjxTdG9wd2F0Y2g+
IHN0b3B3YXRjaCkKIHsKLSAgICBzdGFydFByb2ZpbGluZyh0b0pTRE9NV2luZG93KGZyYW1lLCBk
ZWJ1Z2dlcldvcmxkKCkpLT5nbG9iYWxFeGVjKCksIHRpdGxlKTsKKyAgICBzdGFydFByb2ZpbGlu
Zyh0b0pTRE9NV2luZG93KGZyYW1lLCBkZWJ1Z2dlcldvcmxkKCkpLT5nbG9iYWxFeGVjKCksIHRp
dGxlLCBzdG9wd2F0Y2gpOwogfQogCiBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8SlNDOjpQcm9m
aWxlPiBzdG9wUHJvZmlsaW5nKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKQEAg
LTE5Myw3ICsxOTEsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNv
bnNvbGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZwogICAgIGlmICghbV9lbmFi
bGVkICYmIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5pc0VtcHR5KCkpCiAgICAgICAg
IGludGVybmFsU3RhcnQoKTsKIAotICAgIHN0YXJ0UHJvZmlsaW5nKGV4ZWMsIHRpdGxlKTsKKyAg
ICBzdGFydFByb2ZpbGluZyhleGVjLCB0aXRsZSwgbV9zdG9wd2F0Y2gpOwogCiAgICAgbV9wZW5k
aW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzLmFwcGVuZChjcmVhdGVSZWNvcmRFbnRyeShUaW1lbGlu
ZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUNvbnNvbGVQcm9maWxlRGF0YSh0aXRsZSksIFRpbWVsaW5l
UmVjb3JkVHlwZTo6Q29uc29sZVByb2ZpbGUsIHRydWUsIGZyYW1lRnJvbUV4ZWNTdGF0ZShleGVj
KSkpOwogfQpAQCAtMjMyLDcgKzIzMCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
d2lsbENhbGxGdW5jdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpCiAgICAg
cHVzaEN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVGdW5jdGlvbkNh
bGxEYXRhKHNjcmlwdE5hbWUsIHNjcmlwdExpbmUpLCBUaW1lbGluZVJlY29yZFR5cGU6OkZ1bmN0
aW9uQ2FsbCwgdHJ1ZSwgZnJhbWUpOwogCiAgICAgaWYgKGZyYW1lICYmICFtX2NhbGxTdGFja0Rl
cHRoKQotICAgICAgICBzdGFydFByb2ZpbGluZyhmcmFtZSwgQVNDSUlMaXRlcmFsKCJUaW1lbGlu
ZSBGdW5jdGlvbkNhbGwiKSk7CisgICAgICAgIHN0YXJ0UHJvZmlsaW5nKGZyYW1lLCBBU0NJSUxp
dGVyYWwoIlRpbWVsaW5lIEZ1bmN0aW9uQ2FsbCIpLCBtX3N0b3B3YXRjaCk7CiAKICAgICArK21f
Y2FsbFN0YWNrRGVwdGg7CiB9CkBAIC00MDcsNyArNDA1LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50Ojp3aWxsRXZhbHVhdGVTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5l
TnVtYmUKIAogICAgIGlmIChmcmFtZSAmJiAhbV9jYWxsU3RhY2tEZXB0aCkgewogICAgICAgICAr
K21fY2FsbFN0YWNrRGVwdGg7Ci0gICAgICAgIHN0YXJ0UHJvZmlsaW5nKGZyYW1lLCBBU0NJSUxp
dGVyYWwoIlRpbWVsaW5lIEV2YWx1YXRlU2NyaXB0IikpOworICAgICAgICBzdGFydFByb2ZpbGlu
ZyhmcmFtZSwgQVNDSUlMaXRlcmFsKCJUaW1lbGluZSBFdmFsdWF0ZVNjcmlwdCIpLCBtX3N0b3B3
YXRjaCk7CiAgICAgfQogfQogCkBAIC01NTQsNiArNTUyLDE2IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJCiAgICAgYXBwZW5kUmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJv
YmVTYW1wbGVEYXRhKGFjdGlvbiwgaGl0Q291bnQpLCBUaW1lbGluZVJlY29yZFR5cGU6OlByb2Jl
U2FtcGxlLCBmYWxzZSwgZnJhbWVGcm9tRXhlY1N0YXRlKGV4ZWMpKTsKIH0KIAordm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKQorewor
ICAgIG1fc3RvcHdhdGNoLT5zdG9wKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6ZGlkQ29udGludWUoKQoreworICAgIG1fc3RvcHdhdGNoLT5zdGFydCgpOworfQorCiBzdGF0
aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZSB0b1Byb3RvY29sKFRp
bWVsaW5lUmVjb3JkVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtNjkwLDYg
KzY5OCw3IEBAIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJh
c2UoQVNDSUlMaXRlcmFsKCJUaW1lbGluZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwg
bV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihudWxscHRy
KQorICAgICwgbV9zdG9wd2F0Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKICAgICAsIG1faWQoMSkK
ICAgICAsIG1fY2FsbFN0YWNrRGVwdGgoMCkKICAgICAsIG1fbWF4Q2FsbFN0YWNrRGVwdGgoNSkK
QEAgLTc0OCw3ICs3NTcsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmxvY2FsVG9Q
YWdlUXVhZChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdAogCiBkb3VibGUgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6dGltZXN0YW1wKCkKIHsKLSAgICByZXR1cm4gbV90aW1lQ29u
dmVydGVyLmZyb21Nb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUobW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCkpOworICAgIHJldHVybiBtX3N0b3B3YXRjaC0+ZWxhcHNlZFRpbWUoKTsKIH0K
IAogUGFnZSogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cGFnZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCA1MjRmOTcyOGNj
MDU1YjVjNTNjZDNlOTVmYTk4MWNkZWQxMDA3MGUzLi4xYjU3YWExZmMyMTQ4YmQ2YTM4MjU5ZDEw
ZGY2MWE0Zjc4NzdmOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJMYXlvdXRS
ZWN0LmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUg
PGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg+CisjaW5jbHVkZSA8d3RmL1N0b3B3YXRj
aC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CkBAIC0xMTMsMTkgKzExNCw2IEBAIGVudW0gY2xhc3MgVGltZWxpbmVSZWNvcmRUeXBlIHsKICAg
ICBXZWJTb2NrZXREZXN0cm95CiB9OwogCi1jbGFzcyBUaW1lbGluZVRpbWVDb252ZXJ0ZXIgewot
cHVibGljOgotICAgIFRpbWVsaW5lVGltZUNvbnZlcnRlcigpCi0gICAgICAgIDogbV9zdGFydE9m
ZnNldCgwKQotICAgIHsKLSAgICB9Ci0gICAgZG91YmxlIGZyb21Nb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoZG91YmxlIHRpbWUpIGNvbnN0ICB7IHJldHVybiAodGltZSAtIG1fc3RhcnRPZmZz
ZXQpICogMTAwMC4wOyB9Ci0gICAgdm9pZCByZXNldCgpOwotCi1wcml2YXRlOgotICAgIGRvdWJs
ZSBtX3N0YXJ0T2Zmc2V0OwotfTsKLQogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudAogICAg
IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZQogICAgICwgcHVibGljIEluc3BlY3Rvcjo6SW5z
cGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKQEAgLTIxMCw2ICsxOTgsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgd2lsbEZpcmVBbmltYXRpb25GcmFtZShpbnQgY2FsbGJhY2tJ
ZCwgRnJhbWUqKTsKICAgICB2b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZSgpOwogCisgICAgLy8g
UmV0dXJucyB0aGUgZWxhcHNlZCB0aW1lIGZyb20gYSBtb25vdG9uaWMgc3RvcHdhdGNoIHRoYXQg
c3RhcnRzIHdpdGggdGltZWxpbmUgcmVjb3JkaW5nIGFuZAorICAgIC8vIHBhdXNlcyB3aGVuIHRo
ZSBkZWJ1Z2dlciBwYXVzZXMgb3IgZXhlY3V0aW9uIGlzIG90aGVyd2lzZSBzdXNwZW5kZWQuCisg
ICAgZG91YmxlIHRpbWVzdGFtcCgpOworCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogICAgIHZv
aWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRnJhbWUqKTsKICAgICB2b2lkIHdpbGxTZW5kV2Vi
U29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIEZyYW1lKik7
CkBAIC0yMTgsMTEgKzIxMCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAg
IC8vIFNjcmlwdERlYnVnTGlzdGVuZXIuIFRoaXMgaXMgb25seSB1c2VkIHRvIGNyZWF0ZSByZWNv
cmRzIGZvciBwcm9iZSBzYW1wbGVzLgorICAgIC8vIFNjcmlwdERlYnVnTGlzdGVuZXIKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCwgY29uc3QgU2NyaXB0Jikg
b3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgaW50LCBpbnQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKSBv
dmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoKSBvdmVycmlkZSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uU291bmQo
aW50KSBvdmVycmlkZSB7IH0KQEAgLTI2NCwxNyArMjU2LDE1IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjbGVhclJlY29yZFN0YWNrKCk7CiAKICAgICB2b2lkIGxvY2FsVG9QYWdlUXVhZChjb25zdCBS
ZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0JiwgRmxvYXRRdWFkKik7Ci0gICAgY29uc3Qg
VGltZWxpbmVUaW1lQ29udmVydGVyJiB0aW1lQ29udmVydGVyKCkgY29uc3QgeyByZXR1cm4gbV90
aW1lQ29udmVydGVyOyB9Ci0gICAgZG91YmxlIHRpbWVzdGFtcCgpOwogICAgIFBhZ2UqIHBhZ2Uo
KTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgUGFnZVNjcmlw
dERlYnVnU2VydmVyKiBtX3NjcmlwdERlYnVnU2VydmVyOwotICAgIFRpbWVsaW5lVGltZUNvbnZl
cnRlciBtX3RpbWVDb252ZXJ0ZXI7CisKKyAgICBSZWZQdHI8U3RvcHdhdGNoPiBtX3N0b3B3YXRj
aDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvclRpbWVsaW5lRnJv
bnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwotICAgIGRvdWJsZSBtX3RpbWVzdGFtcE9mZnNldDsKIAogICAgIFZlY3RvcjxUaW1lbGlu
ZVJlY29yZEVudHJ5PiBtX3JlY29yZFN0YWNrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCmluZGV4IDNmZWM0MDBhYjEyMjQyNThk
Nzg4ZDI5ZDNlNjViOTVjMTZiYzIzMGMuLjE2Y2IzODhkZjI4N2FmNDRhYTAwY2YzZGQ2ODczNzk4
ZTYwOTMwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL1Nj
cmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5Lmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgotI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1h
bmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXggOTAyMTJlMTQyNTY4Y2I2YjNiYWE0MTliMWJmNzAz
YWM4NWRlZTg4Ni4uNzdiZWQ0MzMwYjQwMDI2NzI2NmYwOWQ3OTUyNjIzNmYwNzU3MjIyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
VGltZWxpbmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwpAQCAtMzUsNiArMzUsOCBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2FjdGl2ZVJl
Y29yZGluZyA9IG51bGw7CiAgICAgdGhpcy5faXNDYXB0dXJpbmcgPSBmYWxzZTsKIAorICAgIC8v
IEZvciBsZWdhY3kgYmFja2VuZHMsIHdlIGNvbXB1dGUgdGhlIGVsYXBzZWQgdGltZSBvZiByZWNv
cmRzIHJlbGF0aXZlIHRvIHRoaXMgdGltZXN0YW1wLgorICAgIHRoaXMuX2NhcHR1cmluZ1N0YXJ0
ZWRUaW1lc3RhbXAgPSBOYU47CiAgICAgdGhpcy5fbmV4dFJlY29yZGluZ0lkZW50aWZpZXIgPSAx
OwogCiAgICAgdGhpcy5fYm91bmRTdG9wQ2FwdHVyaW5nID0gdGhpcy5zdG9wQ2FwdHVyaW5nLmJp
bmQodGhpcyk7CkBAIC0xMjksNiArMTMxLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5faXND
YXB0dXJpbmcgPSB0cnVlOworICAgICAgICB0aGlzLl9jYXB0dXJpbmdTdGFydGVkVGltZXN0YW1w
ID0gRGF0ZS5ub3coKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0YXJ0ZWQpOwogICAg
IH0sCkBAIC0xNjMsOSArMTY2LDE2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJv
dG90eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NSZWNvcmQocmVjb3JkUGF5bG9h
ZCwgcGFyZW50UmVjb3JkUGF5bG9hZCkKICAgICAgICAgewotICAgICAgICAgICAgLy8gQ29udmVy
dCB0aGUgdGltZXN0YW1wcyB0byBzZWNvbmRzIHRvIG1hdGNoIHRoZSByZXNvdXJjZSB0aW1lc3Rh
bXBzLgotICAgICAgICAgICAgdmFyIHN0YXJ0VGltZSA9IHJlY29yZFBheWxvYWQuc3RhcnRUaW1l
IC8gMTAwMDsKLSAgICAgICAgICAgIHZhciBlbmRUaW1lID0gcmVjb3JkUGF5bG9hZC5lbmRUaW1l
IC8gMTAwMDsKKyAgICAgICAgICAgIHZhciBzdGFydFRpbWUgPSByZWNvcmRQYXlsb2FkLnN0YXJ0
VGltZTsKKyAgICAgICAgICAgIHZhciBlbmRUaW1lID0gcmVjb3JkUGF5bG9hZC5lbmRUaW1lOwor
CisgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1M4KTogb2xkIHZlcnNpb25zIHVzZSBt
aWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoLCByYXRoZXIKKyAgICAgICAgICAgIC8vIHRoYW4g
c2Vjb25kcyBlbGFwc2VkIHNpbmNlIHRpbWVsaW5lIGNhcHR1cmluZyBzdGFydGVkLiBXZSBhcHBy
b3hpbWF0ZSB0aGUgbGF0dGVyIGJ5CisgICAgICAgICAgICAvLyBzdWJ0cmFjdGluZyB0aGUgc3Rh
cnQgdGltZXN0YW1wLCBhcyBvbGQgdmVyc2lvbnMgZGlkIG5vdCB1c2UgbW9ub3RvbmljIHRpbWVz
LgorICAgICAgICAgICAgaWYgKHN0YXJ0VGltZSA+IHRoaXMuX2NhcHR1cmluZ1N0YXJ0ZWRUaW1l
c3RhbXApIHsKKyAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSAoc3RhcnRUaW1lIC0gdGhpcy5f
Y2FwdHVyaW5nU3RhcnRlZFRpbWVzdGFtcCkgLyAxMDAwOworICAgICAgICAgICAgICAgIGVuZFRp
bWUgPSBpc05hTihlbmRUaW1lKSA/IE5hTiA6IChzdGFydFRpbWUgLSB0aGlzLl9jYXB0dXJpbmdT
dGFydGVkVGltZXN0YW1wKSAvIDEwMDA7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZh
ciBjYWxsRnJhbWVzID0gdGhpcy5fY2FsbEZyYW1lc0Zyb21QYXlsb2FkKHJlY29yZFBheWxvYWQu
c3RhY2tUcmFjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZUNvbnRlbnRWaWV3LmpzCmluZGV4IGJlNGE0
ZTdhODg0MTJiYzQwNzMzOGU1MTliMDViZmM5MjViNGUyMGQuLmEyMDNmMmUzMWZiMzk5Y2ViN2Vk
MDk0YTA5ZjNiMzVlYzBjOWYwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVDb250ZW50Vmlldy5qcwpA
QCAtOTgsNiArOTgsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVDb250ZW50VmlldyA9IGZ1bmN0
aW9uKHJlY29yZGluZykKICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudC5DYXB0dXJpbmdTdGFy
dGVkLCB0aGlzLl9jYXB0dXJpbmdTdGFydGVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IudGlt
ZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdl
ci5FdmVudC5DYXB0dXJpbmdTdG9wcGVkLCB0aGlzLl9jYXB0dXJpbmdTdG9wcGVkLCB0aGlzKTsK
IAorICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgdGhpcy5fZGVidWdnZXJQYXVz
ZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIHRoaXMuX2Rl
YnVnZ2VyUmVzdW1lZCwgdGhpcyk7CisKICAgICB0aGlzLnNob3dPdmVydmlld1RpbWVsaW5lVmll
dygpOwogfTsKIApAQCAtNDA3LDYgKzQxMCwyMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVDb250
ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3N0b3BVcGRhdGluZ0N1cnJlbnRU
aW1lKCk7CiAgICAgfSwKIAorICAgIF9kZWJ1Z2dlclBhdXNlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2Vzc2lvblN0YXRl
ID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUuUmVwbGF5aW5nKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3N0b3BVcGRhdGluZ0N1cnJlbnRU
aW1lKCk7CisgICAgfSwKKworICAgIF9kZWJ1Z2dlclJlc3VtZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Npb25TdGF0
ZSA9PT0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuU2Vzc2lvblN0YXRlLlJlcGxheWluZykK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9zdGFydFVwZGF0aW5nQ3VycmVu
dFRpbWUoKTsKKyAgICB9LAorCiAgICAgX3JlY29yZGluZ1RpbWVzVXBkYXRlZDogZnVuY3Rpb24o
ZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3dhaXRpbmdUb1Jlc2V0Q3VycmVudFRp
bWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238862</attachid>
            <date>2014-09-29 09:34:59 -0700</date>
            <delta_ts>2014-10-01 16:54:34 -0700</delta_ts>
            <desc>WIP - try to fix windows build</desc>
            <filename>bug-136351-20140929093434.patch</filename>
            <type>text/plain</type>
            <size>56578</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NzE1ODY4YmRmZjkzZTNmYmRmNmRiOTA4MDBkNzgxZjc1MmIxZDBmLi5kMDgyYjA5ZTg3NDFkMWFj
ODc3YzcxYjVlMThkN2Y0ZWIxMDUzNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxNC0wOS0yOCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291
bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0aGF0IHdlIGhhdmUgYSBz
dG9wd2F0Y2ggdG8gcHJvdmlkZSBwYXVzZS1hd2FyZSB0aW1pbmcgZGF0YSwgd2UgY2FuIHJlbW92
ZSB0aGUKKyAgICAgICAgcHJvZmlsZXIncyBoYW5kbGluZyBvZiBkZWJ1Z2dlciBwYXVzZS9jb250
aW51ZSBjYWxsYmFja3MuIFRoZSB0aW1lbGluZSBhZ2VudCBhY2NvdW50cworICAgICAgICBmb3Ig
ZGVidWdnZXIgcGF1c2VzIGJ5IHBhdXNpbmcgYW5kIHJlc3VtaW5nIHRoZSBzdG9wd2F0Y2guCisK
KyAgICAgICAgKiBBUEkvSlNQcm9maWxlclByaXZhdGUuY3BwOgorICAgICAgICAoSlNTdGFydFBy
b2ZpbGluZyk6IFVzZSBhIGZyZXNoIHN0b3B3YXRjaCB3aGVuIHByb2ZpbGluZyBmcm9tIHRoZSBK
U0MgQVBJLgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVQYXVzZSk6CisgICAgICAg
ICogcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpMZWdhY3lQcm9m
aWxlcjo6cHJvZmlsZXIpOiBVc2UgbnVsbHB0ci4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmls
ZXI6OnN0YXJ0UHJvZmlsaW5nKTogSGFuZCBvZmYgYSBzdG9wd2F0Y2ggdG8gdGhlIHByb2ZpbGUg
Z2VuZXJhdG9yLgorICAgICAgICAoSlNDOjpMZWdhY3lQcm9maWxlcjo6c3RvcFByb2ZpbGluZyk6
IFVzZSBudWxscHRyLgorICAgICAgICAoSlNDOjpMZWdhY3lQcm9maWxlcjo6ZGlkUGF1c2UpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpMZWdhY3lQcm9maWxlcjo6ZGlkQ29udGludWUpOiBEZWxl
dGVkLgorICAgICAgICAqIHByb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmg6CisgICAgICAgICogcHJv
ZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHA6IFJlbW92ZSBkZWJ1Z2dlciBwYXVzZS9jb250aW51
ZSBjYWxsYmFja3MgYW5kIHRoZQorICAgICAgICB0aW1lc3RhbXAgbWVtYmVyIHRoYXQgd2FzIHVz
ZWQgdG8gdHJhY2sgdGltZSBlbGFwc2VkIGJ5IHRoZSBkZWJ1Z2dlci4gSnVzdCB1c2UgdGhlCisg
ICAgICAgIHN0b3B3YXRjaCdzIGVsYXBzZWQgdGltZXMgdG8gZ2VuZXJhdGUgc3RhcnQvZWxhcHNl
ZCB0aW1lcyBmb3IgZnVuY3Rpb24gY2FsbHMuCisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6OlByb2ZpbGVHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpQcm9maWxlR2VuZXJhdG9yOjpiZWdpbkNhbGxFbnRyeSk6
CisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6OmVuZENhbGxFbnRyeSk6CisgICAgICAg
IChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6OmRpZFBhdXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6UHJvZmlsZUdlbmVyYXRvcjo6ZGlkQ29udGludWUpOiBEZWxldGVkLgorICAgICAgICAqIHBy
b2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuaDoKKwogMjAxNC0wOS0yNiAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgZnVuY3Rpb24uYXJndW1lbnRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDVlMmQ3NDRmMmM4Mzk0ZmVkNzg0YTJmMDJhNmMxZTNjZGJmZThkOGQuLmJlZGQ3Y2ViYzc1
NzY2MzI5NDNjZjJiMTdjMWFhMTNhOTY3MmUyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQt
MDktMjggIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IHRpbWVsaW5lcyBzaG91bGQgbm90IGNvdW50IHRpbWUgZWxhcHNlZCB3
aGlsZSBwYXVzZWQgaW4gdGhlIGRlYnVnZ2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdURi52Y3hwcm9qL1dURi52Y3hwcm9qOgorICAgICAgICAq
IFdURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIHd0Zi9TdG9wd2F0Y2guaDogQWRkZWQuIFRoaXMgaW1wbGVtZW50cyBhIHJlZmNvdW50ZWQg
bW9ub3RvbmljIHN0b3B3YXRjaC4KKyAgICAgICAgKFdURjo6U3RvcHdhdGNoOjpyZXNldCk6Cisg
ICAgICAgIChXVEY6OlN0b3B3YXRjaDo6c3RhcnQpOgorICAgICAgICAoV1RGOjpTdG9wd2F0Y2g6
OnN0b3ApOgorCiAyMDE0LTA5LTI2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmVwbGFjZSBPU09iamVjdFB0ciB3aXRoIFJldGFpblB0ci9hZG9wdE9TCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMjJkYjAxNWE1NWFkMmE4YzQ3ODg3N2MyODQ0N2IxMjgwMTk0OWRjMC4uNmVmY2NhMTlh
MDAyY2QyNTU0OWQ4YzkxZGFjY2I2MTQ2YjUwMTMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2
IEBACisyMDE0LTA5LTI4ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aW1lbGluZXMgc2hvdWxkIG5vdCBjb3VudCB0aW1l
IGVsYXBzZWQgd2hpbGUgcGF1c2VkIGluIHRoZSBkZWJ1Z2dlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gYXZvaWQgY291bnRpbmcgdGltZSBlbGFw
c2VkIHdoaWxlIHRoZSBkZWJ1Z2dlciBpcyBwYXVzZWQsIHRpbWVsaW5lIHJlY29yZHMgc2hvdWxk
CisgICAgICAgIGtlZXAgdHJhY2sgb2YgdGltZSBlbGFwc2VkIHNpbmNlIHRoZSBzdGFydCBvZiB0
aW1lbGluZSBjYXB0dXJpbmcsIHJhdGhlciB0aGFuIHdhbGwgY2xvY2sKKyAgICAgICAgdGltZXN0
YW1wcy4gV2UgY2FuIGVhc2lseSBjb21wdXRlIGVsYXBzZWQgdGltZSBieSBzaGFyaW5nIFN0b3B3
YXRjaCBpbnN0YW5jZSBhbW9uZworICAgICAgICBhbGwgdGltZWxpbmUgcmVjb3JkLWdlbmVyYXRp
bmcgY29kZS4gVGhlIHN0b3B3YXRjaCBpcyBwYXVzZWQgd2hpbGUgdGhlIGRlYnVnZ2VyIGlzIHBh
dXNlZCwKKyAgICAgICAgc28gc3Vic2VxdWVudCB0aW1lIG1lYXN1cmVtZW50cyB3aWxsIG5vdCBp
bmNsdWRlIHRpbWUgZWxhcHNlZCB3aGlsZSB0aGUgZGVidWdnZXIgaXMgcGF1c2VkLgorCisgICAg
ICAgIEFnZW50cyB1c2UgdGhlIHNoYXJlZCBzdG9wd2F0Y2ggdG8gZ2VuZXJhdGUgdGltZXN0YW1w
cyBpZiB0aGUgdGltZWxpbmUgYWdlbnQgaXMgYWN0aXZlCisgICAgICAgIChpLmUuLCBhIHRpbWVs
aW5lIHJlY29yZGluZyBpcyBiZWluZyBjYXB0dXJlZCkuIElmIG5vdCwgdXNlIGEgemVybyB0aW1l
c3RhbXAgc2luY2UgdGhlIHRpbWluZyBkYXRhIGlzIG9ubHkgcmV2ZWFsZWQgdGhyb3VnaCB0aGUg
VGltZWxpbmUgaW50ZXJmYWNlLgorCisgICAgICAgIFRoaXMgcmVmYWN0b3JpbmcgaXMgc2FmZSBi
ZWNhdXNlIHN0YXJ0IGFuZCBlbmQgdGltZXMgYXJlIG9ubHkgdXNlZCB0byBncmFwaCByZWNvcmRz
OyB0aGUKKyAgICAgICAgdGltZXN0YW1wJ3MgYWN0dWFsIHZhbHVlIGlzIGlycmVsZXZhbnQgYW5k
IGlzIG5vdCBkaXNwbGF5ZWQgaW4gdGhlIHVzZXIgaW50ZXJmYWNlLiBEYXRlCisgICAgICAgIHRp
bWVzdGFtcHMgYXJlIHN0aWxsIGluY2x1ZGVkIHdpdGggbmV0d29yay1yZWxhdGVkIHJlY29yZHMg
YXMgcGFydCBvZiB0aGVpciBoZWFkZXIgZGF0YS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJl
Y2F1c2Ugd2UgY2Fubm90IHJlbGlhYmx5IHRlc3QgdGltaW5nIGNoYW5nZXMgaW5kdWNlZCBieSBk
ZWJ1Z2dlciBwYXVzZXMuCisgICAgICAgIEl0IGlzIHBvc3NpYmxlIGZvciByZWNvcmRzIHRvIGFj
Y3J1ZSB0aW1lIGJlZm9yZSB0aGUgZGVidWdnZXIgcGF1c2VzIG9yIGFmdGVyIGl0IHJlc3VtZXMu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOiBSZW1vdmUgdW51
c2VkIGluY2x1ZGUuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
IFVzZSB0aW1lc3RhbXBzIGZyb20gdGhlIHNoYXJlZCBzdG9wd2F0Y2guCisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnRpbWVzdGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRvbUNvbnRlbnRFdmVudEZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bG9hZEV2ZW50RmlyZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHA6IFVzZSB0aW1lc3RhbXBzIGZyb20gdGhlIHNoYXJlZCBzdG9wd2F0
Y2guCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp0aW1lc3RhbXAp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVj
ZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZENsb3NlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRTZW5kV2ViU29ja2V0RnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2
ZVdlYlNvY2tldEZyYW1lRXJyb3IpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwOiBBZGQgY2FsbHMgdG8gcmVzZXQsIHN0YXJ0LCBhbmQgc3RvcCB0aGUgc3RvcHdhdGNoLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmludGVybmFsU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6aW50ZXJuYWxTdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0UHJvZmlsaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbENhbGxGdW5j
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRXZh
bHVhdGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
ZGlkUGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlk
Q29udGludWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50Ojp0aW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVUaW1lQ29udmVy
dGVyOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuaDogTWFrZSB0aW1lc3RhbXAoKSBwdWJsaWMsIGFuZCByZW1vdmUgb2xkIHRpbWVw
aWVjZXMuCisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVRpbWVDb252ZXJ0ZXI6OlRpbWVsaW5l
VGltZUNvbnZlcnRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVRpbWVD
b252ZXJ0ZXI6OmZyb21Nb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dGltZUNvbnZlcnRlcik6IERl
bGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6CisK
IDIwMTQtMDktMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQuIE1vdmUgUmVuZGVyVGhlbWVHdGsuaCBmcm9tIHBsYXRmb3Jt
L2d0ayB0byByZW5kZXJpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBjZGZkNjVmM2E5
NDdhZmEzYTcwZTdjMzAzZTgyNDNkZjAxZDI0NDQ3Li4xZTIzZDZkZjliYzgwODg3MTlmZjQ5ODNh
NWMyZjNmNzliYzM4M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBA
QAorMjAxNC0wOS0yOCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291bnQgdGltZSBl
bGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvbid0IHVwZGF0ZSB0aGUgdGltZWxpbmUncyBj
dXJyZW50IHRpbWUgd2hlbiB0aGUgZGVidWdnZXIgaXMgcGF1c2VkLgorCisgICAgICAgIFN0YXJ0
IGFuZCBlbmQgdGltZXMgZm9yIHRpbWVsaW5lIHJlY29yZHMgYXJlIG5vdyBpbiBzZWNvbmRzIGVs
YXBzZWQgc2luY2UgdGltZWxpbmUKKyAgICAgICAgcmVjb3JkaW5nIHN0YXJ0ZWQsIHJhdGhlciB0
aGFuIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guIEFkZCBhIHdvcmthcm91bmQgdG8KKyAg
ICAgICAgcHJlc2VydmUgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBiYWNrZW5kcy4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuY2FwdHVyaW5nU3RhcnRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5ldmVu
dFJlY29yZGVkLnByb2Nlc3NSZWNvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
TWFuYWdlci5wcm90b3R5cGUuZXZlbnRSZWNvcmRlZCk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9UaW1lbGluZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lQ29udGVudFZpZXcucHJvdG90eXBlLl9kZWJ1Z2dlclBhdXNlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVDb250ZW50Vmlldy5wcm90b3R5cGUuX2RlYnVnZ2VyUmVzdW1l
ZCk6CisKIDIwMTQtMDktMjcgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1
PgogCiAgICAgICAgIFdlYiBSZXBsYXk6IFBsYXliYWNrIHBvc2l0aW9uIHVwZGF0ZXMgc2hvdWxk
IGJlIHNlbnQgYmVmb3JlIHRoZSBuZXh0IGV2ZW50IGxvb3AgaW5wdXQgaXMgZGlzcGF0Y2hlZApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Byb2ZpbGVyUHJpdmF0ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNwcAppbmRl
eCAyYTVlYzJjODIzOTAxZWQ5ZTFiYmQ4MjRjZmE5YzYzZjhhODIzNjg2Li4zNWJhODNiYjYwODgx
YmFmNjRlZTdmNTBlYzQ4YjFiNWQ1ZDE2MTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNwcApAQCAtMzQsNyArMzQsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiB2b2lkIEpTU3RhcnRQcm9maWxpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNT
dHJpbmdSZWYgdGl0bGUpCiB7Ci0gICAgTGVnYWN5UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0YXJ0
UHJvZmlsaW5nKHRvSlMoY3R4KSwgdGl0bGUtPnN0cmluZygpKTsKKyAgICBMZWdhY3lQcm9maWxl
cjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmcodG9KUyhjdHgpLCB0aXRsZS0+c3RyaW5nKCks
IFN0b3B3YXRjaDo6Y3JlYXRlKCkpOwogfQogCiB2b2lkIEpTRW5kUHJvZmlsaW5nKEpTQ29udGV4
dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHRpdGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCAyYzc4M2FmNDc3NmQ2
MTU0ZjBmZjMyMzQ2MDc1ZjcxODRiMmUwYjQ5Li4zYTYxNjYzZTM2YzQ3N2MxMTczYjJjYzM4ODc5
M2QxNTJjYmYzOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkpT
SmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkph
dmFTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJMZWdhY3lQcm9maWxlci5oIgogI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTMwNywxNCArMzA2LDEyIEBAIHZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OmhhbmRsZUV4Y2VwdGlvbkluQnJlYWtwb2ludENvbmRpdGlvbihKU0M6OkV4
ZWNTdGF0ZSogZXhlCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVQYXVzZShEZWJ1Z2dl
cjo6UmVhc29uRm9yUGF1c2UsIEpTR2xvYmFsT2JqZWN0KiB2bUVudHJ5R2xvYmFsT2JqZWN0KQog
ewogICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2ZXI6OmRp
c3BhdGNoRGlkUGF1c2UpOwotICAgIExlZ2FjeVByb2ZpbGVyOjpwcm9maWxlcigpLT5kaWRQYXVz
ZShjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKSk7CiAgICAgZGlkUGF1c2Uodm1FbnRyeUdsb2Jh
bE9iamVjdCk7CiAKICAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSBmYWxzZTsK
ICAgICBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpOwogCiAgICAgZGlkQ29udGludWUodm1FbnRy
eUdsb2JhbE9iamVjdCk7Ci0gICAgTGVnYWN5UHJvZmlsZXI6OnByb2ZpbGVyKCktPmRpZENvbnRp
bnVlKGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpKTsKICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9M
aXN0ZW5lcnMoJlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZENvbnRpbnVlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5jcHAK
aW5kZXggM2E5OWNjNGVhMjBkNDdiMTYzZWRjMmFiMjlkNmNmMTAxYzRiMzI2YS4uZTYyNTBlOWFh
ZmEwZjdkOWJmNzQzZDNkZjdlZDZkM2I0ZjY2YWQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAj
aW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
Q29tbW9uSWRlbnRpZmllcnMuaCIKLSNpbmNsdWRlICJEZWJ1Z2dlckNhbGxGcmFtZS5oIgogI2lu
Y2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTUwLDE2ICs0OSwxNiBAQCBzdGF0aWMgdW5zaWdu
ZWQgUHJvZmlsZXNVSUQgPSAwOwogCiBzdGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElk
ZW50aWZpZXJGcm9tRnVuY3Rpb25JbXAoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBTdHJp
bmcmIGRlZmF1bHRTb3VyY2VVUkwsIHVuc2lnbmVkIGRlZmF1bHRMaW5lTnVtYmVyLCB1bnNpZ25l
ZCBkZWZhdWx0Q29sdW1uTnVtYmVyKTsKIAotTGVnYWN5UHJvZmlsZXIqIExlZ2FjeVByb2ZpbGVy
OjpzX3NoYXJlZExlZ2FjeVByb2ZpbGVyID0gMDsKK0xlZ2FjeVByb2ZpbGVyKiBMZWdhY3lQcm9m
aWxlcjo6c19zaGFyZWRMZWdhY3lQcm9maWxlciA9IG51bGxwdHI7CiAKIExlZ2FjeVByb2ZpbGVy
KiBMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKQogewogICAgIGlmICghc19zaGFyZWRMZWdhY3lQ
cm9maWxlcikKICAgICAgICAgc19zaGFyZWRMZWdhY3lQcm9maWxlciA9IG5ldyBMZWdhY3lQcm9m
aWxlcigpOwogICAgIHJldHVybiBzX3NoYXJlZExlZ2FjeVByb2ZpbGVyOwotfSAgIAorfQogCi12
b2lkIExlZ2FjeVByb2ZpbGVyOjpzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgdGl0bGUpCit2b2lkIExlZ2FjeVByb2ZpbGVyOjpzdGFydFByb2ZpbGluZyhFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPiBz
dG9wd2F0Y2gpCiB7CiAgICAgaWYgKCFleGVjKQogICAgICAgICByZXR1cm47CkBAIC03NSwxNCAr
NzQsMTQgQEAgdm9pZCBMZWdhY3lQcm9maWxlcjo6c3RhcnRQcm9maWxpbmcoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIH0KIAogICAgIGV4ZWMtPnZtKCkuc2V0RW5h
YmxlZFByb2ZpbGVyKHRoaXMpOwotICAgIFJlZlB0cjxQcm9maWxlR2VuZXJhdG9yPiBwcm9maWxl
R2VuZXJhdG9yID0gUHJvZmlsZUdlbmVyYXRvcjo6Y3JlYXRlKGV4ZWMsIHRpdGxlLCArK1Byb2Zp
bGVzVUlEKTsKKyAgICBSZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4gcHJvZmlsZUdlbmVyYXRvciA9
IFByb2ZpbGVHZW5lcmF0b3I6OmNyZWF0ZShleGVjLCB0aXRsZSwgKytQcm9maWxlc1VJRCwgc3Rv
cHdhdGNoKTsKICAgICBtX2N1cnJlbnRQcm9maWxlcy5hcHBlbmQocHJvZmlsZUdlbmVyYXRvcik7
CiB9CiAKIFBhc3NSZWZQdHI8UHJvZmlsZT4gTGVnYWN5UHJvZmlsZXI6OnN0b3BQcm9maWxpbmco
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIGlmICghZXhlYykK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSlNHbG9i
YWxPYmplY3QqIG9yaWdpbiA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBmb3Ig
KHB0cmRpZmZfdCBpID0gbV9jdXJyZW50UHJvZmlsZXMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkp
IHsKQEAgLTk0LDEyICs5MywxMiBAQCBQYXNzUmVmUHRyPFByb2ZpbGU+IExlZ2FjeVByb2ZpbGVy
OjpzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJgogICAgICAgICAg
ICAgbV9jdXJyZW50UHJvZmlsZXMucmVtb3ZlKGkpOwogICAgICAgICAgICAgaWYgKCFtX2N1cnJl
bnRQcm9maWxlcy5zaXplKCkpCiAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS5zZXRFbmFibGVk
UHJvZmlsZXIobnVsbHB0cik7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgcmV0dXJuIHJl
dHVyblByb2ZpbGU7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBMZWdhY3lQcm9maWxlcjo6c3RvcFByb2ZpbGluZyhKU0ds
b2JhbE9iamVjdCogb3JpZ2luKQpAQCAtMTY4LDI4ICsxNjcsNiBAQCB2b2lkIExlZ2FjeVByb2Zp
bGVyOjpleGNlcHRpb25VbndpbmQoRXhlY1N0YXRlKiBoYW5kbGVyQ2FsbEZyYW1lKQogICAgIGNh
bGxGdW5jdGlvbkZvclByb2ZpbGVzV2l0aEdyb3VwKHN0ZDo6YmluZCgmUHJvZmlsZUdlbmVyYXRv
cjo6ZXhjZXB0aW9uVW53aW5kLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzEsIGhhbmRsZXJDYWxsRnJh
bWUsIGNhbGxJZGVudGlmaWVyKSwgbV9jdXJyZW50UHJvZmlsZXMsIGhhbmRsZXJDYWxsRnJhbWUt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvZmlsZUdyb3VwKCkpOwogfQogCi12b2lkIExlZ2Fj
eVByb2ZpbGVyOjpkaWRQYXVzZShQYXNzUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiBwcnBDYWxs
RnJhbWUpCi17Ci0gICAgaWYgKG1fY3VycmVudFByb2ZpbGVzLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiBjYWxsRnJhbWUgPSBwcnBD
YWxsRnJhbWU7Ci0gICAgQ2FsbElkZW50aWZpZXIgY2FsbElkZW50aWZpZXIgPSBjcmVhdGVDYWxs
SWRlbnRpZmllcihjYWxsRnJhbWUtPmV4ZWMoKSwgSlNWYWx1ZSgpLCBTdHJpbmdJbXBsOjplbXB0
eSgpLCAwLCAwKTsKLQotICAgIGNhbGxGdW5jdGlvbkZvclByb2ZpbGVzV2l0aEdyb3VwKHN0ZDo6
YmluZCgmUHJvZmlsZUdlbmVyYXRvcjo6ZGlkUGF1c2UsIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMSwg
Y2FsbEZyYW1lLCBjYWxsSWRlbnRpZmllciksIG1fY3VycmVudFByb2ZpbGVzLCBjYWxsRnJhbWUt
PnZtRW50cnlHbG9iYWxPYmplY3QoKS0+cHJvZmlsZUdyb3VwKCkpOwotfQotCi12b2lkIExlZ2Fj
eVByb2ZpbGVyOjpkaWRDb250aW51ZShQYXNzUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiBwcnBD
YWxsRnJhbWUpCi17Ci0gICAgaWYgKG1fY3VycmVudFByb2ZpbGVzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiBjYWxsRnJhbWUgPSBw
cnBDYWxsRnJhbWU7Ci0gICAgQ2FsbElkZW50aWZpZXIgY2FsbElkZW50aWZpZXIgPSBjcmVhdGVD
YWxsSWRlbnRpZmllcihjYWxsRnJhbWUtPmV4ZWMoKSwgSlNWYWx1ZSgpLCBTdHJpbmdJbXBsOjpl
bXB0eSgpLCAwLCAwKTsKLQotICAgIGNhbGxGdW5jdGlvbkZvclByb2ZpbGVzV2l0aEdyb3VwKHN0
ZDo6YmluZCgmUHJvZmlsZUdlbmVyYXRvcjo6ZGlkQ29udGludWUsIHN0ZDo6cGxhY2Vob2xkZXJz
OjpfMSwgY2FsbEZyYW1lLCBjYWxsSWRlbnRpZmllciksIG1fY3VycmVudFByb2ZpbGVzLCBjYWxs
RnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+cHJvZmlsZUdyb3VwKCkpOwotfQotCiBDYWxs
SWRlbnRpZmllciBMZWdhY3lQcm9maWxlcjo6Y3JlYXRlQ2FsbElkZW50aWZpZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFNvdXJj
ZVVSTCwgdW5zaWduZWQgZGVmYXVsdExpbmVOdW1iZXIsIHVuc2lnbmVkIGRlZmF1bHRDb2x1bW5O
dW1iZXIpCiB7CiAgICAgaWYgKCFmdW5jdGlvblZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuaAppbmRleCA3ZTc5Y2JjYzA5NmMwZTNlYWQ3
ODUyNTc1MWM5NTMxZjc1ODgzMGU5Li4zYTFjZGY5NDhjZDBlYzk5YzU4MjdjMjZiMGQ1MzEwZGZm
NTIxZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5
UHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJv
ZmlsZXIuaApAQCAtMzIsMTMgKzMyLDEyIEBACiAjaW5jbHVkZSAiUHJvZmlsZS5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9TdG9wd2F0Y2guaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCi1jbGFzcyBEZWJ1Z2dlckNhbGxGcmFtZTsKIGNsYXNzIEV4ZWNTdGF0ZTsKLWNsYXNz
IFZNOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpTVmFs
dWU7CkBAIC00OCwxMCArNDcsMTAgQEAgc3RydWN0IENhbGxJZGVudGlmaWVyOwogY2xhc3MgTGVn
YWN5UHJvZmlsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMZWdhY3lQcm9maWxlciogcHJvZmlsZXIoKTsgCisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlcigpOwog
ICAgIHN0YXRpYyBDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxsSWRlbnRpZmllcihFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBkZWZhdWx0
TGluZU51bWJlciwgdW5zaWduZWQgZGVmYXVsdENvbHVtbk51bWJlcik7CiAKLSAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHN0YXJ0UHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3Ry
aW5nJiB0aXRsZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydFByb2ZpbGluZyhF
eGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIFBhc3NSZWZQdHI8U3RvcHdhdGNo
Pik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxQcm9maWxlPiBzdG9wUHJvZmls
aW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSk7CiAgICAgdm9pZCBzdG9w
UHJvZmlsaW5nKEpTR2xvYmFsT2JqZWN0Kik7CiAKQEAgLTYyLDkgKzYxLDYgQEAgcHVibGljOgog
CiAgICAgdm9pZCBleGNlcHRpb25VbndpbmQoRXhlY1N0YXRlKiBoYW5kbGVyQ2FsbEZyYW1lKTsK
IAotICAgIHZvaWQgZGlkUGF1c2UoUGFzc1JlZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4pOwotICAg
IHZvaWQgZGlkQ29udGludWUoUGFzc1JlZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4pOwotCiAgICAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxQcm9maWxlR2VuZXJhdG9yPj4mIGN1cnJlbnRQcm9maWxlcygp
IHsgcmV0dXJuIG1fY3VycmVudFByb2ZpbGVzOyB9OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwCmluZGV4IDdl
NDM0NDZmMzUwYTQ2ZTc1M2U5Y2NjNGE5ZDk3OTE0OTQ1N2JkOWEuLjIyY2IxMGYxZjIxOGZjYTE4
ZmNkYTVjYTA3NjNhMTlmZmI1ZTVjYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lu
Y2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkRl
YnVnZ2VyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmlu
Z1JlZi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTQwLDIwICszOSwxNyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotUGFzc1JlZlB0cjxQcm9maWxlR2VuZXJhdG9yPiBQcm9maWxlR2Vu
ZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNp
Z25lZCB1aWQpCitQYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IFByb2ZpbGVHZW5lcmF0b3I6
OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVp
ZCwgUGFzc1JlZlB0cjxTdG9wd2F0Y2g+IHN0b3B3YXRjaCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFByb2ZpbGVHZW5lcmF0b3IoZXhlYywgdGl0bGUsIHVpZCkpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUHJvZmlsZUdlbmVyYXRvcihleGVjLCB0aXRsZSwgdWlkLCBzdG9wd2F0Y2gp
KTsKIH0KIAotUHJvZmlsZUdlbmVyYXRvcjo6UHJvZmlsZUdlbmVyYXRvcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCkKK1Byb2ZpbGVHZW5lcmF0b3I6
OlByb2ZpbGVHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1
bnNpZ25lZCB1aWQsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPiBzdG9wd2F0Y2gpCiAgICAgOiBtX29y
aWdpbihleGVjID8gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpIDogbnVsbHB0cikKICAgICAs
IG1fcHJvZmlsZUdyb3VwKGV4ZWMgPyBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb2Zp
bGVHcm91cCgpIDogMCkKLSAgICAsIG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXAoTkFOKQorICAg
ICwgbV9zdG9wd2F0Y2goc3RvcHdhdGNoKQogICAgICwgbV9mb3VuZENvbnNvbGVTdGFydFBhcmVu
dChmYWxzZSkKIHsKLSAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKQotICAgICAgICBtX2RlYnVnZ2VyUGF1c2VkVGltZXN0
YW1wID0gZGVidWdnZXItPmlzUGF1c2VkKCkgPyBjdXJyZW50VGltZSgpIDogTkFOOwotCiAgICAg
bV9wcm9maWxlID0gUHJvZmlsZTo6Y3JlYXRlKHRpdGxlLCB1aWQpOwogICAgIG1fY3VycmVudE5v
ZGUgPSBtX3Jvb3ROb2RlID0gbV9wcm9maWxlLT5yb290Tm9kZSgpOwogICAgIGlmIChleGVjKQpA
QCAtMTE3LDEyICsxMTMsNyBAQCB2b2lkIFByb2ZpbGVHZW5lcmF0b3I6OmJlZ2luQ2FsbEVudHJ5
KFByb2ZpbGVOb2RlKiBub2RlLCBkb3VibGUgc3RhcnRUaW1lKQogICAgIEFTU0VSVF9BUkcobm9k
ZSwgbm9kZSk7CiAKICAgICBpZiAoaXNuYW4oc3RhcnRUaW1lKSkKLSAgICAgICAgc3RhcnRUaW1l
ID0gY3VycmVudFRpbWUoKTsKLQotICAgIC8vIElmIHRoZSBkZWJ1Z2dlciBpcyBwYXVzZWQgd2hl
biBiZWdpbm5pbmcsIHRoZW4gZG9uJ3Qgc2V0IHRoZSBzdGFydCB0aW1lLiBJdAotICAgIC8vIHdp
bGwgYmUgZml4ZWQgdXAgd2hlbiB0aGUgZGVidWdnZXIgdW5wYXVzZXMgb3IgdGhlIGNhbGwgZW50
cnkgZW5kcy4KLSAgICBpZiAoIWlzbmFuKG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApKQotICAg
ICAgICBzdGFydFRpbWUgPSBOQU47CisgICAgICAgIHN0YXJ0VGltZSA9IG1fc3RvcHdhdGNoLT5l
bGFwc2VkVGltZSgpOwogCiAgICAgbm9kZS0+YXBwZW5kQ2FsbChQcm9maWxlTm9kZTo6Q2FsbChz
dGFydFRpbWUpKTsKIH0KQEAgLTEzMiwyMiArMTIzLDggQEAgdm9pZCBQcm9maWxlR2VuZXJhdG9y
OjplbmRDYWxsRW50cnkoUHJvZmlsZU5vZGUqIG5vZGUpCiAgICAgQVNTRVJUX0FSRyhub2RlLCBu
b2RlKTsKIAogICAgIFByb2ZpbGVOb2RlOjpDYWxsJiBsYXN0ID0gbm9kZS0+bGFzdENhbGwoKTsK
LQotICAgIC8vIElmIHRoZSBkZWJ1Z2dlciBpcyBwYXVzZWQsIGlnbm9yZSB0aGUgaW50ZXJ2YWwg
dGhhdCBlbmRzIG5vdy4KLSAgICBpZiAoIWlzbmFuKG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXAp
ICYmICFpc25hbihsYXN0LmVsYXBzZWRUaW1lKCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyBJZiBwYXVzZWQgYW5kIG5vIHRpbWUgd2FzIGFjY3J1ZWQgdGhlbiB0aGUgZGVidWdnZXIgd2Fz
IG5ldmVyIHVucGF1c2VkLiBUaGUgY2FsbCB3aWxsCi0gICAgLy8gaGF2ZSBubyB0aW1lIGFjY3J1
ZWQgYW5kIGFwcGVhciB0byBoYXZlIHN0YXJ0ZWQgd2hlbiB0aGUgZGVidWdnZXIgd2FzIHBhdXNl
ZC4KLSAgICBpZiAoIWlzbmFuKG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApKSB7Ci0gICAgICAg
IGxhc3Quc2V0U3RhcnRUaW1lKG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApOwotICAgICAgICBs
YXN0LnNldEVsYXBzZWRUaW1lKDAuMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAv
LyBPdGhlcndpc2UsIGFkZCB0aGUgaW50ZXJ2YWwgZW5kaW5nIG5vdyB0byBlbGFwc2VkIHRpbWUu
CiAgICAgZG91YmxlIHByZXZpb3VzRWxhcHNlZFRpbWUgPSBpc25hbihsYXN0LmVsYXBzZWRUaW1l
KCkpID8gMC4wIDogbGFzdC5lbGFwc2VkVGltZSgpOwotICAgIGRvdWJsZSBuZXdseUVsYXBzZWRU
aW1lID0gY3VycmVudFRpbWUoKSAtIGxhc3Quc3RhcnRUaW1lKCk7CisgICAgZG91YmxlIG5ld2x5
RWxhcHNlZFRpbWUgPSBtX3N0b3B3YXRjaC0+ZWxhcHNlZFRpbWUoKSAtIGxhc3Quc3RhcnRUaW1l
KCk7CiAgICAgbGFzdC5zZXRFbGFwc2VkVGltZShwcmV2aW91c0VsYXBzZWRUaW1lICsgbmV3bHlF
bGFwc2VkVGltZSk7CiB9CiAKQEAgLTIxNiwzMyArMTkzLDYgQEAgdm9pZCBQcm9maWxlR2VuZXJh
dG9yOjpleGNlcHRpb25VbndpbmQoRXhlY1N0YXRlKiBoYW5kbGVyQ2FsbEZyYW1lLCBjb25zdCBD
YWxsSWQKICAgICB9CiB9CiAKLXZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6ZGlkUGF1c2UoUGFzc1Jl
ZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4sIGNvbnN0IENhbGxJZGVudGlmaWVyJikKLXsKLSAgICBB
U1NFUlQoaXNuYW4obV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCkpOwotCi0gICAgbV9kZWJ1Z2dl
clBhdXNlZFRpbWVzdGFtcCA9IGN1cnJlbnRUaW1lKCk7Ci0KLSAgICBmb3IgKFByb2ZpbGVOb2Rl
KiBub2RlID0gbV9jdXJyZW50Tm9kZS5nZXQoKTsgbm9kZSAhPSBtX3Byb2ZpbGUtPnJvb3ROb2Rl
KCk7IG5vZGUgPSBub2RlLT5wYXJlbnQoKSkgewotICAgICAgICBQcm9maWxlTm9kZTo6Q2FsbCYg
bGFzdCA9IG5vZGUtPmxhc3RDYWxsKCk7Ci0gICAgICAgIEFTU0VSVCghaXNuYW4obGFzdC5zdGFy
dFRpbWUoKSkpOwotCi0gICAgICAgIGRvdWJsZSBwcmV2aW91c0VsYXBzZWRUaW1lID0gaXNuYW4o
bGFzdC5lbGFwc2VkVGltZSgpKSA/IDAuMCA6IGxhc3QuZWxhcHNlZFRpbWUoKTsKLSAgICAgICAg
ZG91YmxlIGFkZGl0aW9uYWxFbGFwc2VkVGltZSA9IG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXAg
LSBsYXN0LnN0YXJ0VGltZSgpOwotICAgICAgICBsYXN0LnNldFN0YXJ0VGltZShOQU4pOwotICAg
ICAgICBsYXN0LnNldEVsYXBzZWRUaW1lKHByZXZpb3VzRWxhcHNlZFRpbWUgKyBhZGRpdGlvbmFs
RWxhcHNlZFRpbWUpOwotICAgIH0KLX0KLQotdm9pZCBQcm9maWxlR2VuZXJhdG9yOjpkaWRDb250
aW51ZShQYXNzUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiwgY29uc3QgQ2FsbElkZW50aWZpZXIm
KQotewotICAgIEFTU0VSVCghaXNuYW4obV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCkpOwotCi0g
ICAgZm9yIChQcm9maWxlTm9kZSogbm9kZSA9IG1fY3VycmVudE5vZGUuZ2V0KCk7IG5vZGUgIT0g
bV9wcm9maWxlLT5yb290Tm9kZSgpOyBub2RlID0gbm9kZS0+cGFyZW50KCkpCi0gICAgICAgIG5v
ZGUtPmxhc3RDYWxsKCkuc2V0U3RhcnRUaW1lKG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApOwot
Ci0gICAgbV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCA9IE5BTjsKLX0KLQogdm9pZCBQcm9maWxl
R2VuZXJhdG9yOjpzdG9wUHJvZmlsaW5nKCkKIHsKICAgICBmb3IgKFByb2ZpbGVOb2RlKiBub2Rl
ID0gbV9jdXJyZW50Tm9kZS5nZXQoKTsgbm9kZSAhPSBtX3Byb2ZpbGUtPnJvb3ROb2RlKCk7IG5v
ZGUgPSBub2RlLT5wYXJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZUdlbmVyYXRvci5oCmluZGV4IDdjOTcwZDY5Y2M2NzhlYzY1ZGI2NzhjNmZlZGQ1
OGJkMGZlZmZhNDAuLjA1OThkZGU5ODJlNmYzYzYxNjdlNDEzNzljMmViYTMzYzhmY2Q0YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3Iu
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTQyLDcgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBQcm9maWxlR2VuZXJhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8UHJvZmlsZUdlbmVyYXRvcj4g
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0
b3I+IGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIHVuc2lnbmVk
IHVpZCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IGNyZWF0
ZShFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCwgUGFz
c1JlZlB0cjxTdG9wd2F0Y2g+KTsKIAogICAgICAgICAvLyBNZW1iZXJzCiAgICAgICAgIGNvbnN0
IFdURjo6U3RyaW5nJiB0aXRsZSgpIGNvbnN0OwpAQCAtNTQsMTUgKzU1LDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGRpZEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJh
bWUsIGNvbnN0IENhbGxJZGVudGlmaWVyJik7CiAgICAgICAgIHZvaWQgZXhjZXB0aW9uVW53aW5k
KEV4ZWNTdGF0ZSogaGFuZGxlckNhbGxGcmFtZSwgY29uc3QgQ2FsbElkZW50aWZpZXImKTsKIAot
ICAgICAgICB2b2lkIGRpZFBhdXNlKFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+LCBjb25z
dCBDYWxsSWRlbnRpZmllciYpOwotICAgICAgICB2b2lkIGRpZENvbnRpbnVlKFBhc3NSZWZQdHI8
RGVidWdnZXJDYWxsRnJhbWU+LCBjb25zdCBDYWxsSWRlbnRpZmllciYpOwotCiAgICAgICAgIHZv
aWQgc3RvcFByb2ZpbGluZygpOwogCiAgICAgICAgIHR5cGVkZWYgdm9pZCAoUHJvZmlsZUdlbmVy
YXRvcjo6KlByb2ZpbGVGdW5jdGlvbikoRXhlY1N0YXRlKiBjYWxsZXJPckhhbmRsZXJDYWxsRnJh
bWUsIGNvbnN0IENhbGxJZGVudGlmaWVyJiBjYWxsSWRlbnRpZmllcik7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBQcm9maWxlR2VuZXJhdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5n
JiB0aXRsZSwgdW5zaWduZWQgdWlkKTsKKyAgICAgICAgUHJvZmlsZUdlbmVyYXRvcihFeGVjU3Rh
dGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCwgUGFzc1JlZlB0cjxT
dG9wd2F0Y2g+KTsKICAgICAgICAgdm9pZCBhZGRQYXJlbnRGb3JDb25zb2xlU3RhcnQoRXhlY1N0
YXRlKik7CiAKICAgICAgICAgdm9pZCByZW1vdmVQcm9maWxlU3RhcnQoKTsKQEAgLTc0LDggKzcy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxQcm9maWxlPiBtX3Byb2ZpbGU7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBtX29yaWdpbjsKICAgICAgICAgdW5zaWduZWQgbV9w
cm9maWxlR3JvdXA7Ci0gICAgICAgIC8vIFRpbWVzdGFtcCBpcyBzZXQgdG8gTkFOIHdoZW4gdGhl
IGRlYnVnZ2VyIGlzIG5vdCBjdXJyZW50bHkgcGF1c2VkLgotICAgICAgICBkb3VibGUgbV9kZWJ1
Z2dlclBhdXNlZFRpbWVzdGFtcDsKKyAgICAgICAgUmVmUHRyPFN0b3B3YXRjaD4gbV9zdG9wd2F0
Y2g7CiAgICAgICAgIFJlZlB0cjxQcm9maWxlTm9kZT4gbV9yb290Tm9kZTsKICAgICAgICAgUmVm
UHRyPFByb2ZpbGVOb2RlPiBtX2N1cnJlbnROb2RlOwogICAgICAgICBib29sIG1fZm91bmRDb25z
b2xlU3RhcnRQYXJlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52
Y3hwcm9qIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagppbmRleCA4YWIxYTQz
MzFhNjhhNDQ3ZWM0OWVlYWY0NWU1NGMzYWNjNzI3ODg1Li43ODg5ZTJhOTg2MjkwZmRkODU4ZWRl
MmY3NDIyZGEwMTVhMGJlNjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dU
Ri52Y3hwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKQEAgLTI3
MCw2ICsyNzAsNyBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0YWNrQm91bmRzLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3RhdGljQ29uc3RydWN0b3JzLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3RkTGliRXh0cmFzLmgiIC8+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcU3RvcHdhdGNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlx3dGZcU3RyaW5nRXh0cmFzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3
dGZcU3RyaW5nSGFzaGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3Ry
aW5nUHJpbnRTdHJlYW0uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ov
V1RGLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ou
ZmlsdGVycwppbmRleCBkNWU1NjA4M2I3MDBkZTZhYjk5MTIyYjIxOTFlMDJiMTg0NDg1YTg4Li4w
YjM2ZTIyODYxZDE2YmI5ZWYzYTBhOWQyMzM3ZmFhNmRkMzllMDY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dURi9X
VEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCkBAIC02MTIsNiArNjEyLDkgQEAg77u/PD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHd0ZlxTdGRMaWJFeHRyYXMuaCI+CiAgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0b3B3YXRj
aC5oIj4KKyAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3RyaW5nRXh0cmFzLmgiPgogICAgICAgPEZpbHRl
cj53dGY8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGQzM2YwZDU3OTEyOTEzYmRkNGNlMjQ4YzgzOGE3MGY0NWU3
NTAzZTcuLmZlYTg4NjNmNTk3NDFhZTAyYTkyYjE2YTcwNDNjZDRhNGFlYjg3MWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjcxLDYgKzI3MSw3IEBACiAJ
CUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM3QjE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGVGhyZWFkRGF0YS5oICovOyB9OwogCQlBOEE0NzQ4QzE1MUE4MjY0MDA0MTIzRkYg
LyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmggKi87IH07CiAJCUIzOEZEN0JE
MTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVmaW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZl
YXR1cmVEZWZpbmVzLmggKi87IH07CisJCUM0RjhBOTM3MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9w
d2F0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0
RjhBOTM2MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0Y2guaCAqLzsgfTsKIAkJQ0Q1NDk3QUMx
NTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFU
aW1lLmNwcCAqLzsgfTsKIAkJQ0Q1NDk3QUQxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUIx
NTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovOyB9OwogCQlFMTU1NTZGNTE4QTBDQzE4
MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyog
Q3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi87IH07CkBAIC01NjAsNiArNTYxLDcgQEAKIAkJ
QThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV1RGVGhyZWFkRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCMzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmVhdHVyZURlZmluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRj
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9wd2F0Y2guaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NDk3QUExNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlh
VGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVRpbWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0OTdBQjE1ODU3RDAzMDBCNUJD
MzAgLyogTWVkaWFUaW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlh
VGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGMzE4QTBDQzE4MDA2
RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTg0OSw2ICs4NTEsNyBAQAogCQkJCUZFREFDRDNDMTYzMEY4M0Yw
MEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8sCiAJCQkJQThBNDczMTAxNTFBODI1QjAwNDEyM0ZG
IC8qIFN0YXRpY0NvbnN0cnVjdG9ycy5oICovLAogCQkJCUE4QTQ3MzExMTUxQTgyNUIwMDQxMjNG
RiAvKiBTdGRMaWJFeHRyYXMuaCAqLywKKwkJCQlDNEY4QTkzNjE5QzY1RUI0MDBCMkIxNUQgLyog
U3RvcHdhdGNoLmggKi8sCiAJCQkJMUE2QkI3NjgxNjJGMzAwNTAwREQxNkRCIC8qIFN0cmVhbUJ1
ZmZlci5oICovLAogCQkJCUE4QTQ3MzEzMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdFeHRyYXMu
aCAqLywKIAkJCQlBNzQ4NzQ1MTE3QTBCREFFMDBGQTA0Q0IgLyogU3RyaW5nSGFzaER1bXBDb250
ZXh0LmggKi8sCkBAIC0xMDQyLDYgKzEwNDUsNyBAQAogCQkJCUE4QTQ3M0EzMTUxQTgyNUIwMDQx
MjNGRiAvKiBEZWNpbWFsTnVtYmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBNjE3QjZC
NEZCMDBBN0FFM0YgLyogRGVmZXJyYWJsZVJlZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4QTQ3M0E1MTUxQTgyNUIwMDQxMjNGRiAvKiBEZXF1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QzRGOEE5MzcxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDczQTYxNTFBODI1QjAwNDEyM0ZGIC8qIERpc2FsbG93Q1R5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3M0FGMTUxQTgyNUIwMDQxMjNGRiAvKiBkaXktZnAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3M0IxMTUxQTgyNUIwMDQxMjNGRiAvKiBkb3VibGUtY29udmVyc2lvbi5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGY1MDQwZjk4ZmM1OTVlYmNh
ODE5ZmVjZDAxNWFhMDBiMmVhMTBiZTUuLjI1OGJjNmJlMmYyMGEyZjliNTY4YmEwZTg4NDZlMzhk
YjQ0YmM3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC05Myw2ICs5Myw3IEBAIHNldChXVEZf
SEVBREVSUwogICAgIFN0YWNrU3RhdHMuaAogICAgIFN0YXRpY0NvbnN0cnVjdG9ycy5oCiAgICAg
U3RkTGliRXh0cmFzLmgKKyAgICBTdG9wd2F0Y2guaAogICAgIFN0cmluZ0V4dHJhcy5oCiAgICAg
U3RyaW5nSGFzaGVyLmgKICAgICBTdHJpbmdQcmludFN0cmVhbS5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9TdG9wd2F0Y2guaCBiL1NvdXJjZS9XVEYvd3RmL1N0b3B3YXRjaC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc4NWJlMTkxYzNkYjNhNGFlODc1NGQyYjVkNjBlODg3ZGNlZGY4MjIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdG9wd2F0Y2guaApAQCAtMCwwICsxLDk3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFN0b3B3YXRjaF9oCisjZGVmaW5lIFN0b3B3YXRjaF9oCisKKyNp
bmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0b3B3YXRjaCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0b3B3YXRjaD4geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0b3B3YXRjaD4gY3JlYXRlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RvcHdhdGNoKCkpOworICAgIH0KKworICAgIHZvaWQg
cmVzZXQoKTsKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisKKyAgICBkb3Vi
bGUgZWxhcHNlZFRpbWUoKTsKKworcHJpdmF0ZToKKyAgICBTdG9wd2F0Y2goKQorICAgICAgICA6
IG1fZWxhcHNlZFRpbWUoTkFOKQorICAgICAgICAsIG1fbGFzdFN0YXJ0VGltZShOQU4pCisgICAg
eworICAgIH0KKworICAgIGRvdWJsZSBtX2VsYXBzZWRUaW1lOworICAgIGRvdWJsZSBtX2xhc3RT
dGFydFRpbWU7Cit9OworCitpbmxpbmUgdm9pZCBTdG9wd2F0Y2g6OnJlc2V0KCkKK3sKKyAgICBt
X2VsYXBzZWRUaW1lID0gMC4wOworICAgIG1fbGFzdFN0YXJ0VGltZSA9IE5BTjsKK30KKworaW5s
aW5lIHZvaWQgU3RvcHdhdGNoOjpzdGFydCgpCit7CisgICAgQVNTRVJUKCFpc25hbihtX2VsYXBz
ZWRUaW1lKSAmJiBpc25hbihtX2xhc3RTdGFydFRpbWUpKTsKKworICAgIG1fbGFzdFN0YXJ0VGlt
ZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworfQorCitpbmxpbmUgdm9pZCBTdG9w
d2F0Y2g6OnN0b3AoKQoreworICAgIEFTU0VSVCghaXNuYW4obV9lbGFwc2VkVGltZSkgJiYgIWlz
bmFuKG1fbGFzdFN0YXJ0VGltZSkpOworCisgICAgbV9lbGFwc2VkVGltZSArPSBtb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fbGFzdFN0YXJ0VGltZTsKKyAgICBtX2xhc3RTdGFydFRp
bWUgPSBOQU47Cit9CisKK2lubGluZSBkb3VibGUgU3RvcHdhdGNoOjplbGFwc2VkVGltZSgpCit7
CisgICAgYm9vbCBzaG91bGRTdXNwZW5kID0gIWlzbmFuKG1fbGFzdFN0YXJ0VGltZSk7CisgICAg
aWYgKHNob3VsZFN1c3BlbmQpCisgICAgICAgIHN0b3AoKTsKKworICAgIEFTU0VSVCghaXNuYW4o
bV9lbGFwc2VkVGltZSkgJiYgaXNuYW4obV9sYXN0U3RhcnRUaW1lKSk7CisgICAgZG91YmxlIGVs
YXBzZWRUaW1lID0gbV9lbGFwc2VkVGltZTsKKworICAgIGlmIChzaG91bGRTdXNwZW5kKQorICAg
ICAgICBzdGFydCgpOworICAgIHJldHVybiBlbGFwc2VkVGltZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKK3VzaW5nIFdURjo6U3RvcHdhdGNoOworCisjZW5kaWYgLy8gU3RvcHdhdGNoX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4
IDJjNzNkYjlmZDRiZWNkYTQ0NGRlOWYzYjgwMzc4NzZhYTI4YTczN2IuLjgxNWM5ZGMyNWIyN2Fh
ZWViZGUzODFmMWJiNjQwMTNlNjY4ODMyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNTcsNyArNTcsNiBAQAogI2luY2x1ZGUgIlN0
eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0TmFtZWRGbG93LmgiCiAjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKaW5kZXggZWI4YTQ5MjJiYTkyZTdiZjM1YjA2MGM1YWRlMGY1MzQ3OGE4
M2E2NS4uZTA5Nzg1YmExMjMwNzRlZWRhODE2NmU2YTRjOThmMDgxMjRkOTkyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTU3LDYg
KzU3LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2Vi
RnJvbnRlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIK
ICNpbmNsdWRlICJNYWluRnJhbWUuaCIKQEAgLTczLDcgKzc0LDYgQEAKICNpbmNsdWRlIDxpbnNw
ZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JZGVu
dGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5o
PgpAQCAtMzYxLDYgKzM2MSwxNiBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbgogI2VuZGlmCiB9
CiAKK2RvdWJsZSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnRpbWVzdGFtcCgpCit7CisgICAgLy8gSWYg
dGhlIHRpbWVsaW5lIGFnZW50IGlzIHJlY29yZGluZyBub3csIHVzZSBpdHMgc3RvcHdhdGNoLiBP
dGhlcndpc2UsIGp1c3QgcmVwb3J0IDAuMAorICAgIC8vIHNpbmNlIHRoZSB0aW1lc3RhbXBzIGFy
ZSBvbmx5IHVzZWQgdG8gYWNjdXJhdGVseSBncmFwaCByZWNvcmRzIG9uIHRoZSB0aW1lbGluZS4K
KyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IG1faW5zdHJ1
bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgICAgICByZXR1cm4g
dGltZWxpbmVBZ2VudC0+dGltZXN0YW1wKCk7CisKKyAgICByZXR1cm4gMC4wOworfQorCiB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIHsKICAgICBtX2VuYWJs
ZWQgPSB0cnVlOwpAQCAtNzUxLDEyICs3NjEsMTIgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3IK
IHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpkb21Db250ZW50RXZlbnRGaXJlZCgpCiB7CiAgICAg
bV9pc0ZpcnN0TGF5b3V0QWZ0ZXJPbkxvYWQgPSB0cnVlOwotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5kb21Db250ZW50RXZlbnRGaXJlZChjdXJyZW50VGltZSgpKTsKKyAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+ZG9tQ29udGVudEV2ZW50RmlyZWQodGltZXN0YW1wKCkpOwogfQogCiB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6bG9hZEV2ZW50RmlyZWQoKQogewotICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5sb2FkRXZlbnRGaXJlZChjdXJyZW50VGltZSgpKTsKKyAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+bG9hZEV2ZW50RmlyZWQodGltZXN0YW1wKCkpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCAyNWZl
MWQ1YTYwM2FlMTMyMDdlMTRiMzQzMDgxZTY3ZDdiZTJlYWU3Li41ZGEwMTVjN2ZmMTU4MzYyZjY0
YWJiNTUxY2Q3YWFkZDgzY2FhZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCkBAIC0xNjcsNiArMTY3LDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHVwZGF0ZVRvdWNoRXZlbnRFbXVsYXRpb25JblBhZ2UoYm9vbCk7CiAjZW5kaWYKIAorICAgIGRv
dWJsZSB0aW1lc3RhbXAoKTsKKwogICAgIHN0YXRpYyBib29sIG1haW5SZXNvdXJjZUNvbnRlbnQo
RnJhbWUqLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0
aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5n
KiByZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggOTA3ODFhMjczZGRkODExNjA0YzY3NDM2M2E0YWFjMGE1
YTFjNzE4NS4uY2UzYjc3YTY2YWRlYTZiMWI0MmY3Yzg2OTgwYjk1N2VhZDYwNzUzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkljb25Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgi
CiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCkBAIC02OSw3ICs3MCw2IEBACiAj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPGluc3BlY3Rv
ci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTI3Niw2
ICsyNzYsMTYgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fkluc3BlY3RvclJlc291cmNlQWdl
bnQoKQogICAgIEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KCkpOwogfQogCitkb3VibGUgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6dGltZXN0YW1w
KCkKK3sKKyAgICAvLyBJZiB0aGUgdGltZWxpbmUgYWdlbnQgaXMgcmVjb3JkaW5nIG5vdywgdXNl
IGl0cyBzdG9wd2F0Y2guIE90aGVyd2lzZSwganVzdCByZXBvcnQgMC4wCisgICAgLy8gc2luY2Ug
dGhlIHRpbWVzdGFtcHMgYXJlIG9ubHkgdXNlZCB0byBhY2N1cmF0ZWx5IGdyYXBoIHJlY29yZHMg
b24gdGhlIHRpbWVsaW5lLgorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkp
CisgICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT50aW1lc3RhbXAoKTsKKworICAgIHJldHVy
biAwLjA7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKQogewogICAgIGlmIChyZXF1ZXN0LmhpZGRlbkZyb21JbnNwZWN0b3IoKSkgewpAQCAtMzIw
LDcgKzMzMCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMCiAgICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSA9IEluc3BlY3RvclBhZ2VBZ2Vu
dDo6cmVzb3VyY2VUeXBlSnNvbih0eXBlKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9y
T2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51
bGxwdHIpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1
ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50
LT5sb2FkZXJJZChsb2FkZXIpLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBidWlsZE9iamVjdEZv
clJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0
LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSwgbG9hZGVy
KSwgdHlwZSAhPSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgPyAmcmVzb3VyY2VU
eXBlIDogbnVsbHB0cik7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RXaWxsQmVT
ZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgbV9w
YWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciksIGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCB0aW1lc3RhbXAoKSwgaW5pdGlhdG9y
T2JqZWN0LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSwg
bG9hZGVyKSwgdHlwZSAhPSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgPyAmcmVz
b3VyY2VUeXBlIDogbnVsbHB0cik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
bWFya1Jlc291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQpAQCAtMzY1LDcg
KzM3NSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5y
ZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5m
cmFtZSgpKSwgcmVzcG9uc2UpOwogICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VUeXBl
KHJlcXVlc3RJZCwgdHlwZSk7CiAKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzcG9uc2VS
ZWNlaXZlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSks
IG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBjdXJyZW50VGltZSgpLCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24odHlwZSksIHJlc291cmNlUmVzcG9uc2UpOworICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJZCwgbV9wYWdl
QWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxv
YWRlciksIHRpbWVzdGFtcCgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24o
dHlwZSksIHJlc291cmNlUmVzcG9uc2UpOwogCiAgICAgLy8gSWYgd2UgcmV2YWxpZGF0ZWQgdGhl
IHJlc291cmNlIGFuZCBnb3QgTm90IG1vZGlmaWVkLCBzZW5kIGNvbnRlbnQgbGVuZ3RoIGZvbGxv
d2luZyBkaWRSZWNlaXZlUmVzcG9uc2UKICAgICAvLyBhcyB0aGVyZSB3aWxsIGJlIG5vIGNhbGxz
IHRvIGRpZFJlY2VpdmVEYXRhIGZyb20gdGhlIG5ldHdvcmsgc3RhY2suCkBAIC0zOTEsNyArNDAx
LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIKICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0
YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBkYXRhLCBkYXRhTGVuZ3RoKTsKICAg
ICB9CiAKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwg
Y3VycmVudFRpbWUoKSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5kYXRhUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAoKSwgZGF0
YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciogbG9hZGVyLCBkb3VibGUgZmluaXNoVGltZSkKQEAgLTQxMSw3ICs0MjEsNyBAQCB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudAogICAgIC8vIEhvd2V2ZXIsIGFsbCBvdGhlciB0aW1lcyBw
YXNzZWQgdG8gdGhlIEluc3BlY3RvciBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIHdlYiBwcm9jZXNz
LiBNaXhpbmcKICAgICAvLyB0aW1lcyBmcm9tIGRpZmZlcmVudCBwcm9jZXNzZXMgY2FuIGNhdXNl
IHRoZSBmaW5pc2ggdGltZSB0byBiZSBlYXJsaWVyIHRoYW4gdGhlIHJlc3BvbnNlCiAgICAgLy8g
cmVjZWl2ZWQgdGltZSBkdWUgdG8gaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIGxhZy4KLSAg
ICBmaW5pc2hUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBmaW5pc2hUaW1lID0gdGltZXN0YW1w
KCk7CiAKICAgICBTdHJpbmcgc291cmNlTWFwcGluZ1VSTDsKICAgICBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEt
PmRhdGEocmVxdWVzdElkKTsKQEAgLTQzNyw3ICs0NDcsNyBAQCB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1l
bnRMbwogICAgIH0KIAogICAgIGJvb2wgY2FuY2VsZWQgPSBlcnJvci5pc0NhbmNlbGxhdGlvbigp
OwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sb2FkaW5nRmFpbGVkKHJlcXVlc3RJZCwgY3Vy
cmVudFRpbWUoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSwgY2FuY2VsZWQgPyAmY2Fu
Y2VsZWQgOiBudWxscHRyKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9hZGluZ0ZhaWxl
ZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCgpLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLCBj
YW5jZWxlZCA/ICZjYW5jZWxlZCA6IG51bGxwdHIpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciog
bG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCkBAIC00NTYsNyArNDY2LDcgQEAgdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUo
RG9jdW1lbnRMb2FkZXIqIGxvYWQKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0
KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHIp
OwogCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2Fj
aGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwg
Y3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291
cmNlKHJlc291cmNlLCBsb2FkZXIpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVz
dFNlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBsb2Fk
ZXItPnVybCgpLnN0cmluZygpLCB0aW1lc3RhbXAoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9i
amVjdEZvckNhY2hlZFJlc291cmNlKHJlc291cmNlLCBsb2FkZXIpKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQpAQCAtNTg4LDcgKzU5OCw3
IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6OldlYlNvY2tldFJlcXVlc3Q+IHJlcXVlc3RPYmplY3QgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0OjpjcmVhdGUoKQogICAgICAg
ICAuc2V0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMocmVxdWVzdC5odHRwSGVhZGVyRmll
bGRzKCkpKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0V2lsbFNlbmRIYW5k
c2hha2VSZXF1ZXN0KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBj
dXJyZW50VGltZSgpLCByZXF1ZXN0T2JqZWN0KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KElkZW50aWZpZXJzRmFjdG9yeTo6cmVx
dWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgcmVxdWVzdE9iamVjdCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCkBAIC01OTcsMTIgKzYwNywxMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSh1bnNpZ25lZCBsb25nCiAg
ICAgICAgIC5zZXRTdGF0dXMocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkKICAgICAgICAgLnNl
dFN0YXR1c1RleHQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSkKICAgICAgICAgLnNldEhlYWRl
cnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkpOwot
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZVJlY2Vp
dmVkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGlt
ZSgpLCByZXNwb25zZU9iamVjdCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tl
dEhhbmRzaGFrZVJlc3BvbnNlUmVjZWl2ZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQo
aWRlbnRpZmllciksIHRpbWVzdGFtcCgpLCByZXNwb25zZU9iamVjdCk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRDbG9zZWQoSWRl
bnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIGN1cnJlbnRUaW1lKCkpOwor
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRDbG9zZWQoSWRlbnRpZmllcnNGYWN0
b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFtcCgpKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCkBAIC02MTEsNyArNjIx
LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJh
bWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLAogICAgICAgICAuc2V0T3Bjb2RlKGZyYW1lLm9w
Q29kZSkKICAgICAgICAgLnNldE1hc2soZnJhbWUubWFza2VkKQogICAgICAgICAuc2V0UGF5bG9h
ZERhdGEoU3RyaW5nKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpKTsKLSAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0RnJhbWVSZWNlaXZlZChJZGVudGlmaWVyc0Zh
Y3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgZnJhbWVPYmplY3Qp
OworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRGcmFtZVJlY2VpdmVkKElkZW50
aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgZnJhbWVP
YmplY3QpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFNlbmRXZWJTb2Nr
ZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJiBm
cmFtZSkKQEAgLTYyMCwxMiArNjMwLDEyIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
ZGlkU2VuZFdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uCiAgICAg
ICAgIC5zZXRPcGNvZGUoZnJhbWUub3BDb2RlKQogICAgICAgICAuc2V0TWFzayhmcmFtZS5tYXNr
ZWQpCiAgICAgICAgIC5zZXRQYXlsb2FkRGF0YShTdHJpbmcoZnJhbWUucGF5bG9hZCwgZnJhbWUu
cGF5bG9hZExlbmd0aCkpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRGcmFt
ZVNlbnQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIGN1cnJlbnRU
aW1lKCksIGZyYW1lT2JqZWN0KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0
RnJhbWVTZW50KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1l
c3RhbXAoKSwgZnJhbWVPYmplY3QpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PndlYlNvY2tldEZyYW1lRXJyb3IoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRp
ZmllciksIGN1cnJlbnRUaW1lKCksIGVycm9yTWVzc2FnZSk7CisgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPndlYlNvY2tldEZyYW1lRXJyb3IoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQo
aWRlbnRpZmllciksIHRpbWVzdGFtcCgpLCBlcnJvck1lc3NhZ2UpOwogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggOWNhNDgzZGY3ZWNiNWNhNDZhZjYyMThhZjIwNDc5
YTMyZGU5YmQ1Yy4uNjEwY2FhNGE3N2ZlMGMzNGU0MWI3OGEyMTFlNjE4NDdkN2NiYjU4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
CkBAIC0xMzgsNiArMTM4LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVuYWJsZSgp
OwogCisgICAgZG91YmxlIHRpbWVzdGFtcCgpOworCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBt
X3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+IG1f
ZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDgwN2RkMjg2NWU3ZGE4ODRlYzkyM2IzYWEz
YmY1M2IzMzAzZDY3NjIuLjQ5N2IxZDU2NGNmMjdhYmI0YmNkNDQwYjAzNTJjOThlZTViMzE4MDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5jcHAKQEAgLTYxLDExICs2MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBUaW1lbGluZVRpbWVDb252ZXJ0ZXI6OnJlc2V0
KCkKLXsKLSAgICBtX3N0YXJ0T2Zmc2V0ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkg
LSBjdXJyZW50VGltZSgpOwotfQotCiBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpCiB7CiB9CkBAIC03Niw2ICs3MSw3IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclRpbWVsaW5lQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiAKICAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMtPnNldFBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRo
aXMpOworICAgIG1fc3RvcHdhdGNoLT5yZXNldCgpOwogCiAgICAgaWYgKG1fc2NyaXB0RGVidWdT
ZXJ2ZXIpCiAgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXItPnJlY29tcGlsZUFsbEpTRnVuY3Rp
b25zKCk7CkBAIC0xMTgsNyArMTE0LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpp
bnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAgICAgZWxzZQogICAg
ICAgICBtX21heENhbGxTdGFja0RlcHRoID0gNTsKIAotICAgIG1fdGltZUNvbnZlcnRlci5yZXNl
dCgpOworICAgIG1fc3RvcHdhdGNoLT5zdGFydCgpOwogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMpOwogCkBAIC0xMzYsNiArMTMyLDgg
QEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0b3AoKQogICAgIGlmICgh
bV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX3N0b3B3YXRjaC0+c3RvcCgpOwor
CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KG51
bGxwdHIpOwogCiAgICAgaWYgKG1fc2NyaXB0RGVidWdTZXJ2ZXIpCkBAIC0xNTcsOSArMTU1LDkg
QEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRQYWdlU2NyaXB0RGVidWdTZXJ2ZXIo
UGFnZVNjcmlwdERlYnVnU2VydmVyKiBzY3IKICAgICBtX3NjcmlwdERlYnVnU2VydmVyID0gc2Ny
aXB0RGVidWdTZXJ2ZXI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFydFByb2ZpbGluZyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3N0YXRpYyBpbmxpbmUg
dm9pZCBzdGFydFByb2ZpbGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0
aXRsZSwgUGFzc1JlZlB0cjxTdG9wd2F0Y2g+IHN0b3B3YXRjaCkKIHsKLSAgICBKU0M6OkxlZ2Fj
eVByb2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2ZpbGluZyhleGVjLCB0aXRsZSk7CisgICAg
SlNDOjpMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmcoZXhlYywgdGl0
bGUsIHN0b3B3YXRjaCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxKU0M6OlByb2Zp
bGU+IHN0b3BQcm9maWxpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCkBAIC0xNjcsOSArMTY1LDkgQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEpTQzo6UHJv
ZmlsZT4gc3RvcFByb2ZpbGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QKICAgICByZXR1
cm4gSlNDOjpMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RvcFByb2ZpbGluZyhleGVjLCB0
aXRsZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFydFByb2ZpbGluZyhGcmFtZSogZnJh
bWUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCitzdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRQcm9maWxp
bmcoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFN0b3B3YXRj
aD4gc3RvcHdhdGNoKQogewotICAgIHN0YXJ0UHJvZmlsaW5nKHRvSlNET01XaW5kb3coZnJhbWUs
IGRlYnVnZ2VyV29ybGQoKSktPmdsb2JhbEV4ZWMoKSwgdGl0bGUpOworICAgIHN0YXJ0UHJvZmls
aW5nKHRvSlNET01XaW5kb3coZnJhbWUsIGRlYnVnZ2VyV29ybGQoKSktPmdsb2JhbEV4ZWMoKSwg
dGl0bGUsIHN0b3B3YXRjaCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxKU0M6OlBy
b2ZpbGU+IHN0b3BQcm9maWxpbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlKQpA
QCAtMTkzLDcgKzE5MSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9t
Q29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nCiAgICAgaWYgKCFtX2Vu
YWJsZWQgJiYgbV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzLmlzRW1wdHkoKSkKICAgICAg
ICAgaW50ZXJuYWxTdGFydCgpOwogCi0gICAgc3RhcnRQcm9maWxpbmcoZXhlYywgdGl0bGUpOwor
ICAgIHN0YXJ0UHJvZmlsaW5nKGV4ZWMsIHRpdGxlLCBtX3N0b3B3YXRjaCk7CiAKICAgICBtX3Bl
bmRpbmdDb25zb2xlUHJvZmlsZVJlY29yZHMuYXBwZW5kKGNyZWF0ZVJlY29yZEVudHJ5KFRpbWVs
aW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlQ29uc29sZVByb2ZpbGVEYXRhKHRpdGxlKSwgVGltZWxp
bmVSZWNvcmRUeXBlOjpDb25zb2xlUHJvZmlsZSwgdHJ1ZSwgZnJhbWVGcm9tRXhlY1N0YXRlKGV4
ZWMpKSk7CiB9CkBAIC0yMzIsNyArMjMwLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
Ojp3aWxsQ2FsbEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmkKICAg
ICBwdXNoQ3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUZ1bmN0aW9u
Q2FsbERhdGEoc2NyaXB0TmFtZSwgc2NyaXB0TGluZSksIFRpbWVsaW5lUmVjb3JkVHlwZTo6RnVu
Y3Rpb25DYWxsLCB0cnVlLCBmcmFtZSk7CiAKICAgICBpZiAoZnJhbWUgJiYgIW1fY2FsbFN0YWNr
RGVwdGgpCi0gICAgICAgIHN0YXJ0UHJvZmlsaW5nKGZyYW1lLCBBU0NJSUxpdGVyYWwoIlRpbWVs
aW5lIEZ1bmN0aW9uQ2FsbCIpKTsKKyAgICAgICAgc3RhcnRQcm9maWxpbmcoZnJhbWUsIEFTQ0lJ
TGl0ZXJhbCgiVGltZWxpbmUgRnVuY3Rpb25DYWxsIiksIG1fc3RvcHdhdGNoKTsKIAogICAgICsr
bV9jYWxsU3RhY2tEZXB0aDsKIH0KQEAgLTQwNyw3ICs0MDUsNyBAQCB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OndpbGxFdmFsdWF0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCwgaW50IGxp
bmVOdW1iZQogCiAgICAgaWYgKGZyYW1lICYmICFtX2NhbGxTdGFja0RlcHRoKSB7CiAgICAgICAg
ICsrbV9jYWxsU3RhY2tEZXB0aDsKLSAgICAgICAgc3RhcnRQcm9maWxpbmcoZnJhbWUsIEFTQ0lJ
TGl0ZXJhbCgiVGltZWxpbmUgRXZhbHVhdGVTY3JpcHQiKSk7CisgICAgICAgIHN0YXJ0UHJvZmls
aW5nKGZyYW1lLCBBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIEV2YWx1YXRlU2NyaXB0IiksIG1fc3Rv
cHdhdGNoKTsKICAgICB9CiB9CiAKQEAgLTU1NCw2ICs1NTIsMTYgQEAgdm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEkKICAgICBhcHBlbmRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQ
cm9iZVNhbXBsZURhdGEoYWN0aW9uLCBoaXRDb3VudCksIFRpbWVsaW5lUmVjb3JkVHlwZTo6UHJv
YmVTYW1wbGUsIGZhbHNlLCBmcmFtZUZyb21FeGVjU3RhdGUoZXhlYykpOwogfQogCit2b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpCit7
CisgICAgbV9zdG9wd2F0Y2gtPnN0b3AoKTsKK30KKwordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpkaWRDb250aW51ZSgpCit7CisgICAgbV9zdG9wd2F0Y2gtPnN0YXJ0KCk7Cit9CisKIHN0
YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlIHRvUHJvdG9jb2wo
VGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC02OTAs
NiArNjk4LDcgQEAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW4KICAgICA6IEluc3BlY3RvckFnZW50
QmFzZShBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAg
LCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKG51bGxw
dHIpCisgICAgLCBtX3N0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9pZCgx
KQogICAgICwgbV9jYWxsU3RhY2tEZXB0aCgwKQogICAgICwgbV9tYXhDYWxsU3RhY2tEZXB0aCg1
KQpAQCAtNzQ4LDcgKzc1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6bG9jYWxU
b1BhZ2VRdWFkKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0CiAKIGRvdWJsZSBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0aW1lc3RhbXAoKQogewotICAgIHJldHVybiBtX3RpbWVD
b252ZXJ0ZXIuZnJvbU1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZShtb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKSk7CisgICAgcmV0dXJuIG1fc3RvcHdhdGNoLT5lbGFwc2VkVGltZSgpOwog
fQogCiBQYWdlKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpwYWdlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDUyNGY5NzI4
Y2MwNTViNWM1M2NkM2U5NWZhOTgxY2RlZDEwMDcwZTMuLjFiNTdhYTFmYzIxNDhiZDZhMzgyNTlk
MTBkZjYxYTRmNzg3N2Y5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkxheW91
dFJlY3QuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVk
ZSA8aW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaD4KKyNpbmNsdWRlIDx3dGYvU3RvcHdh
dGNoLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CiAKQEAgLTExMywxOSArMTE0LDYgQEAgZW51bSBjbGFzcyBUaW1lbGluZVJlY29yZFR5cGUgewog
ICAgIFdlYlNvY2tldERlc3Ryb3kKIH07CiAKLWNsYXNzIFRpbWVsaW5lVGltZUNvbnZlcnRlciB7
Ci1wdWJsaWM6Ci0gICAgVGltZWxpbmVUaW1lQ29udmVydGVyKCkKLSAgICAgICAgOiBtX3N0YXJ0
T2Zmc2V0KDApCi0gICAgewotICAgIH0KLSAgICBkb3VibGUgZnJvbU1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZShkb3VibGUgdGltZSkgY29uc3QgIHsgcmV0dXJuICh0aW1lIC0gbV9zdGFydE9m
ZnNldCkgKiAxMDAwLjA7IH0KLSAgICB2b2lkIHJlc2V0KCk7Ci0KLXByaXZhdGU6Ci0gICAgZG91
YmxlIG1fc3RhcnRPZmZzZXQ7Ci19OwotCiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50CiAg
ICAgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgpAQCAtMjEwLDYgKzE5OCwx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKGludCBjYWxsYmFj
a0lkLCBGcmFtZSopOwogICAgIHZvaWQgZGlkRmlyZUFuaW1hdGlvbkZyYW1lKCk7CiAKKyAgICAv
LyBSZXR1cm5zIHRoZSBlbGFwc2VkIHRpbWUgZnJvbSBhIG1vbm90b25pYyBzdG9wd2F0Y2ggdGhh
dCBzdGFydHMgd2l0aCB0aW1lbGluZSByZWNvcmRpbmcgYW5kCisgICAgLy8gcGF1c2VzIHdoZW4g
dGhlIGRlYnVnZ2VyIHBhdXNlcyBvciBleGVjdXRpb24gaXMgb3RoZXJ3aXNlIHN1c3BlbmRlZC4K
KyAgICBkb3VibGUgdGltZXN0YW1wKCk7CisKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAgICAg
dm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBGcmFtZSopOwogICAgIHZvaWQgd2lsbFNlbmRX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRnJhbWUq
KTsKQEAgLTIxOCwxMSArMjEwLDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0g
ICAgLy8gU2NyaXB0RGVidWdMaXN0ZW5lci4gVGhpcyBpcyBvbmx5IHVzZWQgdG8gY3JlYXRlIHJl
Y29yZHMgZm9yIHByb2JlIHNhbXBsZXMuCisgICAgLy8gU2NyaXB0RGVidWdMaXN0ZW5lcgogICAg
IHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHQm
KSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBpbnQsIGludCwgY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYp
IG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpIG92ZXJyaWRlIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3Vu
ZChpbnQpIG92ZXJyaWRlIHsgfQpAQCAtMjY0LDE3ICsyNTYsMTUgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNsZWFyUmVjb3JkU3RhY2soKTsKIAogICAgIHZvaWQgbG9jYWxUb1BhZ2VRdWFkKGNvbnN0
IFJlbmRlck9iamVjdCYsIGNvbnN0IExheW91dFJlY3QmLCBGbG9hdFF1YWQqKTsKLSAgICBjb25z
dCBUaW1lbGluZVRpbWVDb252ZXJ0ZXImIHRpbWVDb252ZXJ0ZXIoKSBjb25zdCB7IHJldHVybiBt
X3RpbWVDb252ZXJ0ZXI7IH0KLSAgICBkb3VibGUgdGltZXN0YW1wKCk7CiAgICAgUGFnZSogcGFn
ZSgpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIqIG1fc2NyaXB0RGVidWdTZXJ2ZXI7Ci0gICAgVGltZWxpbmVUaW1lQ29u
dmVydGVyIG1fdGltZUNvbnZlcnRlcjsKKworICAgIFJlZlB0cjxTdG9wd2F0Y2g+IG1fc3RvcHdh
dGNoOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVGltZWxpbmVG
cm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3RvclRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7Ci0gICAgZG91YmxlIG1fdGltZXN0YW1wT2Zmc2V0OwogCiAgICAgVmVjdG9yPFRpbWVs
aW5lUmVjb3JkRW50cnk+IG1fcmVjb3JkU3RhY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKaW5kZXggM2ZlYzQwMGFiMTIyNDI1
OGQ3ODhkMjlkM2U2NWI5NWMxNmJjMjMwYy4uMTZjYjM4OGRmMjg3YWY0NGFhMDBjZjNkZDY4NzM3
OThlNjA5MzBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5l
UmVjb3JkRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5l
UmVjb3JkRmFjdG9yeS5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuaD4KICNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlLmg+Ci0jaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5l
TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL1RpbWVsaW5lTWFuYWdlci5qcwppbmRleCA5MDIxMmUxNDI1NjhjYjZiM2JhYTQxOWIxYmY3
MDNhYzg1ZGVlODg2Li4yZmM2NWY3ZDZmMDc4MDk4NDkyZDY4MDAxYzVjNDRiMDYyNDlmZThiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9UaW1lbGluZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCkBAIC0zNSw2ICszNSw4IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fYWN0aXZl
UmVjb3JkaW5nID0gbnVsbDsKICAgICB0aGlzLl9pc0NhcHR1cmluZyA9IGZhbHNlOwogCisgICAg
Ly8gRm9yIGxlZ2FjeSBiYWNrZW5kcywgd2UgY29tcHV0ZSB0aGUgZWxhcHNlZCB0aW1lIG9mIHJl
Y29yZHMgcmVsYXRpdmUgdG8gdGhpcyB0aW1lc3RhbXAuCisgICAgdGhpcy5fY2FwdHVyaW5nU3Rh
cnRlZFRpbWVzdGFtcCA9IE5hTjsKICAgICB0aGlzLl9uZXh0UmVjb3JkaW5nSWRlbnRpZmllciA9
IDE7CiAKICAgICB0aGlzLl9ib3VuZFN0b3BDYXB0dXJpbmcgPSB0aGlzLnN0b3BDYXB0dXJpbmcu
YmluZCh0aGlzKTsKQEAgLTE2Myw5ICsxNjUsMjAgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFu
YWdlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1JlY29yZChyZWNv
cmRQYXlsb2FkLCBwYXJlbnRSZWNvcmRQYXlsb2FkKQogICAgICAgICB7Ci0gICAgICAgICAgICAv
LyBDb252ZXJ0IHRoZSB0aW1lc3RhbXBzIHRvIHNlY29uZHMgdG8gbWF0Y2ggdGhlIHJlc291cmNl
IHRpbWVzdGFtcHMuCi0gICAgICAgICAgICB2YXIgc3RhcnRUaW1lID0gcmVjb3JkUGF5bG9hZC5z
dGFydFRpbWUgLyAxMDAwOwotICAgICAgICAgICAgdmFyIGVuZFRpbWUgPSByZWNvcmRQYXlsb2Fk
LmVuZFRpbWUgLyAxMDAwOworICAgICAgICAgICAgdmFyIHN0YXJ0VGltZSA9IHJlY29yZFBheWxv
YWQuc3RhcnRUaW1lOworICAgICAgICAgICAgdmFyIGVuZFRpbWUgPSByZWNvcmRQYXlsb2FkLmVu
ZFRpbWU7CisKKyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUzgpOiBvbGQgdmVyc2lv
bnMgdXNlIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2gsIHJhdGhlcgorICAgICAgICAgICAg
Ly8gdGhhbiBzZWNvbmRzIGVsYXBzZWQgc2luY2UgdGltZWxpbmUgY2FwdHVyaW5nIHN0YXJ0ZWQu
IFdlIGFwcHJveGltYXRlIHRoZSBsYXR0ZXIgYnkKKyAgICAgICAgICAgIC8vIHN1YnRyYWN0aW5n
IHRoZSBzdGFydCB0aW1lc3RhbXAsIGFzIG9sZCB2ZXJzaW9ucyBkaWQgbm90IHVzZSBtb25vdG9u
aWMgdGltZXMuIFRoaXMKKyAgICAgICAgICAgIC8vIHNob3VsZCBiZSBhIG5vLW9wIGZvciBub24t
bGVnYWN5IHZlcgorICAgICAgICAgICAgaWYgKGlzTmFOKHRoaXMuX2NhcHR1cmluZ1N0YXJ0ZWRU
aW1lc3RhbXApKQorICAgICAgICAgICAgICAgIHRoaXMuX2NhcHR1cmluZ1N0YXJ0ZWRUaW1lc3Rh
bXAgPSByZWNvcmRQYXlsb2FkLnN0YXJ0VGltZTsKKworICAgICAgICAgICAgaWYgKHN0YXJ0VGlt
ZSA+IHRoaXMuX2NhcHR1cmluZ1N0YXJ0ZWRUaW1lc3RhbXApIHsKKyAgICAgICAgICAgICAgICBz
dGFydFRpbWUgPSAoc3RhcnRUaW1lIC0gdGhpcy5fY2FwdHVyaW5nU3RhcnRlZFRpbWVzdGFtcCkg
LyAxMDAwOworICAgICAgICAgICAgICAgIGVuZFRpbWUgPSBpc05hTihlbmRUaW1lKSA/IE5hTiA6
IChzdGFydFRpbWUgLSB0aGlzLl9jYXB0dXJpbmdTdGFydGVkVGltZXN0YW1wKSAvIDEwMDA7Cisg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZhciBjYWxsRnJhbWVzID0gdGhpcy5fY2FsbEZy
YW1lc0Zyb21QYXlsb2FkKHJlY29yZFBheWxvYWQuc3RhY2tUcmFjZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lQ29udGVu
dFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1l
bGluZUNvbnRlbnRWaWV3LmpzCmluZGV4IGJlNGE0ZTdhODg0MTJiYzQwNzMzOGU1MTliMDViZmM5
MjViNGUyMGQuLmEyMDNmMmUzMWZiMzk5Y2ViN2VkMDk0YTA5ZjNiMzVlYzBjOWYwMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGltZWxpbmVDb250ZW50Vmlldy5qcwpAQCAtOTgsNiArOTgsOSBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlY29yZGluZykKICAgICBXZWJJbnNw
ZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTWFuYWdlci5FdmVudC5DYXB0dXJpbmdTdGFydGVkLCB0aGlzLl9jYXB0dXJpbmdTdGFydGVk
LCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudC5DYXB0dXJpbmdTdG9wcGVkLCB0
aGlzLl9jYXB0dXJpbmdTdG9wcGVkLCB0aGlzKTsKIAorICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlBhdXNlZCwgdGhpcy5fZGVidWdnZXJQYXVzZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlJlc3VtZWQsIHRoaXMuX2RlYnVnZ2VyUmVzdW1lZCwgdGhpcyk7CisKICAg
ICB0aGlzLnNob3dPdmVydmlld1RpbWVsaW5lVmlldygpOwogfTsKIApAQCAtNDA3LDYgKzQxMCwy
MiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX3N0b3BVcGRhdGluZ0N1cnJlbnRUaW1lKCk7CiAgICAgfSwKIAorICAgIF9kZWJ1
Z2dlclBhdXNlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLnJlcGxheU1hbmFnZXIuc2Vzc2lvblN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFu
YWdlci5TZXNzaW9uU3RhdGUuUmVwbGF5aW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHRoaXMuX3N0b3BVcGRhdGluZ0N1cnJlbnRUaW1lKCk7CisgICAgfSwKKworICAgIF9kZWJ1
Z2dlclJlc3VtZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Npb25TdGF0ZSA9PT0gV2ViSW5zcGVjdG9yLlJlcGxheU1h
bmFnZXIuU2Vzc2lvblN0YXRlLlJlcGxheWluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLl9zdGFydFVwZGF0aW5nQ3VycmVudFRpbWUoKTsKKyAgICB9LAorCiAgICAgX3Jl
Y29yZGluZ1RpbWVzVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuX3dhaXRpbmdUb1Jlc2V0Q3VycmVudFRpbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239068</attachid>
            <date>2014-10-01 16:54:41 -0700</date>
            <delta_ts>2014-10-03 11:19:24 -0700</delta_ts>
            <desc>Proposed Fix (+legacy backend code path)</desc>
            <filename>bug-136351-20141001165407.patch</filename>
            <type>text/plain</type>
            <size>57170</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDI3OGNlZWY1ZWUwODE1YmQ2Y2E2ODVjZGYwZjk0ZjcxNDQ3MGQ0Li4xMmE1MjU5NDgxOTRmZGQ5
NTdmNWNjMWY0YzljZDk5YjJjNjZlYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxNC0xMC0wMSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291
bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0aGF0IHdlIGhhdmUgYSBz
dG9wd2F0Y2ggdG8gcHJvdmlkZSBwYXVzZS1hd2FyZSB0aW1pbmcgZGF0YSwgd2UgY2FuIHJlbW92
ZSB0aGUKKyAgICAgICAgcHJvZmlsZXIncyBoYW5kbGluZyBvZiBkZWJ1Z2dlciBwYXVzZS9jb250
aW51ZSBjYWxsYmFja3MuIFRoZSB0aW1lbGluZSBhZ2VudCBhY2NvdW50cworICAgICAgICBmb3Ig
ZGVidWdnZXIgcGF1c2VzIGJ5IHBhdXNpbmcgYW5kIHJlc3VtaW5nIHRoZSBzdG9wd2F0Y2guCisK
KyAgICAgICAgKiBBUEkvSlNQcm9maWxlclByaXZhdGUuY3BwOgorICAgICAgICAoSlNTdGFydFBy
b2ZpbGluZyk6IFVzZSBhIGZyZXNoIHN0b3B3YXRjaCB3aGVuIHByb2ZpbGluZyBmcm9tIHRoZSBK
U0MgQVBJLgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVQYXVzZSk6CisgICAgICAg
ICogcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpMZWdhY3lQcm9m
aWxlcjo6cHJvZmlsZXIpOiBVc2UgbnVsbHB0ci4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmls
ZXI6OnN0YXJ0UHJvZmlsaW5nKTogSGFuZCBvZmYgYSBzdG9wd2F0Y2ggdG8gdGhlIHByb2ZpbGUg
Z2VuZXJhdG9yLgorICAgICAgICAoSlNDOjpMZWdhY3lQcm9maWxlcjo6c3RvcFByb2ZpbGluZyk6
IFVzZSBudWxscHRyLgorICAgICAgICAoSlNDOjpMZWdhY3lQcm9maWxlcjo6ZGlkUGF1c2UpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpMZWdhY3lQcm9maWxlcjo6ZGlkQ29udGludWUpOiBEZWxl
dGVkLgorICAgICAgICAqIHByb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmg6CisgICAgICAgICogcHJv
ZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHA6IFJlbW92ZSBkZWJ1Z2dlciBwYXVzZS9jb250aW51
ZSBjYWxsYmFja3MgYW5kIHRoZQorICAgICAgICB0aW1lc3RhbXAgbWVtYmVyIHRoYXQgd2FzIHVz
ZWQgdG8gdHJhY2sgdGltZSBlbGFwc2VkIGJ5IHRoZSBkZWJ1Z2dlci4gSnVzdCB1c2UgdGhlCisg
ICAgICAgIHN0b3B3YXRjaCdzIGVsYXBzZWQgdGltZXMgdG8gZ2VuZXJhdGUgc3RhcnQvZWxhcHNl
ZCB0aW1lcyBmb3IgZnVuY3Rpb24gY2FsbHMuCisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6OlByb2ZpbGVHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpQcm9maWxlR2VuZXJhdG9yOjpiZWdpbkNhbGxFbnRyeSk6
CisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6OmVuZENhbGxFbnRyeSk6CisgICAgICAg
IChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6OmRpZFBhdXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6UHJvZmlsZUdlbmVyYXRvcjo6ZGlkQ29udGludWUpOiBEZWxldGVkLgorICAgICAgICAqIHBy
b2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuaDoKKwogMjAxNC0xMC0wMSAgRGFuaWVsIEJhdGVzICA8
ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXA6IE1vdmUgWFBDIGZvcndhcmQg
ZGVjbGFyYXRpb25zIGluIEphdmFTY3JpcHRDb3JlIHRvIFdURiBTUEkgd3JhcHBlciBoZWFkZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggY2RkYTA1Y2FiZTNlNGIwZjE4MDlhMjYwNzYyNDA3MTFiMzkxZTJlMS4uMDY5MWFhOTE0
OGI5YTc4NmU4ZGE2ZjA2YWM1ZjZhZjI3ZjRjZjk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
NC0xMC0wMSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291bnQgdGltZSBlbGFwc2Vk
IHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2o6CisgICAgICAg
ICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogd3RmL1N0b3B3YXRjaC5oOiBBZGRlZC4gVGhpcyBpbXBsZW1lbnRzIGEgcmVmY291bnRl
ZCBtb25vdG9uaWMgc3RvcHdhdGNoLgorICAgICAgICAoV1RGOjpTdG9wd2F0Y2g6OnJlc2V0KToK
KyAgICAgICAgKFdURjo6U3RvcHdhdGNoOjpzdGFydCk6CisgICAgICAgIChXVEY6OlN0b3B3YXRj
aDo6c3RvcCk6CisKIDIwMTQtMTAtMDEgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIEF0dGVtcHQgdG8gZml4IHRoZSBidWlsZCBhZnRlciA8aHR0cHM6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzE3NDE4MD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMzJjOWFhMTg1NjRj
OTBkODkyNmU3ZGFiYmY5MGFmZWFjMTdmZTYwLi4xOTI1Yjc4NGExOWJlMjhiMjcxNGFlNmYyMzg5
NzJiMGE1NGM1OGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTQtMTAtMDEgIEJy
aWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHRpbWVsaW5lcyBzaG91bGQgbm90IGNvdW50IHRpbWUgZWxhcHNlZCB3aGlsZSBwYXVz
ZWQgaW4gdGhlIGRlYnVnZ2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzYzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUbyBhdm9pZCBjb3VudGluZyB0aW1lIGVsYXBzZWQgd2hpbGUgdGhlIGRlYnVn
Z2VyIGlzIHBhdXNlZCwgdGltZWxpbmUgcmVjb3JkcyBzaG91bGQKKyAgICAgICAga2VlcCB0cmFj
ayBvZiB0aW1lIGVsYXBzZWQgc2luY2UgdGhlIHN0YXJ0IG9mIHRpbWVsaW5lIGNhcHR1cmluZywg
cmF0aGVyIHRoYW4gd2FsbCBjbG9jaworICAgICAgICB0aW1lc3RhbXBzLiBXZSBjYW4gZWFzaWx5
IGNvbXB1dGUgZWxhcHNlZCB0aW1lIGJ5IHNoYXJpbmcgU3RvcHdhdGNoIGluc3RhbmNlIGFtb25n
CisgICAgICAgIGFsbCB0aW1lbGluZSByZWNvcmQtZ2VuZXJhdGluZyBjb2RlLiBUaGUgc3RvcHdh
dGNoIGlzIHBhdXNlZCB3aGlsZSB0aGUgZGVidWdnZXIgaXMgcGF1c2VkLAorICAgICAgICBzbyBz
dWJzZXF1ZW50IHRpbWUgbWVhc3VyZW1lbnRzIHdpbGwgbm90IGluY2x1ZGUgdGltZSBlbGFwc2Vk
IHdoaWxlIHRoZSBkZWJ1Z2dlciBpcyBwYXVzZWQuCisKKyAgICAgICAgQWdlbnRzIHVzZSB0aGUg
c2hhcmVkIHN0b3B3YXRjaCB0byBnZW5lcmF0ZSB0aW1lc3RhbXBzIGlmIHRoZSB0aW1lbGluZSBh
Z2VudCBpcyBhY3RpdmUKKyAgICAgICAgKGkuZS4sIGEgdGltZWxpbmUgcmVjb3JkaW5nIGlzIGJl
aW5nIGNhcHR1cmVkKS4gSWYgbm90LCB1c2UgYSB6ZXJvIHRpbWVzdGFtcCBzaW5jZSB0aGUgdGlt
aW5nIGRhdGEgaXMgb25seSByZXZlYWxlZCB0aHJvdWdoIHRoZSBUaW1lbGluZSBpbnRlcmZhY2Uu
CisKKyAgICAgICAgVGhpcyByZWZhY3RvcmluZyBpcyBzYWZlIGJlY2F1c2Ugc3RhcnQgYW5kIGVu
ZCB0aW1lcyBhcmUgb25seSB1c2VkIHRvIGdyYXBoIHJlY29yZHM7IHRoZQorICAgICAgICB0aW1l
c3RhbXAncyBhY3R1YWwgdmFsdWUgaXMgaXJyZWxldmFudCBhbmQgaXMgbm90IGRpc3BsYXllZCBp
biB0aGUgdXNlciBpbnRlcmZhY2UuIERhdGUKKyAgICAgICAgdGltZXN0YW1wcyBhcmUgc3RpbGwg
aW5jbHVkZWQgd2l0aCBuZXR3b3JrLXJlbGF0ZWQgcmVjb3JkcyBhcyBwYXJ0IG9mIHRoZWlyIGhl
YWRlciBkYXRhLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSB3ZSBjYW5ub3QgcmVs
aWFibHkgdGVzdCB0aW1pbmcgY2hhbmdlcyBpbmR1Y2VkIGJ5IGRlYnVnZ2VyIHBhdXNlcy4KKyAg
ICAgICAgSXQgaXMgcG9zc2libGUgZm9yIHJlY29yZHMgdG8gYWNjcnVlIHRpbWUgYmVmb3JlIHRo
ZSBkZWJ1Z2dlciBwYXVzZXMgb3IgYWZ0ZXIgaXQgcmVzdW1lcy4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6IFJlbW92ZSB1bnVzZWQgaW5jbHVkZS4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDogVXNlIHRpbWVzdGFtcHMgZnJv
bSB0aGUgc2hhcmVkIHN0b3B3YXRjaC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VB
Z2VudDo6dGltZXN0YW1wKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
ZG9tQ29udGVudEV2ZW50RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFn
ZW50Ojpsb2FkRXZlbnRGaXJlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDog
VXNlIHRpbWVzdGFtcHMgZnJvbSB0aGUgc2hhcmVkIHN0b3B3YXRjaC4KKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OnRpbWVzdGFtcCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmFpbExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291
cmNlQWdlbnQ6OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
ZGlkQ2xvc2VXZWJTb2NrZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZFNlbmRXZWJTb2NrZXRGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJv
cik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6IEFkZCBjYWxscyB0byBy
ZXNldCwgc3RhcnQsIGFuZCBzdG9wIHRoZSBzdG9wd2F0Y2guCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0b3ApOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhcnRQcm9maWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsQ2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxFdmFsdWF0ZVNjcmlwdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRQYXVzZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb250aW51ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRpbWVzdGFtcCk6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVRpbWVDb252ZXJ0ZXI6OnJlc2V0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOiBNYWtlIHRp
bWVzdGFtcCgpIHB1YmxpYywgYW5kIHJlbW92ZSBvbGQgdGltZXBpZWNlcy4KKyAgICAgICAgKFdl
YkNvcmU6OlRpbWVsaW5lVGltZUNvbnZlcnRlcjo6VGltZWxpbmVUaW1lQ29udmVydGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lVGltZUNvbnZlcnRlcjo6ZnJvbU1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojp0aW1lQ29udmVydGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoKKwogMjAxNC0xMC0wMSAgQ2hyaXN0
b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGlzPD4oKSAvIGRv
d25jYXN0PD4oKSBmb3IgRXZlbnQgY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXgg
Y2RmZDY1ZjNhOTQ3YWZhM2E3MGU3YzMwM2U4MjQzZGYwMWQyNDQ0Ny4uYzIwYzUzOGJjNzgxMmVm
MDBlZThlZmFlZjRiMGRkZGU1YWExYTVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTQtMTAtMDEgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRpbWVsaW5lcyBzaG91bGQgbm90IGNv
dW50IHRpbWUgZWxhcHNlZCB3aGlsZSBwYXVzZWQgaW4gdGhlIGRlYnVnZ2VyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYzNTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCB1cGRhdGUgdGhlIHRp
bWVsaW5lJ3MgY3VycmVudCB0aW1lIHdoZW4gdGhlIGRlYnVnZ2VyIGlzIHBhdXNlZC4KKworICAg
ICAgICBTdGFydCBhbmQgZW5kIHRpbWVzIGZvciB0aW1lbGluZSByZWNvcmRzIGFyZSBub3cgaW4g
c2Vjb25kcyBlbGFwc2VkIHNpbmNlIHRpbWVsaW5lCisgICAgICAgIHJlY29yZGluZyBzdGFydGVk
LCByYXRoZXIgdGhhbiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoLiBBZGQgYSB3b3JrYXJv
dW5kIHRvCisgICAgICAgIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgYmFja2VuZHMu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmNhcHR1
cmluZ1N0YXJ0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90
b3R5cGUuZXZlbnRSZWNvcmRlZC5wcm9jZXNzUmVjb3JkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmV2ZW50UmVjb3JkZWQpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fZGVidWdnZXJQYXVzZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZpZXcucHJvdG90eXBlLl9kZWJ1
Z2dlclJlc3VtZWQpOgorCiAyMDE0LTA5LTI3ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNo
aW5ndG9uLmVkdT4KIAogICAgICAgICBXZWIgUmVwbGF5OiBQbGF5YmFjayBwb3NpdGlvbiB1cGRh
dGVzIHNob3VsZCBiZSBzZW50IGJlZm9yZSB0aGUgbmV4dCBldmVudCBsb29wIGlucHV0IGlzIGRp
c3BhdGNoZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNQcm9maWxl
clByaXZhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Byb2ZpbGVyUHJpdmF0
ZS5jcHAKaW5kZXggMmE1ZWMyYzgyMzkwMWVkOWUxYmJkODI0Y2ZhOWM2M2Y4YTgyMzY4Ni4uMzVi
YTgzYmI2MDg4MWJhZjY0ZWU3ZjUwZWM0OGIxYjVkNWQxNjEyYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1Byb2ZpbGVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1Byb2ZpbGVyUHJpdmF0ZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogdm9pZCBKU1N0YXJ0UHJvZmlsaW5nKEpTQ29udGV4dFJl
ZiBjdHgsIEpTU3RyaW5nUmVmIHRpdGxlKQogewotICAgIExlZ2FjeVByb2ZpbGVyOjpwcm9maWxl
cigpLT5zdGFydFByb2ZpbGluZyh0b0pTKGN0eCksIHRpdGxlLT5zdHJpbmcoKSk7CisgICAgTGVn
YWN5UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0YXJ0UHJvZmlsaW5nKHRvSlMoY3R4KSwgdGl0bGUt
PnN0cmluZygpLCBTdG9wd2F0Y2g6OmNyZWF0ZSgpKTsKIH0KIAogdm9pZCBKU0VuZFByb2ZpbGlu
ZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiB0aXRsZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMmM3
ODNhZjQ3NzZkNjE1NGYwZmYzMjM0NjA3NWY3MTg0YjJlMGI0OS4uM2E2MTY2M2UzNmM0NzdjMTE3
M2IyY2MzODg3OTNkMTUyY2JmMzhjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNp
bmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNp
bmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiTGVnYWN5UHJvZmlsZXIu
aCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyLmgi
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0zMDcsMTQgKzMwNiwxMiBAQCB2
b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9pbnRDb25kaXRp
b24oSlNDOjpFeGVjU3RhdGUqIGV4ZQogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlUGF1
c2UoRGVidWdnZXI6OlJlYXNvbkZvclBhdXNlLCBKU0dsb2JhbE9iamVjdCogdm1FbnRyeUdsb2Jh
bE9iamVjdCkKIHsKICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoJlNjcmlwdERlYnVn
U2VydmVyOjpkaXNwYXRjaERpZFBhdXNlKTsKLSAgICBMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIo
KS0+ZGlkUGF1c2UoY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCkpOwogICAgIGRpZFBhdXNlKHZt
RW50cnlHbG9iYWxPYmplY3QpOwogCiAgICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRz
ID0gZmFsc2U7CiAgICAgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKTsKIAogICAgIGRpZENvbnRp
bnVlKHZtRW50cnlHbG9iYWxPYmplY3QpOwotICAgIExlZ2FjeVByb2ZpbGVyOjpwcm9maWxlcigp
LT5kaWRDb250aW51ZShjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKSk7CiAgICAgZGlzcGF0Y2hG
dW5jdGlvblRvTGlzdGVuZXJzKCZTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRDb250aW51
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdh
Y3lQcm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJv
ZmlsZXIuY3BwCmluZGV4IDRmZTJiYTZiMWNlNDJiNjkyYTZjNDg1NzAzNjg2ZmE5ZTRmN2Y3ZmYu
LmUwY2EyNjgwYmRiOTU0NzUxNDhmZTRjNDE5MzZkYzZlOTZmYzNhNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcApAQCAtMzIsNyAr
MzIsNiBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCi0jaW5jbHVkZSAiRGVidWdnZXJDYWxsRnJh
bWUuaCIKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC01MCwxNiArNDksMTYgQEAgc3Rh
dGljIHVuc2lnbmVkIFByb2ZpbGVzVUlEID0gMDsKIAogc3RhdGljIENhbGxJZGVudGlmaWVyIGNy
ZWF0ZUNhbGxJZGVudGlmaWVyRnJvbUZ1bmN0aW9uSW1wKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJiBkZWZhdWx0U291cmNlVVJMLCB1bnNpZ25lZCBkZWZhdWx0TGluZU51bWJl
ciwgdW5zaWduZWQgZGVmYXVsdENvbHVtbk51bWJlcik7CiAKLUxlZ2FjeVByb2ZpbGVyKiBMZWdh
Y3lQcm9maWxlcjo6c19zaGFyZWRMZWdhY3lQcm9maWxlciA9IDA7CitMZWdhY3lQcm9maWxlciog
TGVnYWN5UHJvZmlsZXI6OnNfc2hhcmVkTGVnYWN5UHJvZmlsZXIgPSBudWxscHRyOwogCiBMZWdh
Y3lQcm9maWxlciogTGVnYWN5UHJvZmlsZXI6OnByb2ZpbGVyKCkKIHsKICAgICBpZiAoIXNfc2hh
cmVkTGVnYWN5UHJvZmlsZXIpCiAgICAgICAgIHNfc2hhcmVkTGVnYWN5UHJvZmlsZXIgPSBuZXcg
TGVnYWN5UHJvZmlsZXIoKTsKICAgICByZXR1cm4gc19zaGFyZWRMZWdhY3lQcm9maWxlcjsKLX0g
ICAKK30KIAotdm9pZCBMZWdhY3lQcm9maWxlcjo6c3RhcnRQcm9maWxpbmcoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBMZWdhY3lQcm9maWxlcjo6c3RhcnRQcm9m
aWxpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFN0
b3B3YXRjaD4gc3RvcHdhdGNoKQogewogICAgIGlmICghZXhlYykKICAgICAgICAgcmV0dXJuOwpA
QCAtNzUsMTQgKzc0LDE0IEBAIHZvaWQgTGVnYWN5UHJvZmlsZXI6OnN0YXJ0UHJvZmlsaW5nKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICB9CiAKICAgICBleGVjLT52
bSgpLnNldEVuYWJsZWRQcm9maWxlcih0aGlzKTsKLSAgICBSZWZQdHI8UHJvZmlsZUdlbmVyYXRv
cj4gcHJvZmlsZUdlbmVyYXRvciA9IFByb2ZpbGVHZW5lcmF0b3I6OmNyZWF0ZShleGVjLCB0aXRs
ZSwgKytQcm9maWxlc1VJRCk7CisgICAgUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IHByb2ZpbGVH
ZW5lcmF0b3IgPSBQcm9maWxlR2VuZXJhdG9yOjpjcmVhdGUoZXhlYywgdGl0bGUsICsrUHJvZmls
ZXNVSUQsIHN0b3B3YXRjaCk7CiAgICAgbV9jdXJyZW50UHJvZmlsZXMuYXBwZW5kKHByb2ZpbGVH
ZW5lcmF0b3IpOwogfQogCiBQYXNzUmVmUHRyPFByb2ZpbGU+IExlZ2FjeVByb2ZpbGVyOjpzdG9w
UHJvZmlsaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBp
ZiAoIWV4ZWMpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBvcmlnaW4gPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7
CiAgICAgZm9yIChwdHJkaWZmX3QgaSA9IG1fY3VycmVudFByb2ZpbGVzLnNpemUoKSAtIDE7IGkg
Pj0gMDsgLS1pKSB7CkBAIC05NCwxMiArOTMsMTIgQEAgUGFzc1JlZlB0cjxQcm9maWxlPiBMZWdh
Y3lQcm9maWxlcjo6c3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYK
ICAgICAgICAgICAgIG1fY3VycmVudFByb2ZpbGVzLnJlbW92ZShpKTsKICAgICAgICAgICAgIGlm
ICghbV9jdXJyZW50UHJvZmlsZXMuc2l6ZSgpKQogICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCku
c2V0RW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAg
IHJldHVybiByZXR1cm5Qcm9maWxlOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgTGVnYWN5UHJvZmlsZXI6OnN0b3BQcm9m
aWxpbmcoSlNHbG9iYWxPYmplY3QqIG9yaWdpbikKQEAgLTE4NCwyOCArMTgzLDYgQEAgdm9pZCBM
ZWdhY3lQcm9maWxlcjo6ZXhjZXB0aW9uVW53aW5kKEV4ZWNTdGF0ZSogaGFuZGxlckNhbGxGcmFt
ZSkKICAgICBjYWxsRnVuY3Rpb25Gb3JQcm9maWxlc1dpdGhHcm91cChzdGQ6OmJpbmQoJlByb2Zp
bGVHZW5lcmF0b3I6OmV4Y2VwdGlvblVud2luZCwgc3RkOjpwbGFjZWhvbGRlcnM6Ol8xLCBoYW5k
bGVyQ2FsbEZyYW1lLCBjYWxsSWRlbnRpZmllciksIG1fY3VycmVudFByb2ZpbGVzLCBoYW5kbGVy
Q2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb2ZpbGVHcm91cCgpKTsKIH0KIAot
dm9pZCBMZWdhY3lQcm9maWxlcjo6ZGlkUGF1c2UoUGFzc1JlZlB0cjxEZWJ1Z2dlckNhbGxGcmFt
ZT4gcHJwQ2FsbEZyYW1lKQotewotICAgIGlmIChtX2N1cnJlbnRQcm9maWxlcy5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4gY2FsbEZy
YW1lID0gcHJwQ2FsbEZyYW1lOwotICAgIENhbGxJZGVudGlmaWVyIGNhbGxJZGVudGlmaWVyID0g
Y3JlYXRlQ2FsbElkZW50aWZpZXIoY2FsbEZyYW1lLT5leGVjKCksIEpTVmFsdWUoKSwgU3RyaW5n
SW1wbDo6ZW1wdHkoKSwgMCwgMCk7Ci0KLSAgICBjYWxsRnVuY3Rpb25Gb3JQcm9maWxlc1dpdGhH
cm91cChzdGQ6OmJpbmQoJlByb2ZpbGVHZW5lcmF0b3I6OmRpZFBhdXNlLCBzdGQ6OnBsYWNlaG9s
ZGVyczo6XzEsIGNhbGxGcmFtZSwgY2FsbElkZW50aWZpZXIpLCBtX2N1cnJlbnRQcm9maWxlcywg
Y2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnByb2ZpbGVHcm91cCgpKTsKLX0KLQot
dm9pZCBMZWdhY3lQcm9maWxlcjo6ZGlkQ29udGludWUoUGFzc1JlZlB0cjxEZWJ1Z2dlckNhbGxG
cmFtZT4gcHJwQ2FsbEZyYW1lKQotewotICAgIGlmIChtX2N1cnJlbnRQcm9maWxlcy5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4gY2Fs
bEZyYW1lID0gcHJwQ2FsbEZyYW1lOwotICAgIENhbGxJZGVudGlmaWVyIGNhbGxJZGVudGlmaWVy
ID0gY3JlYXRlQ2FsbElkZW50aWZpZXIoY2FsbEZyYW1lLT5leGVjKCksIEpTVmFsdWUoKSwgU3Ry
aW5nSW1wbDo6ZW1wdHkoKSwgMCwgMCk7Ci0KLSAgICBjYWxsRnVuY3Rpb25Gb3JQcm9maWxlc1dp
dGhHcm91cChzdGQ6OmJpbmQoJlByb2ZpbGVHZW5lcmF0b3I6OmRpZENvbnRpbnVlLCBzdGQ6OnBs
YWNlaG9sZGVyczo6XzEsIGNhbGxGcmFtZSwgY2FsbElkZW50aWZpZXIpLCBtX2N1cnJlbnRQcm9m
aWxlcywgY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnByb2ZpbGVHcm91cCgpKTsK
LX0KLQogQ2FsbElkZW50aWZpZXIgTGVnYWN5UHJvZmlsZXI6OmNyZWF0ZUNhbGxJZGVudGlmaWVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvblZhbHVlLCBjb25zdCBTdHJpbmcmIGRl
ZmF1bHRTb3VyY2VVUkwsIHVuc2lnbmVkIGRlZmF1bHRMaW5lTnVtYmVyLCB1bnNpZ25lZCBkZWZh
dWx0Q29sdW1uTnVtYmVyKQogewogICAgIGlmICghZnVuY3Rpb25WYWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmgKaW5kZXggMWQ2Y2IyNmY4
M2ZmMDJmOGNhZDMyNzBkMTRlMDE0MzY2MGFiNzZhZi4uOGY2YWY0MGVlOTllYTRhOTA1MDFlN2Vl
ZWE3YjkwMjc1Y2VlM2VhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL0xlZ2FjeVByb2ZpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L0xlZ2FjeVByb2ZpbGVyLmgKQEAgLTMyLDEzICszMiwxMiBAQAogI2luY2x1ZGUgIlByb2ZpbGUu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRGVidWdnZXJDYWxsRnJhbWU7CiBjbGFzcyBFeGVjU3Rh
dGU7Ci1jbGFzcyBWTTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNPYmplY3Q7CiBj
bGFzcyBKU1ZhbHVlOwpAQCAtNDgsMTAgKzQ3LDEwIEBAIHN0cnVjdCBDYWxsSWRlbnRpZmllcjsK
IGNsYXNzIExlZ2FjeVByb2ZpbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgTGVnYWN5UHJvZmlsZXIqIHByb2Zp
bGVyKCk7IAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMZWdhY3lQcm9maWxlciogcHJv
ZmlsZXIoKTsKICAgICBzdGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXIo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWdu
ZWQgZGVmYXVsdExpbmVOdW1iZXIsIHVuc2lnbmVkIGRlZmF1bHRDb2x1bW5OdW1iZXIpOwogCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25z
dCBXVEY6OlN0cmluZyYgdGl0bGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnRQ
cm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRy
PFN0b3B3YXRjaD4pOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8UHJvZmlsZT4g
c3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUpOwogICAg
IHZvaWQgc3RvcFByb2ZpbGluZyhKU0dsb2JhbE9iamVjdCopOwogCkBAIC02Niw5ICs2NSw2IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZXhjZXB0aW9uVW53aW5kKEV4ZWNTdGF0ZSogaGFuZGxlckNh
bGxGcmFtZSk7CiAKLSAgICB2b2lkIGRpZFBhdXNlKFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJh
bWU+KTsKLSAgICB2b2lkIGRpZENvbnRpbnVlKFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+
KTsKLQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4+JiBjdXJyZW50
UHJvZmlsZXMoKSB7IHJldHVybiBtX2N1cnJlbnRQcm9maWxlczsgfTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNw
cAppbmRleCAzMmU4OTI2MGVlZmM3OGYyYThlYjk5NmFlOWE3N2Y4OTZlZDk0Mzc4Li45ZjljYTY1
ODQ4NTM4M2RlODZkNzkxNDE1ZGIzODZlZTFlNjFlMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwCkBAIC0yOCw3ICsyOCw2
IEBACiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNp
bmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNTdHJpbmdSZWYuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC00MCwyMSArMzks
MTggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLVBhc3NSZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4g
UHJvZmlsZUdlbmVyYXRvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0
aXRsZSwgdW5zaWduZWQgdWlkKQorUGFzc1JlZlB0cjxQcm9maWxlR2VuZXJhdG9yPiBQcm9maWxl
R2VuZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1
bnNpZ25lZCB1aWQsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPiBzdG9wd2F0Y2gpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQcm9maWxlR2VuZXJhdG9yKGV4ZWMsIHRpdGxlLCB1aWQpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2ZpbGVHZW5lcmF0b3IoZXhlYywgdGl0bGUsIHVpZCwg
c3RvcHdhdGNoKSk7CiB9CiAKLVByb2ZpbGVHZW5lcmF0b3I6OlByb2ZpbGVHZW5lcmF0b3IoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCitQcm9maWxl
R2VuZXJhdG9yOjpQcm9maWxlR2VuZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiB0aXRsZSwgdW5zaWduZWQgdWlkLCBQYXNzUmVmUHRyPFN0b3B3YXRjaD4gc3RvcHdhdGNoKQog
ICAgIDogbV9vcmlnaW4oZXhlYyA/IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSA6IG51bGxw
dHIpCiAgICAgLCBtX3Byb2ZpbGVHcm91cChleGVjID8gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5wcm9maWxlR3JvdXAoKSA6IDApCi0gICAgLCBtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1w
KE5BTikKKyAgICAsIG1fc3RvcHdhdGNoKHN0b3B3YXRjaCkKICAgICAsIG1fZm91bmRDb25zb2xl
U3RhcnRQYXJlbnQoZmFsc2UpCiAgICAgLCBtX3N1c3BlbmRlZChmYWxzZSkKIHsKLSAgICBpZiAo
RGVidWdnZXIqIGRlYnVnZ2VyID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dl
cigpKQotICAgICAgICBtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wID0gZGVidWdnZXItPmlzUGF1
c2VkKCkgPyBjdXJyZW50VGltZSgpIDogTkFOOwotCiAgICAgbV9wcm9maWxlID0gUHJvZmlsZTo6
Y3JlYXRlKHRpdGxlLCB1aWQpOwogICAgIG1fY3VycmVudE5vZGUgPSBtX3Jvb3ROb2RlID0gbV9w
cm9maWxlLT5yb290Tm9kZSgpOwogICAgIGlmIChleGVjKQpAQCAtMTE4LDEyICsxMTQsNyBAQCB2
b2lkIFByb2ZpbGVHZW5lcmF0b3I6OmJlZ2luQ2FsbEVudHJ5KFByb2ZpbGVOb2RlKiBub2RlLCBk
b3VibGUgc3RhcnRUaW1lKQogICAgIEFTU0VSVF9BUkcobm9kZSwgbm9kZSk7CiAKICAgICBpZiAo
aXNuYW4oc3RhcnRUaW1lKSkKLSAgICAgICAgc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKLQot
ICAgIC8vIElmIHRoZSBkZWJ1Z2dlciBpcyBwYXVzZWQgd2hlbiBiZWdpbm5pbmcsIHRoZW4gZG9u
J3Qgc2V0IHRoZSBzdGFydCB0aW1lLiBJdAotICAgIC8vIHdpbGwgYmUgZml4ZWQgdXAgd2hlbiB0
aGUgZGVidWdnZXIgdW5wYXVzZXMgb3IgdGhlIGNhbGwgZW50cnkgZW5kcy4KLSAgICBpZiAoIWlz
bmFuKG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApKQotICAgICAgICBzdGFydFRpbWUgPSBOQU47
CisgICAgICAgIHN0YXJ0VGltZSA9IG1fc3RvcHdhdGNoLT5lbGFwc2VkVGltZSgpOwogCiAgICAg
bm9kZS0+YXBwZW5kQ2FsbChQcm9maWxlTm9kZTo6Q2FsbChzdGFydFRpbWUpKTsKIH0KQEAgLTEz
MywyMiArMTI0LDggQEAgdm9pZCBQcm9maWxlR2VuZXJhdG9yOjplbmRDYWxsRW50cnkoUHJvZmls
ZU5vZGUqIG5vZGUpCiAgICAgQVNTRVJUX0FSRyhub2RlLCBub2RlKTsKIAogICAgIFByb2ZpbGVO
b2RlOjpDYWxsJiBsYXN0ID0gbm9kZS0+bGFzdENhbGwoKTsKLQotICAgIC8vIElmIHRoZSBkZWJ1
Z2dlciBpcyBwYXVzZWQsIGlnbm9yZSB0aGUgaW50ZXJ2YWwgdGhhdCBlbmRzIG5vdy4KLSAgICBp
ZiAoIWlzbmFuKG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApICYmICFpc25hbihsYXN0LmVsYXBz
ZWRUaW1lKCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBJZiBwYXVzZWQgYW5kIG5vIHRp
bWUgd2FzIGFjY3J1ZWQgdGhlbiB0aGUgZGVidWdnZXIgd2FzIG5ldmVyIHVucGF1c2VkLiBUaGUg
Y2FsbCB3aWxsCi0gICAgLy8gaGF2ZSBubyB0aW1lIGFjY3J1ZWQgYW5kIGFwcGVhciB0byBoYXZl
IHN0YXJ0ZWQgd2hlbiB0aGUgZGVidWdnZXIgd2FzIHBhdXNlZC4KLSAgICBpZiAoIWlzbmFuKG1f
ZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApKSB7Ci0gICAgICAgIGxhc3Quc2V0U3RhcnRUaW1lKG1f
ZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApOwotICAgICAgICBsYXN0LnNldEVsYXBzZWRUaW1lKDAu
MCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBPdGhlcndpc2UsIGFkZCB0aGUg
aW50ZXJ2YWwgZW5kaW5nIG5vdyB0byBlbGFwc2VkIHRpbWUuCiAgICAgZG91YmxlIHByZXZpb3Vz
RWxhcHNlZFRpbWUgPSBpc25hbihsYXN0LmVsYXBzZWRUaW1lKCkpID8gMC4wIDogbGFzdC5lbGFw
c2VkVGltZSgpOwotICAgIGRvdWJsZSBuZXdseUVsYXBzZWRUaW1lID0gY3VycmVudFRpbWUoKSAt
IGxhc3Quc3RhcnRUaW1lKCk7CisgICAgZG91YmxlIG5ld2x5RWxhcHNlZFRpbWUgPSBtX3N0b3B3
YXRjaC0+ZWxhcHNlZFRpbWUoKSAtIGxhc3Quc3RhcnRUaW1lKCk7CiAgICAgbGFzdC5zZXRFbGFw
c2VkVGltZShwcmV2aW91c0VsYXBzZWRUaW1lICsgbmV3bHlFbGFwc2VkVGltZSk7CiB9CiAKQEAg
LTIyMywzMyArMjAwLDYgQEAgdm9pZCBQcm9maWxlR2VuZXJhdG9yOjpleGNlcHRpb25VbndpbmQo
RXhlY1N0YXRlKiBoYW5kbGVyQ2FsbEZyYW1lLCBjb25zdCBDYWxsSWQKICAgICB9CiB9CiAKLXZv
aWQgUHJvZmlsZUdlbmVyYXRvcjo6ZGlkUGF1c2UoUGFzc1JlZlB0cjxEZWJ1Z2dlckNhbGxGcmFt
ZT4sIGNvbnN0IENhbGxJZGVudGlmaWVyJikKLXsKLSAgICBBU1NFUlQoaXNuYW4obV9kZWJ1Z2dl
clBhdXNlZFRpbWVzdGFtcCkpOwotCi0gICAgbV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCA9IGN1
cnJlbnRUaW1lKCk7Ci0KLSAgICBmb3IgKFByb2ZpbGVOb2RlKiBub2RlID0gbV9jdXJyZW50Tm9k
ZS5nZXQoKTsgbm9kZSAhPSBtX3Byb2ZpbGUtPnJvb3ROb2RlKCk7IG5vZGUgPSBub2RlLT5wYXJl
bnQoKSkgewotICAgICAgICBQcm9maWxlTm9kZTo6Q2FsbCYgbGFzdCA9IG5vZGUtPmxhc3RDYWxs
KCk7Ci0gICAgICAgIEFTU0VSVCghaXNuYW4obGFzdC5zdGFydFRpbWUoKSkpOwotCi0gICAgICAg
IGRvdWJsZSBwcmV2aW91c0VsYXBzZWRUaW1lID0gaXNuYW4obGFzdC5lbGFwc2VkVGltZSgpKSA/
IDAuMCA6IGxhc3QuZWxhcHNlZFRpbWUoKTsKLSAgICAgICAgZG91YmxlIGFkZGl0aW9uYWxFbGFw
c2VkVGltZSA9IG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXAgLSBsYXN0LnN0YXJ0VGltZSgpOwot
ICAgICAgICBsYXN0LnNldFN0YXJ0VGltZShOQU4pOwotICAgICAgICBsYXN0LnNldEVsYXBzZWRU
aW1lKHByZXZpb3VzRWxhcHNlZFRpbWUgKyBhZGRpdGlvbmFsRWxhcHNlZFRpbWUpOwotICAgIH0K
LX0KLQotdm9pZCBQcm9maWxlR2VuZXJhdG9yOjpkaWRDb250aW51ZShQYXNzUmVmUHRyPERlYnVn
Z2VyQ2FsbEZyYW1lPiwgY29uc3QgQ2FsbElkZW50aWZpZXImKQotewotICAgIEFTU0VSVCghaXNu
YW4obV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCkpOwotCi0gICAgZm9yIChQcm9maWxlTm9kZSog
bm9kZSA9IG1fY3VycmVudE5vZGUuZ2V0KCk7IG5vZGUgIT0gbV9wcm9maWxlLT5yb290Tm9kZSgp
OyBub2RlID0gbm9kZS0+cGFyZW50KCkpCi0gICAgICAgIG5vZGUtPmxhc3RDYWxsKCkuc2V0U3Rh
cnRUaW1lKG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApOwotCi0gICAgbV9kZWJ1Z2dlclBhdXNl
ZFRpbWVzdGFtcCA9IE5BTjsKLX0KLQogdm9pZCBQcm9maWxlR2VuZXJhdG9yOjpzdG9wUHJvZmls
aW5nKCkKIHsKICAgICBmb3IgKFByb2ZpbGVOb2RlKiBub2RlID0gbV9jdXJyZW50Tm9kZS5nZXQo
KTsgbm9kZSAhPSBtX3Byb2ZpbGUtPnJvb3ROb2RlKCk7IG5vZGUgPSBub2RlLT5wYXJlbnQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5o
CmluZGV4IDlmNTFhM2RjODZjZDMzZjQxYTRlNGJlYWZlOWY1MGMzY2NjOTQxZjIuLjc4NWY3OTlm
MmNlZWJkM2I1NzQ4OGVlYzZmYzkzNGIwMzdlNThmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQyLDcg
KzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcm9maWxlR2VuZXJhdG9yIDog
cHVibGljIFJlZkNvdW50ZWQ8UHJvZmlsZUdlbmVyYXRvcj4gIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IGNyZWF0ZShFeGVjU3RhdGUq
LCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBX
VEY6OlN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCwgUGFzc1JlZlB0cjxTdG9wd2F0Y2g+KTsK
IAogICAgICAgICAvLyBNZW1iZXJzCiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSgp
IGNvbnN0OwpAQCAtNTQsMTUgKzU1LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGRpZEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IENhbGxJZGVudGlm
aWVyJik7CiAgICAgICAgIHZvaWQgZXhjZXB0aW9uVW53aW5kKEV4ZWNTdGF0ZSogaGFuZGxlckNh
bGxGcmFtZSwgY29uc3QgQ2FsbElkZW50aWZpZXImKTsKIAotICAgICAgICB2b2lkIGRpZFBhdXNl
KFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+LCBjb25zdCBDYWxsSWRlbnRpZmllciYpOwot
ICAgICAgICB2b2lkIGRpZENvbnRpbnVlKFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+LCBj
b25zdCBDYWxsSWRlbnRpZmllciYpOwotCiAgICAgICAgIHZvaWQgc2V0SXNTdXNwZW5kZWQoYm9v
bCBzdXNwZW5kZWQpIHsgQVNTRVJUKG1fc3VzcGVuZGVkICE9IHN1c3BlbmRlZCk7IG1fc3VzcGVu
ZGVkID0gc3VzcGVuZGVkOyB9CiAKICAgICAgICAgdm9pZCBzdG9wUHJvZmlsaW5nKCk7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBQcm9maWxlR2VuZXJhdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IFdU
Rjo6U3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKTsKKyAgICAgICAgUHJvZmlsZUdlbmVyYXRv
cihFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCwgUGFz
c1JlZlB0cjxTdG9wd2F0Y2g+KTsKICAgICAgICAgdm9pZCBhZGRQYXJlbnRGb3JDb25zb2xlU3Rh
cnQoRXhlY1N0YXRlKik7CiAKICAgICAgICAgdm9pZCByZW1vdmVQcm9maWxlU3RhcnQoKTsKQEAg
LTc0LDggKzcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxQcm9maWxlPiBt
X3Byb2ZpbGU7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBtX29yaWdpbjsKICAgICAgICAgdW5z
aWduZWQgbV9wcm9maWxlR3JvdXA7Ci0gICAgICAgIC8vIFRpbWVzdGFtcCBpcyBzZXQgdG8gTkFO
IHdoZW4gdGhlIGRlYnVnZ2VyIGlzIG5vdCBjdXJyZW50bHkgcGF1c2VkLgotICAgICAgICBkb3Vi
bGUgbV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcDsKKyAgICAgICAgUmVmUHRyPFN0b3B3YXRjaD4g
bV9zdG9wd2F0Y2g7CiAgICAgICAgIFJlZlB0cjxQcm9maWxlTm9kZT4gbV9yb290Tm9kZTsKICAg
ICAgICAgUmVmUHRyPFByb2ZpbGVOb2RlPiBtX2N1cnJlbnROb2RlOwogICAgICAgICBib29sIG1f
Zm91bmRDb25zb2xlU3RhcnRQYXJlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi52Y3hw
cm9qL1dURi52Y3hwcm9qIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagppbmRl
eCA4YWIxYTQzMzFhNjhhNDQ3ZWM0OWVlYWY0NWU1NGMzYWNjNzI3ODg1Li43ODg5ZTJhOTg2Mjkw
ZmRkODU4ZWRlMmY3NDIyZGEwMTVhMGJlNjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52
Y3hwcm9qL1dURi52Y3hwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHBy
b2oKQEAgLTI3MCw2ICsyNzAsNyBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1
dGYtOCI/PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0YWNrQm91bmRzLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3RhdGljQ29uc3RydWN0b3JzLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3RkTGliRXh0cmFzLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3RvcHdhdGNoLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcU3RyaW5nRXh0cmFzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlx3dGZcU3RyaW5nSGFzaGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx3dGZcU3RyaW5nUHJpbnRTdHJlYW0uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RG
LnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RG
LnZjeHByb2ouZmlsdGVycwppbmRleCBkNWU1NjA4M2I3MDBkZTZhYjk5MTIyYjIxOTFlMDJiMTg0
NDg1YTg4Li4wYjM2ZTIyODYxZDE2YmI5ZWYzYTBhOWQyMzM3ZmFhNmRkMzllMDY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291
cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCkBAIC02MTIsNiArNjEyLDkg
QEAg77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdGRMaWJFeHRyYXMuaCI+CiAgICAgICA8RmlsdGVyPnd0Zjwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3Rm
XFN0b3B3YXRjaC5oIj4KKyAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3RyaW5nRXh0cmFzLmgiPgogICAg
ICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ2Y2JkNzExMzkxMWEzOWUxZGIwMWM1YWRl
M2NlZGRhZmNjYzY5OTguLmM2MWM0ZGM1MzI4NzJlZWI5MmNiOWQwMjAxNDMzZmM4YTNhMGJkZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjcyLDYgKzI3
Miw3IEBACiAJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzM3QjE1MUE4
MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovOyB9OwogCQlBOEE0NzQ4QzE1MUE4MjY0
MDA0MTIzRkYgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmggKi87IH07CiAJ
CUIzOEZEN0JEMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVmaW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjM4RkQ3QkMxNjg5NTNFODAwNjVD
OTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggKi87IH07CisJCUM0RjhBOTM3MTlDNjVFQjQwMEIyQjE1
RCAvKiBTdG9wd2F0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM0RjhBOTM2MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0Y2guaCAqLzsgfTsKIAkJ
Q0Q1NDk3QUMxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAg
LyogTWVkaWFUaW1lLmNwcCAqLzsgfTsKIAkJQ0Q1NDk3QUQxNTg1N0QwMzAwQjVCQzMwIC8qIE1l
ZGlhVGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovOyB9OwogCQlDRTQ2NTE2
RTE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0NjUxNkQxOURCMUZCNDAwM0VDQTA1IC8qIE5T
TWFwVGFibGVTUEkuaCAqLzsgfTsKQEAgLTU2NCw2ICs1NjUsNyBAQAogCQlBOEE0NzM3QjE1MUE4
MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXVEZUaHJlYWREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
QTQ3NDhCMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIzOEZE
N0JDMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVmaW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGZWF0dXJlRGVmaW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDNEY4QTkzNjE5QzY1RUI0MDBCMkIxNUQgLyogU3RvcHdhdGNoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3B3YXRjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhVGltZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRp
bWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFUaW1lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDY1MTZEMTlEQjFGQjQwMDNFQ0EwNSAvKiBOU01h
cFRhYmxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TTWFwVGFibGVT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1Nyw2ICs4NTksNyBAQAogCQkJ
CUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8sCiAJCQkJQThBNDcz
MTAxNTFBODI1QjAwNDEyM0ZGIC8qIFN0YXRpY0NvbnN0cnVjdG9ycy5oICovLAogCQkJCUE4QTQ3
MzExMTUxQTgyNUIwMDQxMjNGRiAvKiBTdGRMaWJFeHRyYXMuaCAqLywKKwkJCQlDNEY4QTkzNjE5
QzY1RUI0MDBCMkIxNUQgLyogU3RvcHdhdGNoLmggKi8sCiAJCQkJMUE2QkI3NjgxNjJGMzAwNTAw
REQxNkRCIC8qIFN0cmVhbUJ1ZmZlci5oICovLAogCQkJCUE4QTQ3MzEzMTUxQTgyNUIwMDQxMjNG
RiAvKiBTdHJpbmdFeHRyYXMuaCAqLywKIAkJCQlBNzQ4NzQ1MTE3QTBCREFFMDBGQTA0Q0IgLyog
U3RyaW5nSGFzaER1bXBDb250ZXh0LmggKi8sCkBAIC0xMDc1LDYgKzEwNzgsNyBAQAogCQkJCUE4
QTQ3M0EzMTUxQTgyNUIwMDQxMjNGRiAvKiBEZWNpbWFsTnVtYmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCNjZBNjE3QjZCNEZCMDBBN0FFM0YgLyogRGVmZXJyYWJsZVJlZkNvdW50ZWQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0E1MTUxQTgyNUIwMDQxMjNGRiAvKiBEZXF1ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQzRGOEE5MzcxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQTYxNTFBODI1QjAwNDEyM0ZGIC8qIERpc2FsbG93
Q1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0FGMTUxQTgyNUIwMDQxMjNGRiAvKiBk
aXktZnAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0IxMTUxQTgyNUIwMDQxMjNGRiAvKiBk
b3VibGUtY29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4
IGY1MDQwZjk4ZmM1OTVlYmNhODE5ZmVjZDAxNWFhMDBiMmVhMTBiZTUuLjI1OGJjNmJlMmYyMGEy
ZjliNTY4YmEwZTg4NDZlMzhkYjQ0YmM3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC05Myw2
ICs5Myw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFN0YWNrU3RhdHMuaAogICAgIFN0YXRpY0Nv
bnN0cnVjdG9ycy5oCiAgICAgU3RkTGliRXh0cmFzLmgKKyAgICBTdG9wd2F0Y2guaAogICAgIFN0
cmluZ0V4dHJhcy5oCiAgICAgU3RyaW5nSGFzaGVyLmgKICAgICBTdHJpbmdQcmludFN0cmVhbS5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdG9wd2F0Y2guaCBiL1NvdXJjZS9XVEYvd3Rm
L1N0b3B3YXRjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NWJlMTkxYzNkYjNhNGFlODc1NGQyYjVkNjBlODg3
ZGNlZGY4MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdG9wd2F0Y2guaApA
QCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2Yg
V2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0b3B3YXRjaF9oCisjZGVmaW5l
IFN0b3B3YXRjaF9oCisKKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
Y2xhc3MgV1RGX0VYUE9SVF9QUklWQVRFIFN0b3B3YXRjaCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0
b3B3YXRjaD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0b3B3YXRjaD4gY3Jl
YXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RvcHdhdGNoKCkpOwor
ICAgIH0KKworICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBz
dG9wKCk7CisKKyAgICBkb3VibGUgZWxhcHNlZFRpbWUoKTsKKworcHJpdmF0ZToKKyAgICBTdG9w
d2F0Y2goKQorICAgICAgICA6IG1fZWxhcHNlZFRpbWUoTkFOKQorICAgICAgICAsIG1fbGFzdFN0
YXJ0VGltZShOQU4pCisgICAgeworICAgIH0KKworICAgIGRvdWJsZSBtX2VsYXBzZWRUaW1lOwor
ICAgIGRvdWJsZSBtX2xhc3RTdGFydFRpbWU7Cit9OworCitpbmxpbmUgdm9pZCBTdG9wd2F0Y2g6
OnJlc2V0KCkKK3sKKyAgICBtX2VsYXBzZWRUaW1lID0gMC4wOworICAgIG1fbGFzdFN0YXJ0VGlt
ZSA9IE5BTjsKK30KKworaW5saW5lIHZvaWQgU3RvcHdhdGNoOjpzdGFydCgpCit7CisgICAgQVNT
RVJUKCFpc25hbihtX2VsYXBzZWRUaW1lKSAmJiBpc25hbihtX2xhc3RTdGFydFRpbWUpKTsKKwor
ICAgIG1fbGFzdFN0YXJ0VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworfQor
CitpbmxpbmUgdm9pZCBTdG9wd2F0Y2g6OnN0b3AoKQoreworICAgIEFTU0VSVCghaXNuYW4obV9l
bGFwc2VkVGltZSkgJiYgIWlzbmFuKG1fbGFzdFN0YXJ0VGltZSkpOworCisgICAgbV9lbGFwc2Vk
VGltZSArPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fbGFzdFN0YXJ0VGltZTsK
KyAgICBtX2xhc3RTdGFydFRpbWUgPSBOQU47Cit9CisKK2lubGluZSBkb3VibGUgU3RvcHdhdGNo
OjplbGFwc2VkVGltZSgpCit7CisgICAgYm9vbCBzaG91bGRTdXNwZW5kID0gIWlzbmFuKG1fbGFz
dFN0YXJ0VGltZSk7CisgICAgaWYgKHNob3VsZFN1c3BlbmQpCisgICAgICAgIHN0b3AoKTsKKwor
ICAgIEFTU0VSVCghaXNuYW4obV9lbGFwc2VkVGltZSkgJiYgaXNuYW4obV9sYXN0U3RhcnRUaW1l
KSk7CisgICAgZG91YmxlIGVsYXBzZWRUaW1lID0gbV9lbGFwc2VkVGltZTsKKworICAgIGlmIChz
aG91bGRTdXNwZW5kKQorICAgICAgICBzdGFydCgpOworICAgIHJldHVybiBlbGFwc2VkVGltZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6U3RvcHdhdGNoOworCisjZW5k
aWYgLy8gU3RvcHdhdGNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCmluZGV4IGVlM2RkMzhhN2M1MDhjYmY5ODY4YmM0OTJkYjFmMTM0NTIwOTk3
ZDAuLjIzZWJjZTFhZWI5NDc0YWViNTZjMDBiNGY0OGE3MWIwNmRkYjg3NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNTcsNyArNTcs
NiBAQAogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0TmFtZWRG
bG93LmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgotI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggNDA5OWIyOWY0MzcxOTY4MWIx
YzRmNDhjZjdkMWFlMzIwMTU4NGQyMC4uM2MyZmY3YTgxNDY2N2ZjZGJlOWY3ZjIyNzVhOTE0MjE0
OWM3MjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvck92ZXJsYXkuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3Ry
dW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKQEAgLTczLDcgKzc0LDYg
QEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oPgogI2luY2x1
ZGUgPGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtMzYxLDYgKzM2MSwxNiBAQCB2b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVj
dFJlYXNvbgogI2VuZGlmCiB9CiAKK2RvdWJsZSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnRpbWVzdGFt
cCgpCit7CisgICAgLy8gSWYgdGhlIHRpbWVsaW5lIGFnZW50IGlzIHJlY29yZGluZyBub3csIHVz
ZSBpdHMgc3RvcHdhdGNoLiBPdGhlcndpc2UsIGp1c3QgcmVwb3J0IDAuMAorICAgIC8vIHNpbmNl
IHRoZSB0aW1lc3RhbXBzIGFyZSBvbmx5IHVzZWQgdG8gYWNjdXJhdGVseSBncmFwaCByZWNvcmRz
IG9uIHRoZSB0aW1lbGluZS4KKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgp
KQorICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+dGltZXN0YW1wKCk7CisKKyAgICByZXR1
cm4gMC4wOworfQorCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5n
JikKIHsKICAgICBtX2VuYWJsZWQgPSB0cnVlOwpAQCAtNzUyLDEyICs3NjIsMTIgQEAgdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJh
bWUsIERPTVdyYXBwZXJXb3IKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpkb21Db250ZW50RXZl
bnRGaXJlZCgpCiB7CiAgICAgbV9pc0ZpcnN0TGF5b3V0QWZ0ZXJPbkxvYWQgPSB0cnVlOwotICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kb21Db250ZW50RXZlbnRGaXJlZChjdXJyZW50VGltZSgp
KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZG9tQ29udGVudEV2ZW50RmlyZWQodGltZXN0
YW1wKCkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bG9hZEV2ZW50RmlyZWQoKQog
ewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sb2FkRXZlbnRGaXJlZChjdXJyZW50VGltZSgp
KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9hZEV2ZW50RmlyZWQodGltZXN0YW1wKCkp
OwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuaAppbmRleCAxOGRjYzNmYTE5MGE3NWEyZDhjNTU1NWQzNDAzNWRmMThjMWI5MjhkLi4w
NjYzN2UyZDU1MDUwYWIyZGUzNTdmN2M0YWRhMjcxZWQ2NWE2OWU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC0xNjcsNiArMTY3LDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRvdWNoRXZlbnRFbXVsYXRpb25JblBhZ2UoYm9vbCk7
CiAjZW5kaWYKIAorICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKKwogICAgIHN0YXRpYyBib29sIG1h
aW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyog
cmVzdWx0KTsKICAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJh
c2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggMDUxMjI0OWM4M2EyMzk5
YWNhZDAzZWJhMzZmZWQ5MDkyYTYwMTBjMi4uMzAyYmMzNGY0ZTRmMjkzNzI2N2Y1OWZkNTQxNzFj
ZjcwYzk1NzQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkljb25Db250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yUGFnZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnN0
cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCkBA
IC02OSw3ICs3MCw2IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgog
I2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0
b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKQEAgLTI3Niw2ICsyNzYsMTYgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fklu
c3BlY3RvclJlc291cmNlQWdlbnQoKQogICAgIEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRz
LT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpOwogfQogCitkb3VibGUgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6dGltZXN0YW1wKCkKK3sKKyAgICAvLyBJZiB0aGUgdGltZWxpbmUgYWdlbnQgaXMg
cmVjb3JkaW5nIG5vdywgdXNlIGl0cyBzdG9wd2F0Y2guIE90aGVyd2lzZSwganVzdCByZXBvcnQg
MC4wCisgICAgLy8gc2luY2UgdGhlIHRpbWVzdGFtcHMgYXJlIG9ubHkgdXNlZCB0byBhY2N1cmF0
ZWx5IGdyYXBoIHJlY29yZHMgb24gdGhlIHRpbWVsaW5lLgorICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0
b3JUaW1lbGluZUFnZW50KCkpCisgICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT50aW1lc3Rh
bXAoKTsKKworICAgIHJldHVybiAwLjA7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGlmIChyZXF1ZXN0LmhpZGRlbkZyb21JbnNw
ZWN0b3IoKSkgewpAQCAtMzIwLDcgKzMzMCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMCiAg
ICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSA9
IEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSnNvbih0eXBlKTsKIAogICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVj
dCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUo
KS0+ZG9jdW1lbnQoKSA6IG51bGxwdHIpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1
ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJh
bWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBsb2FkZXItPnVybCgpLnN0cmlu
ZygpLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgY3VycmVudFRpbWUo
KSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVkaXJl
Y3RSZXNwb25zZSwgbG9hZGVyKSwgdHlwZSAhPSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVz
b3VyY2UgPyAmcmVzb3VyY2VUeXBlIDogbnVsbHB0cik7CisgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPnJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9h
ZGVyLT5mcmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciksIGxvYWRlci0+dXJs
KCkuc3RyaW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCB0aW1l
c3RhbXAoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2Uo
cmVkaXJlY3RSZXNwb25zZSwgbG9hZGVyKSwgdHlwZSAhPSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90
aGVyUmVzb3VyY2UgPyAmcmVzb3VyY2VUeXBlIDogbnVsbHB0cik7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6bWFya1Jlc291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKQpAQCAtMzY1LDcgKzM3NSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lCiAgICAg
bV9yZXNvdXJjZXNEYXRhLT5yZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQt
PmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgcmVzcG9uc2UpOwogICAgIG1fcmVzb3VyY2VzRGF0
YS0+c2V0UmVzb3VyY2VUeXBlKHJlcXVlc3RJZCwgdHlwZSk7CiAKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+cmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlk
KGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBjdXJyZW50
VGltZSgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24odHlwZSksIHJlc291
cmNlUmVzcG9uc2UpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXNwb25zZVJlY2VpdmVk
KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgbV9wYWdl
QWdlbnQtPmxvYWRlcklkKGxvYWRlciksIHRpbWVzdGFtcCgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnJlc291cmNlVHlwZUpzb24odHlwZSksIHJlc291cmNlUmVzcG9uc2UpOwogCiAgICAgLy8gSWYg
d2UgcmV2YWxpZGF0ZWQgdGhlIHJlc291cmNlIGFuZCBnb3QgTm90IG1vZGlmaWVkLCBzZW5kIGNv
bnRlbnQgbGVuZ3RoIGZvbGxvd2luZyBkaWRSZWNlaXZlUmVzcG9uc2UKICAgICAvLyBhcyB0aGVy
ZSB3aWxsIGJlIG5vIGNhbGxzIHRvIGRpZFJlY2VpdmVEYXRhIGZyb20gdGhlIG5ldHdvcmsgc3Rh
Y2suCkBAIC0zOTEsNyArNDAxLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRS
ZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIKICAgICAgICAg
ICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBkYXRh
LCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGF0YVJl
Y2VpdmVkKHJlcXVlc3RJZCwgY3VycmVudFRpbWUoKSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFM
ZW5ndGgpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kYXRhUmVjZWl2ZWQocmVxdWVzdElk
LCB0aW1lc3RhbXAoKSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBkb3VibGUgZmluaXNoVGltZSkKQEAg
LTQxMSw3ICs0MjEsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExv
YWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudAogICAgIC8vIEhvd2V2ZXIs
IGFsbCBvdGhlciB0aW1lcyBwYXNzZWQgdG8gdGhlIEluc3BlY3RvciBhcmUgZ2VuZXJhdGVkIGZy
b20gdGhlIHdlYiBwcm9jZXNzLiBNaXhpbmcKICAgICAvLyB0aW1lcyBmcm9tIGRpZmZlcmVudCBw
cm9jZXNzZXMgY2FuIGNhdXNlIHRoZSBmaW5pc2ggdGltZSB0byBiZSBlYXJsaWVyIHRoYW4gdGhl
IHJlc3BvbnNlCiAgICAgLy8gcmVjZWl2ZWQgdGltZSBkdWUgdG8gaW50ZXItcHJvY2VzcyBjb21t
dW5pY2F0aW9uIGxhZy4KLSAgICBmaW5pc2hUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBmaW5p
c2hUaW1lID0gdGltZXN0YW1wKCk7CiAKICAgICBTdHJpbmcgc291cmNlTWFwcGluZ1VSTDsKICAg
ICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEg
PSBtX3Jlc291cmNlc0RhdGEtPmRhdGEocmVxdWVzdElkKTsKQEAgLTQzNyw3ICs0NDcsNyBAQCB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMbwogICAgIH0KIAogICAgIGJvb2wgY2FuY2VsZWQgPSBlcnJv
ci5pc0NhbmNlbGxhdGlvbigpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sb2FkaW5nRmFp
bGVkKHJlcXVlc3RJZCwgY3VycmVudFRpbWUoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24o
KSwgY2FuY2VsZWQgPyAmY2FuY2VsZWQgOiBudWxscHRyKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+bG9hZGluZ0ZhaWxlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCgpLCBlcnJvci5sb2NhbGl6
ZWREZXNjcmlwdGlvbigpLCBjYW5jZWxlZCA/ICZjYW5jZWxlZCA6IG51bGxwdHIpOwogfQogCiB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZShEb2N1bWVudExvYWRlciogbG9hZGVyLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCkBAIC00
NTYsNyArNDY2LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWQKIAogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1
aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKSA6IG51bGxwdHIpOwogCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RT
ZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVy
LT51cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9i
amVjdEZvckNhY2hlZFJlc291cmNlKHJlc291cmNlLCBsb2FkZXIpKTsKKyAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+cmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1l
SWQsIGxvYWRlcklkLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCB0aW1lc3RhbXAoKSwgaW5pdGlh
dG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKHJlc291cmNlLCBsb2FkZXIp
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRJbml0aWFsU2NyaXB0Q29u
dGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5n
KQpAQCAtNTg4LDcgKzU5OCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNl
bmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlCiB7CiAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OldlYlNvY2tldFJlcXVlc3Q+IHJlcXVl
c3RPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0
OjpjcmVhdGUoKQogICAgICAgICAuc2V0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMocmVx
dWVzdC5odHRwSGVhZGVyRmllbGRzKCkpKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2Vi
U29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVz
dElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCByZXF1ZXN0T2JqZWN0KTsKKyAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KElkZW50
aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgcmVxdWVz
dE9iamVjdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC01OTcsMTIgKzYwNywxMiBAQCB2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZSh1bnNpZ25lZCBsb25nCiAgICAgICAgIC5zZXRTdGF0dXMocmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSkKICAgICAgICAgLnNldFN0YXR1c1RleHQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSkK
ICAgICAgICAgLnNldEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlc3BvbnNlLmh0dHBI
ZWFkZXJGaWVsZHMoKSkpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZVJlY2VpdmVkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50
aWZpZXIpLCBjdXJyZW50VGltZSgpLCByZXNwb25zZU9iamVjdCk7CisgICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPndlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlUmVjZWl2ZWQoSWRlbnRpZmllcnNG
YWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFtcCgpLCByZXNwb25zZU9iamVj
dCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ2xvc2VXZWJTb2NrZXQo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53
ZWJTb2NrZXRDbG9zZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciks
IGN1cnJlbnRUaW1lKCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRDbG9z
ZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFtcCgp
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0
RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJh
bWUpCkBAIC02MTEsNyArNjIxLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRS
ZWNlaXZlV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLAogICAgICAgICAu
c2V0T3Bjb2RlKGZyYW1lLm9wQ29kZSkKICAgICAgICAgLnNldE1hc2soZnJhbWUubWFza2VkKQog
ICAgICAgICAuc2V0UGF5bG9hZERhdGEoU3RyaW5nKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxv
YWRMZW5ndGgpKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0RnJhbWVSZWNl
aXZlZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgY3VycmVudFRp
bWUoKSwgZnJhbWVPYmplY3QpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRG
cmFtZVJlY2VpdmVkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0
aW1lc3RhbXAoKSwgZnJhbWVPYmplY3QpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmRpZFNlbmRXZWJTb2NrZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKQEAgLTYyMCwxMiArNjMwLDEyIEBAIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6ZGlkU2VuZFdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uCiAgICAgICAgIC5zZXRPcGNvZGUoZnJhbWUub3BDb2RlKQogICAgICAgICAu
c2V0TWFzayhmcmFtZS5tYXNrZWQpCiAgICAgICAgIC5zZXRQYXlsb2FkRGF0YShTdHJpbmcoZnJh
bWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkpOwotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT53ZWJTb2NrZXRGcmFtZVNlbnQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRl
bnRpZmllciksIGN1cnJlbnRUaW1lKCksIGZyYW1lT2JqZWN0KTsKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+d2ViU29ja2V0RnJhbWVTZW50KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElk
KGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgZnJhbWVPYmplY3QpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEZyYW1lRXJyb3IoSWRlbnRpZmllcnNGYWN0b3J5
OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIGN1cnJlbnRUaW1lKCksIGVycm9yTWVzc2FnZSk7Cisg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEZyYW1lRXJyb3IoSWRlbnRpZmllcnNG
YWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFtcCgpLCBlcnJvck1lc3NhZ2Up
OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggMjgzOTIwZGZlNTYz
MDc5MjFkNDY3NDllNjEzNDAzMDRjY2Y1YzZjMi4uYjk2NDRhZmM4MGRjZWE3ZmE4MzA4MTIyYzBm
YWExMDNhOTliNzQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oCkBAIC0xMzgsNiArMTM4LDggQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICB2b2lkIGVuYWJsZSgpOwogCisgICAgZG91YmxlIHRpbWVzdGFtcCgpOworCiAgICAgSW5z
cGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xp
ZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck5ldHdvcmtGcm9u
dGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IGE4NmNhODk5
MDQ3OWQzZTY1ZGY3ZmIwNTI1NGQwY2QyNmM2MmNiOGQuLjhiM2ViNGVkYzFjOWEwNTA1MGI5N2Zi
NjQxZGQ0OTlhYjEzYzc4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTYxLDExICs2MSw2IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBUaW1lbGluZVRp
bWVDb252ZXJ0ZXI6OnJlc2V0KCkKLXsKLSAgICBtX3N0YXJ0T2Zmc2V0ID0gbW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCkgLSBjdXJyZW50VGltZSgpOwotfQotCiBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpCiB7CiB9CkBAIC03Niw2ICs3MSw3IEBA
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3Bl
Y3RvclRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcyk7CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFBlcnNpc3RlbnRJbnNwZWN0
b3JUaW1lbGluZUFnZW50KHRoaXMpOworICAgIG1fc3RvcHdhdGNoLT5yZXNldCgpOwogCiAgICAg
aWYgKG1fc2NyaXB0RGVidWdTZXJ2ZXIpCiAgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXItPnJl
Y29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CkBAIC0xMTgsNyArMTE0LDcgQEAgdm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVw
dGgpCiAgICAgZWxzZQogICAgICAgICBtX21heENhbGxTdGFja0RlcHRoID0gNTsKIAotICAgIG1f
dGltZUNvbnZlcnRlci5yZXNldCgpOworICAgIG1fc3RvcHdhdGNoLT5zdGFydCgpOwogCiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMpOwog
CkBAIC0xMzYsNiArMTMyLDggQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5h
bFN0b3AoKQogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX3N0
b3B3YXRjaC0+c3RvcCgpOworCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0
b3JUaW1lbGluZUFnZW50KG51bGxwdHIpOwogCiAgICAgaWYgKG1fc2NyaXB0RGVidWdTZXJ2ZXIp
CkBAIC0xNTcsOSArMTU1LDkgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRQYWdl
U2NyaXB0RGVidWdTZXJ2ZXIoUGFnZVNjcmlwdERlYnVnU2VydmVyKiBzY3IKICAgICBtX3Njcmlw
dERlYnVnU2VydmVyID0gc2NyaXB0RGVidWdTZXJ2ZXI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9p
ZCBzdGFydFByb2ZpbGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRs
ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzdGFydFByb2ZpbGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzc1JlZlB0cjxTdG9wd2F0Y2g+IHN0b3B3YXRjaCkK
IHsKLSAgICBKU0M6OkxlZ2FjeVByb2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2ZpbGluZyhl
eGVjLCB0aXRsZSk7CisgICAgSlNDOjpMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQ
cm9maWxpbmcoZXhlYywgdGl0bGUsIHN0b3B3YXRjaCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxKU0M6OlByb2ZpbGU+IHN0b3BQcm9maWxpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFN0cmluZyYgdGl0bGUpCkBAIC0xNjcsOSArMTY1LDkgQEAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPEpTQzo6UHJvZmlsZT4gc3RvcFByb2ZpbGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgY29uc3QKICAgICByZXR1cm4gSlNDOjpMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3Rv
cFByb2ZpbGluZyhleGVjLCB0aXRsZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFydFBy
b2ZpbGluZyhGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCitzdGF0aWMgaW5saW5l
IHZvaWQgc3RhcnRQcm9maWxpbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQ
YXNzUmVmUHRyPFN0b3B3YXRjaD4gc3RvcHdhdGNoKQogewotICAgIHN0YXJ0UHJvZmlsaW5nKHRv
SlNET01XaW5kb3coZnJhbWUsIGRlYnVnZ2VyV29ybGQoKSktPmdsb2JhbEV4ZWMoKSwgdGl0bGUp
OworICAgIHN0YXJ0UHJvZmlsaW5nKHRvSlNET01XaW5kb3coZnJhbWUsIGRlYnVnZ2VyV29ybGQo
KSktPmdsb2JhbEV4ZWMoKSwgdGl0bGUsIHN0b3B3YXRjaCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IHN0b3BQcm9maWxpbmcoRnJhbWUqIGZyYW1lLCBjb25z
dCBTdHJpbmcmIHRpdGxlKQpAQCAtMTkzLDcgKzE5MSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nCiAgICAgaWYgKCFtX2VuYWJsZWQgJiYgbV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRz
LmlzRW1wdHkoKSkKICAgICAgICAgaW50ZXJuYWxTdGFydCgpOwogCi0gICAgc3RhcnRQcm9maWxp
bmcoZXhlYywgdGl0bGUpOworICAgIHN0YXJ0UHJvZmlsaW5nKGV4ZWMsIHRpdGxlLCBtX3N0b3B3
YXRjaCk7CiAKICAgICBtX3BlbmRpbmdDb25zb2xlUHJvZmlsZVJlY29yZHMuYXBwZW5kKGNyZWF0
ZVJlY29yZEVudHJ5KFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlQ29uc29sZVByb2ZpbGVE
YXRhKHRpdGxlKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpDb25zb2xlUHJvZmlsZSwgdHJ1ZSwgZnJh
bWVGcm9tRXhlY1N0YXRlKGV4ZWMpKSk7CiB9CkBAIC0yMzIsNyArMjMwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsQ2FsbEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0
TmFtZSwgaW50IHNjcmkKICAgICBwdXNoQ3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEoc2NyaXB0TmFtZSwgc2NyaXB0TGluZSksIFRpbWVs
aW5lUmVjb3JkVHlwZTo6RnVuY3Rpb25DYWxsLCB0cnVlLCBmcmFtZSk7CiAKICAgICBpZiAoZnJh
bWUgJiYgIW1fY2FsbFN0YWNrRGVwdGgpCi0gICAgICAgIHN0YXJ0UHJvZmlsaW5nKGZyYW1lLCBB
U0NJSUxpdGVyYWwoIlRpbWVsaW5lIEZ1bmN0aW9uQ2FsbCIpKTsKKyAgICAgICAgc3RhcnRQcm9m
aWxpbmcoZnJhbWUsIEFTQ0lJTGl0ZXJhbCgiVGltZWxpbmUgRnVuY3Rpb25DYWxsIiksIG1fc3Rv
cHdhdGNoKTsKIAogICAgICsrbV9jYWxsU3RhY2tEZXB0aDsKIH0KQEAgLTQwNyw3ICs0MDUsNyBA
QCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxFdmFsdWF0ZVNjcmlwdChjb25zdCBT
dHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZQogCiAgICAgaWYgKGZyYW1lICYmICFtX2NhbGxTdGFj
a0RlcHRoKSB7CiAgICAgICAgICsrbV9jYWxsU3RhY2tEZXB0aDsKLSAgICAgICAgc3RhcnRQcm9m
aWxpbmcoZnJhbWUsIEFTQ0lJTGl0ZXJhbCgiVGltZWxpbmUgRXZhbHVhdGVTY3JpcHQiKSk7Cisg
ICAgICAgIHN0YXJ0UHJvZmlsaW5nKGZyYW1lLCBBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIEV2YWx1
YXRlU2NyaXB0IiksIG1fc3RvcHdhdGNoKTsKICAgICB9CiB9CiAKQEAgLTU1NCw2ICs1NTIsMTYg
QEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEkKICAgICBhcHBlbmRSZWNvcmQoVGltZWxpbmVSZWNv
cmRGYWN0b3J5OjpjcmVhdGVQcm9iZVNhbXBsZURhdGEoYWN0aW9uLCBoaXRDb3VudCksIFRpbWVs
aW5lUmVjb3JkVHlwZTo6UHJvYmVTYW1wbGUsIGZhbHNlLCBmcmFtZUZyb21FeGVjU3RhdGUoZXhl
YykpOwogfQogCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFBhdXNlKEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYpCit7CisgICAgbV9zdG9wd2F0Y2gtPnN0b3AoKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb250aW51ZSgpCit7CisgICAgbV9zdG9wd2F0Y2gt
PnN0YXJ0KCk7Cit9CisKIHN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZl
bnRUeXBlIHRvUHJvdG9jb2woVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNo
ICh0eXBlKSB7CkBAIC02OTAsNiArNjk4LDcgQEAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW4KICAg
ICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIiksIGluc3RydW1l
bnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX3Njcmlw
dERlYnVnU2VydmVyKG51bGxwdHIpCisgICAgLCBtX3N0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0
ZSgpKQogICAgICwgbV9pZCgxKQogICAgICwgbV9jYWxsU3RhY2tEZXB0aCgwKQogICAgICwgbV9t
YXhDYWxsU3RhY2tEZXB0aCg1KQpAQCAtNzQ4LDcgKzc1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6bG9jYWxUb1BhZ2VRdWFkKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIs
IGNvbnN0CiAKIGRvdWJsZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0aW1lc3RhbXAoKQogewot
ICAgIHJldHVybiBtX3RpbWVDb252ZXJ0ZXIuZnJvbU1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CisgICAgcmV0dXJuIG1fc3RvcHdhdGNo
LT5lbGFwc2VkVGltZSgpOwogfQogCiBQYWdlKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpwYWdl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oCmluZGV4IGE0Y2I0YzRlMmVmMjNlY2QzN2QwZWYwNGRjMTUzYTk4NmM2NWY0YmUuLjc0Yjdl
YjU0N2M3MmI3YWYyZDBlZTcyNDQ1MTAxYjE3M2IyODYyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtNDAsNiArNDAsNyBA
QAogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaD4KKyNp
bmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTExMywxOSArMTE0LDYgQEAgZW51bSBjbGFzcyBUaW1l
bGluZVJlY29yZFR5cGUgewogICAgIFdlYlNvY2tldERlc3Ryb3kKIH07CiAKLWNsYXNzIFRpbWVs
aW5lVGltZUNvbnZlcnRlciB7Ci1wdWJsaWM6Ci0gICAgVGltZWxpbmVUaW1lQ29udmVydGVyKCkK
LSAgICAgICAgOiBtX3N0YXJ0T2Zmc2V0KDApCi0gICAgewotICAgIH0KLSAgICBkb3VibGUgZnJv
bU1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZShkb3VibGUgdGltZSkgY29uc3QgIHsgcmV0dXJu
ICh0aW1lIC0gbV9zdGFydE9mZnNldCkgKiAxMDAwLjA7IH0KLSAgICB2b2lkIHJlc2V0KCk7Ci0K
LXByaXZhdGU6Ci0gICAgZG91YmxlIG1fc3RhcnRPZmZzZXQ7Ci19OwotCiBjbGFzcyBJbnNwZWN0
b3JUaW1lbGluZUFnZW50CiAgICAgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlCiAgICAgLCBw
dWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cgpAQCAtMjEwLDYgKzE5OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRmlyZUFuaW1hdGlv
bkZyYW1lKGludCBjYWxsYmFja0lkLCBGcmFtZSopOwogICAgIHZvaWQgZGlkRmlyZUFuaW1hdGlv
bkZyYW1lKCk7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBlbGFwc2VkIHRpbWUgZnJvbSBhIG1vbm90
b25pYyBzdG9wd2F0Y2ggdGhhdCBzdGFydHMgd2l0aCB0aW1lbGluZSByZWNvcmRpbmcgYW5kCisg
ICAgLy8gcGF1c2VzIHdoZW4gdGhlIGRlYnVnZ2VyIHBhdXNlcyBvciBleGVjdXRpb24gaXMgb3Ro
ZXJ3aXNlIHN1c3BlbmRlZC4KKyAgICBkb3VibGUgdGltZXN0YW1wKCk7CisKICNpZiBFTkFCTEUo
V0VCX1NPQ0tFVFMpCiAgICAgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBGcmFtZSopOwog
ICAgIHZvaWQgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRnJhbWUqKTsKQEAgLTIxOCwxMSArMjEwLDExIEBAIHB1YmxpYzoKICNlbmRp
ZgogCiBwcm90ZWN0ZWQ6Ci0gICAgLy8gU2NyaXB0RGVidWdMaXN0ZW5lci4gVGhpcyBpcyBvbmx5
IHVzZWQgdG8gY3JlYXRlIHJlY29yZHMgZm9yIHByb2JlIHNhbXBsZXMuCisgICAgLy8gU2NyaXB0
RGVidWdMaXN0ZW5lcgogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJj
ZUlELCBjb25zdCBTY3JpcHQmKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVk
VG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBpbnQsIGludCwgY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRDb250
aW51ZSgpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGJy
ZWFrcG9pbnRBY3Rpb25Tb3VuZChpbnQpIG92ZXJyaWRlIHsgfQpAQCAtMjY0LDE3ICsyNTYsMTUg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyUmVjb3JkU3RhY2soKTsKIAogICAgIHZvaWQgbG9j
YWxUb1BhZ2VRdWFkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IExheW91dFJlY3QmLCBGbG9h
dFF1YWQqKTsKLSAgICBjb25zdCBUaW1lbGluZVRpbWVDb252ZXJ0ZXImIHRpbWVDb252ZXJ0ZXIo
KSBjb25zdCB7IHJldHVybiBtX3RpbWVDb252ZXJ0ZXI7IH0KLSAgICBkb3VibGUgdGltZXN0YW1w
KCk7CiAgICAgUGFnZSogcGFnZSgpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VB
Z2VudDsKICAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIqIG1fc2NyaXB0RGVidWdTZXJ2ZXI7Ci0g
ICAgVGltZWxpbmVUaW1lQ29udmVydGVyIG1fdGltZUNvbnZlcnRlcjsKKworICAgIFJlZlB0cjxT
dG9wd2F0Y2g+IG1fc3RvcHdhdGNoOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yVGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVy
OwogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclRpbWVsaW5lQmFja2VuZERpc3BhdGNo
ZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0gICAgZG91YmxlIG1fdGltZXN0YW1wT2Zmc2V0Owog
CiAgICAgVmVjdG9yPFRpbWVsaW5lUmVjb3JkRW50cnk+IG1fcmVjb3JkU3RhY2s7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKaW5k
ZXggM2ZlYzQwMGFiMTIyNDI1OGQ3ODhkMjlkM2U2NWI5NWMxNmJjMjMwYy4uMTZjYjM4OGRmMjg3
YWY0NGFhMDBjZjNkZDY4NzM3OThlNjA5MzBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNp
bmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlLmg+
Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwppbmRleCA5MDIxMmUxNDI1
NjhjYjZiM2JhYTQxOWIxYmY3MDNhYzg1ZGVlODg2Li5kYmQ5YTU4OGJiYjE5ZGQ3OTU1OTIyZTUy
ODAxOTNkYzUzNzBhMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCkBA
IC0zNSw2ICszNSw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIgPSBmdW5jdGlvbigp
CiAgICAgdGhpcy5fYWN0aXZlUmVjb3JkaW5nID0gbnVsbDsKICAgICB0aGlzLl9pc0NhcHR1cmlu
ZyA9IGZhbHNlOwogCisgICAgLy8gRm9yIGxlZ2FjeSBiYWNrZW5kcywgd2UgY29tcHV0ZSB0aGUg
ZWxhcHNlZCB0aW1lIG9mIHJlY29yZHMgcmVsYXRpdmUgdG8gdGhpcyB0aW1lc3RhbXAuCisgICAg
dGhpcy5fbGVnYWN5Rmlyc3RSZWNvcmRUaW1lc3RhbXAgPSBOYU47CiAgICAgdGhpcy5fbmV4dFJl
Y29yZGluZ0lkZW50aWZpZXIgPSAxOwogCiAgICAgdGhpcy5fYm91bmRTdG9wQ2FwdHVyaW5nID0g
dGhpcy5zdG9wQ2FwdHVyaW5nLmJpbmQodGhpcyk7CkBAIC01NSw2ICs1Nyw3IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQgPSB7CiAgICAgQ2FwdHVyaW5nU3RvcHBlZDogInRp
bWVsaW5lLW1hbmFnZXItY2FwdHVyaW5nLXN0b3BwZWQiCiB9OwogCitXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVNYW5hZ2VyLlN0YXJ0VGltZVRocmVzaG9sZEZvckxlZ2FjeVJlY29yZENvbnZlcnNpb24g
PSAyODgwMDAwMDsgLy8gRGF0ZS5wYXJzZSgiSmFuIDEsIDE5NzAiKQogV2ViSW5zcGVjdG9yLlRp
bWVsaW5lTWFuYWdlci5NYXhpbXVtQXV0b1JlY29yZER1cmF0aW9uID0gOTAwMDA7IC8vIDkwIHNl
Y29uZHMKIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuTWF4aW11bUF1dG9SZWNvcmREdXJh
dGlvbkFmdGVyTG9hZEV2ZW50ID0gMTAwMDA7IC8vIDEwIHNlY29uZHMKIFdlYkluc3BlY3Rvci5U
aW1lbGluZU1hbmFnZXIuRGVhZFRpbWVSZXF1aXJlZFRvU3RvcEF1dG9SZWNvcmRpbmdFYXJseSA9
IDIwMDA7IC8vIDIgc2Vjb25kcwpAQCAtMTYzLDkgKzE2NiwyMCBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmdW5jdGlvbiBwcm9jZXNzUmVj
b3JkKHJlY29yZFBheWxvYWQsIHBhcmVudFJlY29yZFBheWxvYWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIC8vIENvbnZlcnQgdGhlIHRpbWVzdGFtcHMgdG8gc2Vjb25kcyB0byBtYXRjaCB0aGUg
cmVzb3VyY2UgdGltZXN0YW1wcy4KLSAgICAgICAgICAgIHZhciBzdGFydFRpbWUgPSByZWNvcmRQ
YXlsb2FkLnN0YXJ0VGltZSAvIDEwMDA7Ci0gICAgICAgICAgICB2YXIgZW5kVGltZSA9IHJlY29y
ZFBheWxvYWQuZW5kVGltZSAvIDEwMDA7CisgICAgICAgICAgICB2YXIgc3RhcnRUaW1lID0gcmVj
b3JkUGF5bG9hZC5zdGFydFRpbWU7CisgICAgICAgICAgICB2YXIgZW5kVGltZSA9IHJlY29yZFBh
eWxvYWQuZW5kVGltZTsKKworICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TOCk6IG9s
ZCB2ZXJzaW9ucyB1c2UgbWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCwgcmF0aGVyCisgICAg
ICAgICAgICAvLyB0aGFuIHNlY29uZHMgZWxhcHNlZCBzaW5jZSB0aW1lbGluZSBjYXB0dXJpbmcg
c3RhcnRlZC4gV2UgYXBwcm94aW1hdGUgdGhlIGxhdHRlciBieQorICAgICAgICAgICAgLy8gc3Vi
dHJhY3RpbmcgdGhlIHN0YXJ0IHRpbWVzdGFtcCwgYXMgb2xkIHZlcnNpb25zIGRpZCBub3QgdXNl
IG1vbm90b25pYyB0aW1lcy4KKyAgICAgICAgICAgIGlmIChpc05hTih0aGlzLl9sZWdhY3lGaXJz
dFJlY29yZFRpbWVzdGFtcCkpCisgICAgICAgICAgICAgICAgdGhpcy5fbGVnYWN5Rmlyc3RSZWNv
cmRUaW1lc3RhbXAgPSByZWNvcmRQYXlsb2FkLnN0YXJ0VGltZTsKKworICAgICAgICAgICAgLy8g
SWYgdGhlIHJlY29yZCdzIHN0YXJ0IHRpbWUgc2VtcyB1bnJlYXNvbmFibHkgbGFyZ2UsIHRyZWF0
IGl0IGFzIGEgbGVnYWN5IHRpbWVzdGFtcC4KKyAgICAgICAgICAgIGlmIChzdGFydFRpbWUgPiBX
ZWJJbnNwZWN0b3IuU3RhcnRUaW1lVGhyZXNob2xkRm9yTGVnYWN5UmVjb3JkQ29udmVyc2lvbikg
eworICAgICAgICAgICAgICAgIHN0YXJ0VGltZSA9IChzdGFydFRpbWUgLSB0aGlzLl9sZWdhY3lG
aXJzdFJlY29yZFRpbWVzdGFtcCkgLyAxMDAwOworICAgICAgICAgICAgICAgIGVuZFRpbWUgPSBp
c05hTihlbmRUaW1lKSA/IE5hTiA6IChzdGFydFRpbWUgLSB0aGlzLl9sZWdhY3lGaXJzdFJlY29y
ZFRpbWVzdGFtcCkgLyAxMDAwOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2YXIgY2Fs
bEZyYW1lcyA9IHRoaXMuX2NhbGxGcmFtZXNGcm9tUGF5bG9hZChyZWNvcmRQYXlsb2FkLnN0YWNr
VHJhY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UaW1lbGluZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVDb250ZW50Vmlldy5qcwppbmRleCBiZTRhNGU3YTg4
NDEyYmM0MDczMzhlNTE5YjA1YmZjOTI1YjRlMjBkLi5hMjAzZjJlMzFmYjM5OWNlYjdlZDA5NGEw
OWYzYjM1ZWMwYzlmMDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UaW1lbGluZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lQ29udGVudFZpZXcuanMKQEAgLTk4
LDYgKzk4LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZpZXcgPSBmdW5jdGlvbihy
ZWNvcmRpbmcpCiAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RhcnRlZCwg
dGhpcy5fY2FwdHVyaW5nU3RhcnRlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5l
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZl
bnQuQ2FwdHVyaW5nU3RvcHBlZCwgdGhpcy5fY2FwdHVyaW5nU3RvcHBlZCwgdGhpcyk7CiAKKyAg
ICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHRoaXMuX2RlYnVnZ2VyUGF1c2VkLCB0
aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5SZXN1bWVkLCB0aGlzLl9kZWJ1Z2dl
clJlc3VtZWQsIHRoaXMpOworCiAgICAgdGhpcy5zaG93T3ZlcnZpZXdUaW1lbGluZVZpZXcoKTsK
IH07CiAKQEAgLTQwNyw2ICs0MTAsMjIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zdG9wVXBkYXRpbmdDdXJyZW50VGltZSgp
OwogICAgIH0sCiAKKyAgICBfZGVidWdnZXJQYXVzZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsK
KyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Npb25TdGF0ZSA9PT0g
V2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuU2Vzc2lvblN0YXRlLlJlcGxheWluZykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9zdG9wVXBkYXRpbmdDdXJyZW50VGltZSgp
OworICAgIH0sCisKKyAgICBfZGVidWdnZXJSZXN1bWVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZXNzaW9uU3RhdGUgPT09
IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25TdGF0ZS5SZXBsYXlpbmcpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fc3RhcnRVcGRhdGluZ0N1cnJlbnRUaW1l
KCk7CisgICAgfSwKKwogICAgIF9yZWNvcmRpbmdUaW1lc1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl93YWl0aW5nVG9SZXNldEN1cnJlbnRUaW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239217</attachid>
            <date>2014-10-03 11:19:31 -0700</date>
            <delta_ts>2014-10-07 19:23:16 -0700</delta_ts>
            <desc>Try windows fix again</desc>
            <filename>bug-136351-20141003111851.patch</filename>
            <type>text/plain</type>
            <size>57054</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjlhZTdmZWM5YTdjMGM1ODgxZDViMmQ2NDFiNjM4ZTE0MjhiOWFlLi44ZDY4NzM5OGIyMzI4YWU5
Yjc0NjI3Y2VjMTg2NGZhYTAzOWIzMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxNC0xMC0wMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291
bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBOb3cgdGhhdCB3ZSBoYXZlIGEg
c3RvcHdhdGNoIHRvIHByb3ZpZGUgcGF1c2UtYXdhcmUgdGltaW5nIGRhdGEsIHdlIGNhbiByZW1v
dmUgdGhlCisgICAgICAgIHByb2ZpbGVyJ3MgaGFuZGxpbmcgb2YgZGVidWdnZXIgcGF1c2UvY29u
dGludWUgY2FsbGJhY2tzLiBUaGUgdGltZWxpbmUgYWdlbnQgYWNjb3VudHMKKyAgICAgICAgZm9y
IGRlYnVnZ2VyIHBhdXNlcyBieSBwYXVzaW5nIGFuZCByZXN1bWluZyB0aGUgc3RvcHdhdGNoLgor
CisgICAgICAgICogQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKEpTU3RhcnRQ
cm9maWxpbmcpOiBVc2UgYSBmcmVzaCBzdG9wd2F0Y2ggd2hlbiBwcm9maWxpbmcgZnJvbSB0aGUg
SlNDIEFQSS4KKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAg
ICAgICAoSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlUGF1c2UpOgorICAgICAg
ICAqIHByb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGVnYWN5UHJv
ZmlsZXI6OnByb2ZpbGVyKTogVXNlIG51bGxwdHIuCisgICAgICAgIChKU0M6OkxlZ2FjeVByb2Zp
bGVyOjpzdGFydFByb2ZpbGluZyk6IEhhbmQgb2ZmIGEgc3RvcHdhdGNoIHRvIHRoZSBwcm9maWxl
IGdlbmVyYXRvci4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OnN0b3BQcm9maWxpbmcp
OiBVc2UgbnVsbHB0ci4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OmRpZFBhdXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OmRpZENvbnRpbnVlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwcm9maWxlci9MZWdhY3lQcm9maWxlci5oOgorICAgICAgICAqIHBy
b2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwOiBSZW1vdmUgZGVidWdnZXIgcGF1c2UvY29udGlu
dWUgY2FsbGJhY2tzIGFuZCB0aGUKKyAgICAgICAgdGltZXN0YW1wIG1lbWJlciB0aGF0IHdhcyB1
c2VkIHRvIHRyYWNrIHRpbWUgZWxhcHNlZCBieSB0aGUgZGVidWdnZXIuIEp1c3QgdXNlIHRoZQor
ICAgICAgICBzdG9wd2F0Y2gncyBlbGFwc2VkIHRpbWVzIHRvIGdlbmVyYXRlIHN0YXJ0L2VsYXBz
ZWQgdGltZXMgZm9yIGZ1bmN0aW9uIGNhbGxzLgorICAgICAgICAoSlNDOjpQcm9maWxlR2VuZXJh
dG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQcm9maWxlR2VuZXJhdG9yOjpQcm9maWxlR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZUdlbmVyYXRvcjo6YmVnaW5DYWxsRW50cnkp
OgorICAgICAgICAoSlNDOjpQcm9maWxlR2VuZXJhdG9yOjplbmRDYWxsRW50cnkpOgorICAgICAg
ICAoSlNDOjpQcm9maWxlR2VuZXJhdG9yOjpkaWRQYXVzZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlByb2ZpbGVHZW5lcmF0b3I6OmRpZENvbnRpbnVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
cm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmg6CisKIDIwMTQtMTAtMDMgIFNhYW0gQmFyYXRpICA8
c2FhbWJhcmF0aTFAZ21haWwuY29tPgogCiAgICAgICAgIENoYW5nZSBob3cgMzItYml0IEpTVmFs
dWVzIGNoZWNrIGlmIHRoZXkgYXJlIGEgQm9vbGVhbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyZDllZDEyMzc0ZDY1YWVkMTBi
ZDI0Yjk1NTFhMTI2M2VjNjRmYTVlLi40YTA4MTg4NTlhNTJlMGY1OTYzOGQ4N2Q3ZmIwZWRhYmMz
ZjZmNTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTEwLTAzICBCcmlhbiBKLiBCdXJnICA8
YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aW1lbGlu
ZXMgc2hvdWxkIG5vdCBjb3VudCB0aW1lIGVsYXBzZWQgd2hpbGUgcGF1c2VkIGluIHRoZSBkZWJ1
Z2dlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2
MzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgICog
V1RGLnZjeHByb2ovV1RGLnZjeHByb2o6CisgICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHBy
b2ouZmlsdGVyczoKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1N0b3B3YXRjaC5oOiBB
ZGRlZC4gVGhpcyBpbXBsZW1lbnRzIGEgcmVmY291bnRlZCBtb25vdG9uaWMgc3RvcHdhdGNoLgor
ICAgICAgICAoV1RGOjpTdG9wd2F0Y2g6OnJlc2V0KToKKyAgICAgICAgKFdURjo6U3RvcHdhdGNo
OjpzdGFydCk6CisgICAgICAgIChXVEY6OlN0b3B3YXRjaDo6c3RvcCk6CisKIDIwMTQtMDktMjgg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgUmVmUHRySGFz
aE1hcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGVlMWE4MDA2YTY5ZjNmMWY1MWJjMzQxZDYyZjljMzBmODBjMzNi
MjkuLjQ4NTQyOGQ5ZDc2MGVjZTlhYmYzOWM4YmQ1NDEyNzM0ODQ4NDI2NmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2NiBAQAorMjAxNC0xMC0wMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2Fz
aGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBu
b3QgY291bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBUbyBhdm9pZCBjb3Vu
dGluZyB0aW1lIGVsYXBzZWQgd2hpbGUgdGhlIGRlYnVnZ2VyIGlzIHBhdXNlZCwgdGltZWxpbmUg
cmVjb3JkcyBzaG91bGQKKyAgICAgICAga2VlcCB0cmFjayBvZiB0aW1lIGVsYXBzZWQgc2luY2Ug
dGhlIHN0YXJ0IG9mIHRpbWVsaW5lIGNhcHR1cmluZywgcmF0aGVyIHRoYW4gd2FsbCBjbG9jawor
ICAgICAgICB0aW1lc3RhbXBzLiBXZSBjYW4gZWFzaWx5IGNvbXB1dGUgZWxhcHNlZCB0aW1lIGJ5
IHNoYXJpbmcgU3RvcHdhdGNoIGluc3RhbmNlIGFtb25nCisgICAgICAgIGFsbCB0aW1lbGluZSBy
ZWNvcmQtZ2VuZXJhdGluZyBjb2RlLiBUaGUgc3RvcHdhdGNoIGlzIHBhdXNlZCB3aGlsZSB0aGUg
ZGVidWdnZXIgaXMgcGF1c2VkLAorICAgICAgICBzbyBzdWJzZXF1ZW50IHRpbWUgbWVhc3VyZW1l
bnRzIHdpbGwgbm90IGluY2x1ZGUgdGltZSBlbGFwc2VkIHdoaWxlIHRoZSBkZWJ1Z2dlciBpcyBw
YXVzZWQuCisKKyAgICAgICAgQWdlbnRzIHVzZSB0aGUgc2hhcmVkIHN0b3B3YXRjaCB0byBnZW5l
cmF0ZSB0aW1lc3RhbXBzIGlmIHRoZSB0aW1lbGluZSBhZ2VudCBpcyBhY3RpdmUKKyAgICAgICAg
KGkuZS4sIGEgdGltZWxpbmUgcmVjb3JkaW5nIGlzIGJlaW5nIGNhcHR1cmVkKS4gSWYgbm90LCB1
c2UgYSB6ZXJvIHRpbWVzdGFtcCBzaW5jZSB0aGUgdGltaW5nIGRhdGEgaXMgb25seSByZXZlYWxl
ZCB0aHJvdWdoIHRoZSBUaW1lbGluZSBpbnRlcmZhY2UuCisKKyAgICAgICAgVGhpcyByZWZhY3Rv
cmluZyBpcyBzYWZlIGJlY2F1c2Ugc3RhcnQgYW5kIGVuZCB0aW1lcyBhcmUgb25seSB1c2VkIHRv
IGdyYXBoIHJlY29yZHM7IHRoZQorICAgICAgICB0aW1lc3RhbXAncyBhY3R1YWwgdmFsdWUgaXMg
aXJyZWxldmFudCBhbmQgaXMgbm90IGRpc3BsYXllZCBpbiB0aGUgdXNlciBpbnRlcmZhY2UuIERh
dGUKKyAgICAgICAgdGltZXN0YW1wcyBhcmUgc3RpbGwgaW5jbHVkZWQgd2l0aCBuZXR3b3JrLXJl
bGF0ZWQgcmVjb3JkcyBhcyBwYXJ0IG9mIHRoZWlyIGhlYWRlciBkYXRhLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgYmVjYXVzZSB3ZSBjYW5ub3QgcmVsaWFibHkgdGVzdCB0aW1pbmcgY2hhbmdl
cyBpbmR1Y2VkIGJ5IGRlYnVnZ2VyIHBhdXNlcy4KKyAgICAgICAgSXQgaXMgcG9zc2libGUgZm9y
IHJlY29yZHMgdG8gYWNjcnVlIHRpbWUgYmVmb3JlIHRoZSBkZWJ1Z2dlciBwYXVzZXMgb3IgYWZ0
ZXIgaXQgcmVzdW1lcy4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHA6IFJlbW92ZSB1bnVzZWQgaW5jbHVkZS4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcDogVXNlIHRpbWVzdGFtcHMgZnJvbSB0aGUgc2hhcmVkIHN0b3B3YXRjaC4K
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6dGltZXN0YW1wKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZG9tQ29udGVudEV2ZW50RmlyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpsb2FkRXZlbnRGaXJlZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDogVXNlIHRpbWVzdGFtcHMgZnJvbSB0aGUg
c2hhcmVkIHN0b3B3YXRjaC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdl
bnQ6OnRpbWVzdGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ2xvc2VXZWJTb2NrZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tl
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFNl
bmRXZWJTb2NrZXRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvcik6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHA6IEFkZCBjYWxscyB0byByZXNldCwgc3RhcnQsIGFuZCBzdG9wIHRo
ZSBzdG9wd2F0Y2guCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRQ
cm9maWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3Rh
cnRGcm9tQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50
Ojp3aWxsQ2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OndpbGxFdmFsdWF0ZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpkaWRQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpkaWRDb250aW51ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRpbWVzdGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1l
bGluZVRpbWVDb252ZXJ0ZXI6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOiBNYWtlIHRpbWVzdGFtcCgpIHB1YmxpYywgYW5kIHJl
bW92ZSBvbGQgdGltZXBpZWNlcy4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lVGltZUNvbnZl
cnRlcjo6VGltZWxpbmVUaW1lQ29udmVydGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlRpbWVsaW5lVGltZUNvbnZlcnRlcjo6ZnJvbU1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0aW1l
Q29udmVydGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRG
YWN0b3J5LmNwcDoKKwogMjAxNC0xMC0wMSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGlu
Z3Rvbi5lZHU+CiAKICAgICAgICAgRXZlbnRTZW5kZXIgZGlzcGF0Y2hlcyBzaG91bGQgYmUgcGVy
LURvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA4NzcwY2FhYzY2MTdkMzRkNGM3
M2VmY2JlYmZjMDFiMGIzOTg5NjNjLi5iZWQyNTA1MmE3N2MxYTg2OWEzYzhiZDhiMTIwYzYyMmFi
ZTcxNjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNC0x
MC0wMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291bnQgdGltZSBlbGFwc2VkIHdo
aWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkg
SGF0Y2hlci4KKworICAgICAgICBEb24ndCB1cGRhdGUgdGhlIHRpbWVsaW5lJ3MgY3VycmVudCB0
aW1lIHdoZW4gdGhlIGRlYnVnZ2VyIGlzIHBhdXNlZC4KKworICAgICAgICBTdGFydCBhbmQgZW5k
IHRpbWVzIGZvciB0aW1lbGluZSByZWNvcmRzIGFyZSBub3cgaW4gc2Vjb25kcyBlbGFwc2VkIHNp
bmNlIHRpbWVsaW5lCisgICAgICAgIHJlY29yZGluZyBzdGFydGVkLCByYXRoZXIgdGhhbiBtaWxs
aXNlY29uZHMgc2luY2UgdGhlIGVwb2NoLiBBZGQgYSB3b3JrYXJvdW5kIHRvCisgICAgICAgIHBy
ZXNlcnZlIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgYmFja2VuZHMuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmNhcHR1cmluZ1N0YXJ0ZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuZXZlbnRSZWNvcmRl
ZC5wcm9jZXNzUmVjb3JkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIu
cHJvdG90eXBlLmV2ZW50UmVjb3JkZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
VGltZWxpbmVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZUNv
bnRlbnRWaWV3LnByb3RvdHlwZS5fZGVidWdnZXJQYXVzZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lQ29udGVudFZpZXcucHJvdG90eXBlLl9kZWJ1Z2dlclJlc3VtZWQpOgorCiAy
MDE0LTEwLTAyICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogQ2Fubm90IGFkZCBhIG5ldyBDU1MgUnVsZSB0byBlbGVtZW50cyB3
aXRoIDMgb3IgbW9yZSBjbGFzcyBuYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1Byb2ZpbGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTUHJvZmlsZXJQcml2YXRlLmNwcAppbmRleCAyYTVlYzJjODIzOTAxZWQ5ZTFiYmQ4MjRjZmE5
YzYzZjhhODIzNjg2Li4zNWJhODNiYjYwODgxYmFmNjRlZTdmNTBlYzQ4YjFiNWQ1ZDE2MTJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNwcApA
QCAtMzQsNyArMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiB2b2lkIEpTU3RhcnRQcm9m
aWxpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgdGl0bGUpCiB7Ci0gICAgTGVnYWN5
UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0YXJ0UHJvZmlsaW5nKHRvSlMoY3R4KSwgdGl0bGUtPnN0
cmluZygpKTsKKyAgICBMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmco
dG9KUyhjdHgpLCB0aXRsZS0+c3RyaW5nKCksIFN0b3B3YXRjaDo6Y3JlYXRlKCkpOwogfQogCiB2
b2lkIEpTRW5kUHJvZmlsaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHRpdGxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2Vy
dmVyLmNwcAppbmRleCAyYzc4M2FmNDc3NmQ2MTU0ZjBmZjMyMzQ2MDc1ZjcxODRiMmUwYjQ5Li4z
YTYxNjYzZTM2YzQ3N2MxMTczYjJjYzM4ODc5M2QxNTJjYmYzOGNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAt
MzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1
ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRl
ICJMZWdhY3lQcm9maWxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAi
U291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTMw
NywxNCArMzA2LDEyIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZUV4Y2VwdGlvbklu
QnJlYWtwb2ludENvbmRpdGlvbihKU0M6OkV4ZWNTdGF0ZSogZXhlCiB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpoYW5kbGVQYXVzZShEZWJ1Z2dlcjo6UmVhc29uRm9yUGF1c2UsIEpTR2xvYmFsT2Jq
ZWN0KiB2bUVudHJ5R2xvYmFsT2JqZWN0KQogewogICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3Rl
bmVycygmU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1c2UpOwotICAgIExlZ2FjeVBy
b2ZpbGVyOjpwcm9maWxlcigpLT5kaWRQYXVzZShjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKSk7
CiAgICAgZGlkUGF1c2Uodm1FbnRyeUdsb2JhbE9iamVjdCk7CiAKICAgICBtX2RvbmVQcm9jZXNz
aW5nRGVidWdnZXJFdmVudHMgPSBmYWxzZTsKICAgICBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgp
OwogCiAgICAgZGlkQ29udGludWUodm1FbnRyeUdsb2JhbE9iamVjdCk7Ci0gICAgTGVnYWN5UHJv
ZmlsZXI6OnByb2ZpbGVyKCktPmRpZENvbnRpbnVlKGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgp
KTsKICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoJlNjcmlwdERlYnVnU2VydmVyOjpk
aXNwYXRjaERpZENvbnRpbnVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9MZWdhY3lQcm9maWxlci5jcHAKaW5kZXggNGZlMmJhNmIxY2U0MmI2OTJhNmM0ODU3
MDM2ODZmYTllNGY3ZjdmZi4uZTBjYTI2ODBiZGI5NTQ3NTE0OGZlNGM0MTkzNmRjNmU5NmZjM2E0
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2Zp
bGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmls
ZXIuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKLSNpbmNsdWRl
ICJEZWJ1Z2dlckNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTUw
LDE2ICs0OSwxNiBAQCBzdGF0aWMgdW5zaWduZWQgUHJvZmlsZXNVSUQgPSAwOwogCiBzdGF0aWMg
Q2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXJGcm9tRnVuY3Rpb25JbXAoRXhlY1N0
YXRlKiwgSlNPYmplY3QqLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRTb3VyY2VVUkwsIHVuc2lnbmVk
IGRlZmF1bHRMaW5lTnVtYmVyLCB1bnNpZ25lZCBkZWZhdWx0Q29sdW1uTnVtYmVyKTsKIAotTGVn
YWN5UHJvZmlsZXIqIExlZ2FjeVByb2ZpbGVyOjpzX3NoYXJlZExlZ2FjeVByb2ZpbGVyID0gMDsK
K0xlZ2FjeVByb2ZpbGVyKiBMZWdhY3lQcm9maWxlcjo6c19zaGFyZWRMZWdhY3lQcm9maWxlciA9
IG51bGxwdHI7CiAKIExlZ2FjeVByb2ZpbGVyKiBMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKQog
ewogICAgIGlmICghc19zaGFyZWRMZWdhY3lQcm9maWxlcikKICAgICAgICAgc19zaGFyZWRMZWdh
Y3lQcm9maWxlciA9IG5ldyBMZWdhY3lQcm9maWxlcigpOwogICAgIHJldHVybiBzX3NoYXJlZExl
Z2FjeVByb2ZpbGVyOwotfSAgIAorfQogCi12b2lkIExlZ2FjeVByb2ZpbGVyOjpzdGFydFByb2Zp
bGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIExlZ2FjeVBy
b2ZpbGVyOjpzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0
bGUsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPiBzdG9wd2F0Y2gpCiB7CiAgICAgaWYgKCFleGVjKQog
ICAgICAgICByZXR1cm47CkBAIC03NSwxNCArNzQsMTQgQEAgdm9pZCBMZWdhY3lQcm9maWxlcjo6
c3RhcnRQcm9maWxpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAg
IH0KIAogICAgIGV4ZWMtPnZtKCkuc2V0RW5hYmxlZFByb2ZpbGVyKHRoaXMpOwotICAgIFJlZlB0
cjxQcm9maWxlR2VuZXJhdG9yPiBwcm9maWxlR2VuZXJhdG9yID0gUHJvZmlsZUdlbmVyYXRvcjo6
Y3JlYXRlKGV4ZWMsIHRpdGxlLCArK1Byb2ZpbGVzVUlEKTsKKyAgICBSZWZQdHI8UHJvZmlsZUdl
bmVyYXRvcj4gcHJvZmlsZUdlbmVyYXRvciA9IFByb2ZpbGVHZW5lcmF0b3I6OmNyZWF0ZShleGVj
LCB0aXRsZSwgKytQcm9maWxlc1VJRCwgc3RvcHdhdGNoKTsKICAgICBtX2N1cnJlbnRQcm9maWxl
cy5hcHBlbmQocHJvZmlsZUdlbmVyYXRvcik7CiB9CiAKIFBhc3NSZWZQdHI8UHJvZmlsZT4gTGVn
YWN5UHJvZmlsZXI6OnN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IHRpdGxlKQogewogICAgIGlmICghZXhlYykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIG9yaWdpbiA9IGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKTsKICAgICBmb3IgKHB0cmRpZmZfdCBpID0gbV9jdXJyZW50UHJvZmls
ZXMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKQEAgLTk0LDEyICs5MywxMiBAQCBQYXNzUmVm
UHRyPFByb2ZpbGU+IExlZ2FjeVByb2ZpbGVyOjpzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgbV9jdXJyZW50UHJvZmlsZXMucmVtb3ZlKGkp
OwogICAgICAgICAgICAgaWYgKCFtX2N1cnJlbnRQcm9maWxlcy5zaXplKCkpCiAgICAgICAgICAg
ICAgICAgZXhlYy0+dm0oKS5zZXRFbmFibGVkUHJvZmlsZXIobnVsbHB0cik7Ci0gICAgICAgICAg
ICAKKwogICAgICAgICAgICAgcmV0dXJuIHJldHVyblByb2ZpbGU7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBMZWdhY3lQ
cm9maWxlcjo6c3RvcFByb2ZpbGluZyhKU0dsb2JhbE9iamVjdCogb3JpZ2luKQpAQCAtMTg0LDI4
ICsxODMsNiBAQCB2b2lkIExlZ2FjeVByb2ZpbGVyOjpleGNlcHRpb25VbndpbmQoRXhlY1N0YXRl
KiBoYW5kbGVyQ2FsbEZyYW1lKQogICAgIGNhbGxGdW5jdGlvbkZvclByb2ZpbGVzV2l0aEdyb3Vw
KHN0ZDo6YmluZCgmUHJvZmlsZUdlbmVyYXRvcjo6ZXhjZXB0aW9uVW53aW5kLCBzdGQ6OnBsYWNl
aG9sZGVyczo6XzEsIGhhbmRsZXJDYWxsRnJhbWUsIGNhbGxJZGVudGlmaWVyKSwgbV9jdXJyZW50
UHJvZmlsZXMsIGhhbmRsZXJDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvZmls
ZUdyb3VwKCkpOwogfQogCi12b2lkIExlZ2FjeVByb2ZpbGVyOjpkaWRQYXVzZShQYXNzUmVmUHRy
PERlYnVnZ2VyQ2FsbEZyYW1lPiBwcnBDYWxsRnJhbWUpCi17Ci0gICAgaWYgKG1fY3VycmVudFBy
b2ZpbGVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPERlYnVnZ2Vy
Q2FsbEZyYW1lPiBjYWxsRnJhbWUgPSBwcnBDYWxsRnJhbWU7Ci0gICAgQ2FsbElkZW50aWZpZXIg
Y2FsbElkZW50aWZpZXIgPSBjcmVhdGVDYWxsSWRlbnRpZmllcihjYWxsRnJhbWUtPmV4ZWMoKSwg
SlNWYWx1ZSgpLCBTdHJpbmdJbXBsOjplbXB0eSgpLCAwLCAwKTsKLQotICAgIGNhbGxGdW5jdGlv
bkZvclByb2ZpbGVzV2l0aEdyb3VwKHN0ZDo6YmluZCgmUHJvZmlsZUdlbmVyYXRvcjo6ZGlkUGF1
c2UsIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMSwgY2FsbEZyYW1lLCBjYWxsSWRlbnRpZmllciksIG1f
Y3VycmVudFByb2ZpbGVzLCBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+cHJvZmls
ZUdyb3VwKCkpOwotfQotCi12b2lkIExlZ2FjeVByb2ZpbGVyOjpkaWRDb250aW51ZShQYXNzUmVm
UHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiBwcnBDYWxsRnJhbWUpCi17Ci0gICAgaWYgKG1fY3VycmVu
dFByb2ZpbGVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPERlYnVn
Z2VyQ2FsbEZyYW1lPiBjYWxsRnJhbWUgPSBwcnBDYWxsRnJhbWU7Ci0gICAgQ2FsbElkZW50aWZp
ZXIgY2FsbElkZW50aWZpZXIgPSBjcmVhdGVDYWxsSWRlbnRpZmllcihjYWxsRnJhbWUtPmV4ZWMo
KSwgSlNWYWx1ZSgpLCBTdHJpbmdJbXBsOjplbXB0eSgpLCAwLCAwKTsKLQotICAgIGNhbGxGdW5j
dGlvbkZvclByb2ZpbGVzV2l0aEdyb3VwKHN0ZDo6YmluZCgmUHJvZmlsZUdlbmVyYXRvcjo6ZGlk
Q29udGludWUsIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMSwgY2FsbEZyYW1lLCBjYWxsSWRlbnRpZmll
ciksIG1fY3VycmVudFByb2ZpbGVzLCBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+
cHJvZmlsZUdyb3VwKCkpOwotfQotCiBDYWxsSWRlbnRpZmllciBMZWdhY3lQcm9maWxlcjo6Y3Jl
YXRlQ2FsbElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUs
IGNvbnN0IFN0cmluZyYgZGVmYXVsdFNvdXJjZVVSTCwgdW5zaWduZWQgZGVmYXVsdExpbmVOdW1i
ZXIsIHVuc2lnbmVkIGRlZmF1bHRDb2x1bW5OdW1iZXIpCiB7CiAgICAgaWYgKCFmdW5jdGlvblZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVBy
b2ZpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIu
aAppbmRleCAxZDZjYjI2ZjgzZmYwMmY4Y2FkMzI3MGQxNGUwMTQzNjYwYWI3NmFmLi44ZjZhZjQw
ZWU5OWVhNGE5MDUwMWU3ZWVlYTdiOTAyNzVjZWUzZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuaApAQCAtMzIsMTMgKzMyLDEyIEBACiAj
aW5jbHVkZSAiUHJvZmlsZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBEZWJ1Z2dlckNhbGxGcmFt
ZTsKIGNsYXNzIEV4ZWNTdGF0ZTsKLWNsYXNzIFZNOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBj
bGFzcyBKU09iamVjdDsKIGNsYXNzIEpTVmFsdWU7CkBAIC00OCwxMCArNDcsMTAgQEAgc3RydWN0
IENhbGxJZGVudGlmaWVyOwogY2xhc3MgTGVnYWN5UHJvZmlsZXIgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMZWdh
Y3lQcm9maWxlciogcHJvZmlsZXIoKTsgCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIExl
Z2FjeVByb2ZpbGVyKiBwcm9maWxlcigpOwogICAgIHN0YXRpYyBDYWxsSWRlbnRpZmllciBjcmVh
dGVDYWxsSWRlbnRpZmllcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBXVEY6OlN0cmluZyYg
c291cmNlVVJMLCB1bnNpZ25lZCBkZWZhdWx0TGluZU51bWJlciwgdW5zaWduZWQgZGVmYXVsdENv
bHVtbk51bWJlcik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0UHJvZmlsaW5n
KEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYg
dGl0bGUsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUGFz
c1JlZlB0cjxQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3Ry
aW5nJiB0aXRsZSk7CiAgICAgdm9pZCBzdG9wUHJvZmlsaW5nKEpTR2xvYmFsT2JqZWN0Kik7CiAK
QEAgLTY2LDkgKzY1LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBleGNlcHRpb25VbndpbmQoRXhl
Y1N0YXRlKiBoYW5kbGVyQ2FsbEZyYW1lKTsKIAotICAgIHZvaWQgZGlkUGF1c2UoUGFzc1JlZlB0
cjxEZWJ1Z2dlckNhbGxGcmFtZT4pOwotICAgIHZvaWQgZGlkQ29udGludWUoUGFzc1JlZlB0cjxE
ZWJ1Z2dlckNhbGxGcmFtZT4pOwotCiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxQcm9maWxlR2Vu
ZXJhdG9yPj4mIGN1cnJlbnRQcm9maWxlcygpIHsgcmV0dXJuIG1fY3VycmVudFByb2ZpbGVzOyB9
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVHZW5lcmF0b3IuY3BwCmluZGV4IDMyZTg5MjYwZWVmYzc4ZjJhOGViOTk2YWU5YTc3Zjg5
NmVkOTQzNzguLjlmOWNhNjU4NDg1MzgzZGU4NmQ3OTE0MTVkYjM4NmVlMWU2MWUyMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5j
cHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZ1JlZi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKQEAgLTQwLDIxICszOSwxOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotUGFzc1JlZlB0cjxQ
cm9maWxlR2VuZXJhdG9yPiBQcm9maWxlR2VuZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCitQYXNzUmVmUHRyPFByb2ZpbGVH
ZW5lcmF0b3I+IFByb2ZpbGVHZW5lcmF0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCwgUGFzc1JlZlB0cjxTdG9wd2F0Y2g+IHN0b3B3
YXRjaCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2ZpbGVHZW5lcmF0b3IoZXhlYywg
dGl0bGUsIHVpZCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHJvZmlsZUdlbmVyYXRvcihl
eGVjLCB0aXRsZSwgdWlkLCBzdG9wd2F0Y2gpKTsKIH0KIAotUHJvZmlsZUdlbmVyYXRvcjo6UHJv
ZmlsZUdlbmVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2ln
bmVkIHVpZCkKK1Byb2ZpbGVHZW5lcmF0b3I6OlByb2ZpbGVHZW5lcmF0b3IoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQsIFBhc3NSZWZQdHI8U3RvcHdh
dGNoPiBzdG9wd2F0Y2gpCiAgICAgOiBtX29yaWdpbihleGVjID8gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpIDogbnVsbHB0cikKICAgICAsIG1fcHJvZmlsZUdyb3VwKGV4ZWMgPyBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb2ZpbGVHcm91cCgpIDogMCkKLSAgICAsIG1fZGVidWdn
ZXJQYXVzZWRUaW1lc3RhbXAoTkFOKQorICAgICwgbV9zdG9wd2F0Y2goc3RvcHdhdGNoKQogICAg
ICwgbV9mb3VuZENvbnNvbGVTdGFydFBhcmVudChmYWxzZSkKICAgICAsIG1fc3VzcGVuZGVkKGZh
bHNlKQogewotICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPmRlYnVnZ2VyKCkpCi0gICAgICAgIG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXAg
PSBkZWJ1Z2dlci0+aXNQYXVzZWQoKSA/IGN1cnJlbnRUaW1lKCkgOiBOQU47Ci0KICAgICBtX3By
b2ZpbGUgPSBQcm9maWxlOjpjcmVhdGUodGl0bGUsIHVpZCk7CiAgICAgbV9jdXJyZW50Tm9kZSA9
IG1fcm9vdE5vZGUgPSBtX3Byb2ZpbGUtPnJvb3ROb2RlKCk7CiAgICAgaWYgKGV4ZWMpCkBAIC0x
MTgsMTIgKzExNCw3IEBAIHZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6YmVnaW5DYWxsRW50cnkoUHJv
ZmlsZU5vZGUqIG5vZGUsIGRvdWJsZSBzdGFydFRpbWUpCiAgICAgQVNTRVJUX0FSRyhub2RlLCBu
b2RlKTsKIAogICAgIGlmIChpc25hbihzdGFydFRpbWUpKQotICAgICAgICBzdGFydFRpbWUgPSBj
dXJyZW50VGltZSgpOwotCi0gICAgLy8gSWYgdGhlIGRlYnVnZ2VyIGlzIHBhdXNlZCB3aGVuIGJl
Z2lubmluZywgdGhlbiBkb24ndCBzZXQgdGhlIHN0YXJ0IHRpbWUuIEl0Ci0gICAgLy8gd2lsbCBi
ZSBmaXhlZCB1cCB3aGVuIHRoZSBkZWJ1Z2dlciB1bnBhdXNlcyBvciB0aGUgY2FsbCBlbnRyeSBl
bmRzLgotICAgIGlmICghaXNuYW4obV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCkpCi0gICAgICAg
IHN0YXJ0VGltZSA9IE5BTjsKKyAgICAgICAgc3RhcnRUaW1lID0gbV9zdG9wd2F0Y2gtPmVsYXBz
ZWRUaW1lKCk7CiAKICAgICBub2RlLT5hcHBlbmRDYWxsKFByb2ZpbGVOb2RlOjpDYWxsKHN0YXJ0
VGltZSkpOwogfQpAQCAtMTMzLDIyICsxMjQsOCBAQCB2b2lkIFByb2ZpbGVHZW5lcmF0b3I6OmVu
ZENhbGxFbnRyeShQcm9maWxlTm9kZSogbm9kZSkKICAgICBBU1NFUlRfQVJHKG5vZGUsIG5vZGUp
OwogCiAgICAgUHJvZmlsZU5vZGU6OkNhbGwmIGxhc3QgPSBub2RlLT5sYXN0Q2FsbCgpOwotCi0g
ICAgLy8gSWYgdGhlIGRlYnVnZ2VyIGlzIHBhdXNlZCwgaWdub3JlIHRoZSBpbnRlcnZhbCB0aGF0
IGVuZHMgbm93LgotICAgIGlmICghaXNuYW4obV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCkgJiYg
IWlzbmFuKGxhc3QuZWxhcHNlZFRpbWUoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElm
IHBhdXNlZCBhbmQgbm8gdGltZSB3YXMgYWNjcnVlZCB0aGVuIHRoZSBkZWJ1Z2dlciB3YXMgbmV2
ZXIgdW5wYXVzZWQuIFRoZSBjYWxsIHdpbGwKLSAgICAvLyBoYXZlIG5vIHRpbWUgYWNjcnVlZCBh
bmQgYXBwZWFyIHRvIGhhdmUgc3RhcnRlZCB3aGVuIHRoZSBkZWJ1Z2dlciB3YXMgcGF1c2VkLgot
ICAgIGlmICghaXNuYW4obV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCkpIHsKLSAgICAgICAgbGFz
dC5zZXRTdGFydFRpbWUobV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCk7Ci0gICAgICAgIGxhc3Qu
c2V0RWxhcHNlZFRpbWUoMC4wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE90
aGVyd2lzZSwgYWRkIHRoZSBpbnRlcnZhbCBlbmRpbmcgbm93IHRvIGVsYXBzZWQgdGltZS4KICAg
ICBkb3VibGUgcHJldmlvdXNFbGFwc2VkVGltZSA9IGlzbmFuKGxhc3QuZWxhcHNlZFRpbWUoKSkg
PyAwLjAgOiBsYXN0LmVsYXBzZWRUaW1lKCk7Ci0gICAgZG91YmxlIG5ld2x5RWxhcHNlZFRpbWUg
PSBjdXJyZW50VGltZSgpIC0gbGFzdC5zdGFydFRpbWUoKTsKKyAgICBkb3VibGUgbmV3bHlFbGFw
c2VkVGltZSA9IG1fc3RvcHdhdGNoLT5lbGFwc2VkVGltZSgpIC0gbGFzdC5zdGFydFRpbWUoKTsK
ICAgICBsYXN0LnNldEVsYXBzZWRUaW1lKHByZXZpb3VzRWxhcHNlZFRpbWUgKyBuZXdseUVsYXBz
ZWRUaW1lKTsKIH0KIApAQCAtMjIzLDMzICsyMDAsNiBAQCB2b2lkIFByb2ZpbGVHZW5lcmF0b3I6
OmV4Y2VwdGlvblVud2luZChFeGVjU3RhdGUqIGhhbmRsZXJDYWxsRnJhbWUsIGNvbnN0IENhbGxJ
ZAogICAgIH0KIH0KIAotdm9pZCBQcm9maWxlR2VuZXJhdG9yOjpkaWRQYXVzZShQYXNzUmVmUHRy
PERlYnVnZ2VyQ2FsbEZyYW1lPiwgY29uc3QgQ2FsbElkZW50aWZpZXImKQotewotICAgIEFTU0VS
VChpc25hbihtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wKSk7Ci0KLSAgICBtX2RlYnVnZ2VyUGF1
c2VkVGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKLQotICAgIGZvciAoUHJvZmlsZU5vZGUqIG5v
ZGUgPSBtX2N1cnJlbnROb2RlLmdldCgpOyBub2RlICE9IG1fcHJvZmlsZS0+cm9vdE5vZGUoKTsg
bm9kZSA9IG5vZGUtPnBhcmVudCgpKSB7Ci0gICAgICAgIFByb2ZpbGVOb2RlOjpDYWxsJiBsYXN0
ID0gbm9kZS0+bGFzdENhbGwoKTsKLSAgICAgICAgQVNTRVJUKCFpc25hbihsYXN0LnN0YXJ0VGlt
ZSgpKSk7Ci0KLSAgICAgICAgZG91YmxlIHByZXZpb3VzRWxhcHNlZFRpbWUgPSBpc25hbihsYXN0
LmVsYXBzZWRUaW1lKCkpID8gMC4wIDogbGFzdC5lbGFwc2VkVGltZSgpOwotICAgICAgICBkb3Vi
bGUgYWRkaXRpb25hbEVsYXBzZWRUaW1lID0gbV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCAtIGxh
c3Quc3RhcnRUaW1lKCk7Ci0gICAgICAgIGxhc3Quc2V0U3RhcnRUaW1lKE5BTik7Ci0gICAgICAg
IGxhc3Quc2V0RWxhcHNlZFRpbWUocHJldmlvdXNFbGFwc2VkVGltZSArIGFkZGl0aW9uYWxFbGFw
c2VkVGltZSk7Ci0gICAgfQotfQotCi12b2lkIFByb2ZpbGVHZW5lcmF0b3I6OmRpZENvbnRpbnVl
KFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+LCBjb25zdCBDYWxsSWRlbnRpZmllciYpCi17
Ci0gICAgQVNTRVJUKCFpc25hbihtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wKSk7Ci0KLSAgICBm
b3IgKFByb2ZpbGVOb2RlKiBub2RlID0gbV9jdXJyZW50Tm9kZS5nZXQoKTsgbm9kZSAhPSBtX3By
b2ZpbGUtPnJvb3ROb2RlKCk7IG5vZGUgPSBub2RlLT5wYXJlbnQoKSkKLSAgICAgICAgbm9kZS0+
bGFzdENhbGwoKS5zZXRTdGFydFRpbWUobV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCk7Ci0KLSAg
ICBtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wID0gTkFOOwotfQotCiB2b2lkIFByb2ZpbGVHZW5l
cmF0b3I6OnN0b3BQcm9maWxpbmcoKQogewogICAgIGZvciAoUHJvZmlsZU5vZGUqIG5vZGUgPSBt
X2N1cnJlbnROb2RlLmdldCgpOyBub2RlICE9IG1fcHJvZmlsZS0+cm9vdE5vZGUoKTsgbm9kZSA9
IG5vZGUtPnBhcmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlR2VuZXJhdG9yLmgKaW5kZXggOWY1MWEzZGM4NmNkMzNmNDFhNGU0YmVhZmU5ZjUwYzNj
Y2M5NDFmMi4uNzg1Zjc5OWYyY2VlYmQzYjU3NDg4ZWVjNmZjOTM0YjAzN2U1OGY5YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
U3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtNDIsNyArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBy
b2ZpbGVHZW5lcmF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxQcm9maWxlR2VuZXJhdG9yPiAgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4g
Y3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlk
KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4gY3JlYXRlKEV4
ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkLCBQYXNzUmVm
UHRyPFN0b3B3YXRjaD4pOwogCiAgICAgICAgIC8vIE1lbWJlcnMKICAgICAgICAgY29uc3QgV1RG
OjpTdHJpbmcmIHRpdGxlKCkgY29uc3Q7CkBAIC01NCwxNSArNTUsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZGlkRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxlckNhbGxGcmFtZSwg
Y29uc3QgQ2FsbElkZW50aWZpZXImKTsKICAgICAgICAgdm9pZCBleGNlcHRpb25VbndpbmQoRXhl
Y1N0YXRlKiBoYW5kbGVyQ2FsbEZyYW1lLCBjb25zdCBDYWxsSWRlbnRpZmllciYpOwogCi0gICAg
ICAgIHZvaWQgZGlkUGF1c2UoUGFzc1JlZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4sIGNvbnN0IENh
bGxJZGVudGlmaWVyJik7Ci0gICAgICAgIHZvaWQgZGlkQ29udGludWUoUGFzc1JlZlB0cjxEZWJ1
Z2dlckNhbGxGcmFtZT4sIGNvbnN0IENhbGxJZGVudGlmaWVyJik7Ci0KICAgICAgICAgdm9pZCBz
ZXRJc1N1c3BlbmRlZChib29sIHN1c3BlbmRlZCkgeyBBU1NFUlQobV9zdXNwZW5kZWQgIT0gc3Vz
cGVuZGVkKTsgbV9zdXNwZW5kZWQgPSBzdXNwZW5kZWQ7IH0KIAogICAgICAgICB2b2lkIHN0b3BQ
cm9maWxpbmcoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFByb2ZpbGVHZW5lcmF0b3IoRXhl
Y1N0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpOworICAgICAg
ICBQcm9maWxlR2VuZXJhdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwg
dW5zaWduZWQgdWlkLCBQYXNzUmVmUHRyPFN0b3B3YXRjaD4pOwogICAgICAgICB2b2lkIGFkZFBh
cmVudEZvckNvbnNvbGVTdGFydChFeGVjU3RhdGUqKTsKIAogICAgICAgICB2b2lkIHJlbW92ZVBy
b2ZpbGVTdGFydCgpOwpAQCAtNzQsOCArNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
UmVmUHRyPFByb2ZpbGU+IG1fcHJvZmlsZTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIG1fb3Jp
Z2luOwogICAgICAgICB1bnNpZ25lZCBtX3Byb2ZpbGVHcm91cDsKLSAgICAgICAgLy8gVGltZXN0
YW1wIGlzIHNldCB0byBOQU4gd2hlbiB0aGUgZGVidWdnZXIgaXMgbm90IGN1cnJlbnRseSBwYXVz
ZWQuCi0gICAgICAgIGRvdWJsZSBtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wOworICAgICAgICBS
ZWZQdHI8U3RvcHdhdGNoPiBtX3N0b3B3YXRjaDsKICAgICAgICAgUmVmUHRyPFByb2ZpbGVOb2Rl
PiBtX3Jvb3ROb2RlOwogICAgICAgICBSZWZQdHI8UHJvZmlsZU5vZGU+IG1fY3VycmVudE5vZGU7
CiAgICAgICAgIGJvb2wgbV9mb3VuZENvbnNvbGVTdGFydFBhcmVudDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ogYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9q
L1dURi52Y3hwcm9qCmluZGV4IDVhNDI1YWJmNTg2YzhkZjNmMGVkMjg2YmI2MDkzZmEyNmQyOGYx
MzQuLjE0MjQ2Mjk2ZmQ0ZTQ5M2NlYmZlMWMyZTI1M2RiNmM5OWRhYTg5MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKKysrIGIvU291cmNlL1dURi9XVEYu
dmN4cHJvai9XVEYudmN4cHJvagpAQCAtMjY5LDYgKzI2OSw3IEBAIO+7vzw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZc
U3RhY2tCb3VuZHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdGF0aWND
b25zdHJ1Y3RvcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdGRMaWJF
eHRyYXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdG9wd2F0Y2guaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdHJpbmdFeHRyYXMuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdHJpbmdIYXNoZXIuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdHJpbmdQcmludFN0cmVhbS5oIiAvPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dU
Ri9XVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCmluZGV4IDFjZTA1MGRkYmM4M2VkMjg3
ZTM1M2UzOGM0N2Y1MjE1MzdiY2FkZDAuLjY5ZjMyMDZjMDUwNjRmOWIxNTdjNmY5YjYwN2FlMDA5
YzNlYmI3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ou
ZmlsdGVycworKysgYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMK
QEAgLTYwOSw2ICs2MDksOSBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYt
OCI/PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0ZExpYkV4dHJhcy5oIj4KICAg
ICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcU3RvcHdhdGNoLmgiPgorICAgICAgPEZpbHRlcj53dGY8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdHJp
bmdFeHRyYXMuaCI+CiAgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTBkOGJhNWNk
MTNhNDQ3YTEzNjNkMDU4MzE1ZWMxMDQwMjNhMzZmZi4uNTU4ZmQyOTQ2NzdhYjRlM2I1MjFjNzE4
NzE1YjQ2ODkyN2ExZTRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yNzEsNiArMjcxLDcgQEAKIAkJQThBNDc0ODcxNTFBODI1QjAwNDEyM0ZGIC8qIFdU
RlRocmVhZERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggKi87IH07CiAJ
CUE4QTQ3NDhDMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3NDhCMTUxQTgyNjQwMDQxMjNGRiAvKiBj
b25maWcuaCAqLzsgfTsKIAkJQjM4RkQ3QkQxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMzhG
RDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmluZXMuaCAqLzsgfTsKKwkJQzRGOEE5
MzcxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3
YXRjaC5oICovOyB9OwogCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0FB
MTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovOyB9OwogCQlDRDU0OTdBRDE1ODU3
RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQjE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmgg
Ki87IH07CiAJCUNFNDY1MTZFMTlEQjFGQjQwMDNFQ0EwNSAvKiBOU01hcFRhYmxlU1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTQ2NTE2RDE5REIx
RkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5oICovOyB9OwpAQCAtNTYyLDYgKzU2Myw3IEBA
CiAJCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlRocmVhZERhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThBNDc0OEIxNTFBODI2NDAwNDEyM0ZGIC8qIGNvbmZpZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0RjhBOTM2MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9w
d2F0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcHdhdGNoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBN
ZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFU
aW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NDk3QUIxNTg1N0QwMzAw
QjVCQzMwIC8qIE1lZGlhVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZWRpYVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NjUxNkQxOURCMUZC
NDAwM0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTlNNYXBUYWJsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODU0
LDYgKzg1Niw3IEBACiAJCQkJRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMu
aCAqLywKIAkJCQlBOEE0NzMxMDE1MUE4MjVCMDA0MTIzRkYgLyogU3RhdGljQ29uc3RydWN0b3Jz
LmggKi8sCiAJCQkJQThBNDczMTExNTFBODI1QjAwNDEyM0ZGIC8qIFN0ZExpYkV4dHJhcy5oICov
LAorCQkJCUM0RjhBOTM2MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0Y2guaCAqLywKIAkJCQkx
QTZCQjc2ODE2MkYzMDA1MDBERDE2REIgLyogU3RyZWFtQnVmZmVyLmggKi8sCiAJCQkJQThBNDcz
MTMxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0V4dHJhcy5oICovLAogCQkJCUE3NDg3NDUxMTdB
MEJEQUUwMEZBMDRDQiAvKiBTdHJpbmdIYXNoRHVtcENvbnRleHQuaCAqLywKQEAgLTEwNzIsNiAr
MTA3NSw3IEBACiAJCQkJQThBNDczQTMxNTFBODI1QjAwNDEyM0ZGIC8qIERlY2ltYWxOdW1iZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkE2MTdCNkI0RkIwMEE3QUUzRiAvKiBEZWZlcnJh
YmxlUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQTUxNTFBODI1QjAwNDEy
M0ZGIC8qIERlcXVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNEY4QTkzNzE5QzY1RUI0MDBCMkIx
NUQgLyogU3RvcHdhdGNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNBNjE1MUE4MjVCMDA0
MTIzRkYgLyogRGlzYWxsb3dDVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQUYxNTFB
ODI1QjAwNDEyM0ZGIC8qIGRpeS1mcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQjExNTFB
ODI1QjAwNDEyM0ZGIC8qIGRvdWJsZS1jb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKaW5kZXggZTVhZDlmMjc2NThmMGJlYmQ0ZTgxNGI1Y2VlYjFiOTQ2ODRjNWU4
ZC4uOTdjZThkNDExZDAwNTQwY2U5NGRiNTJkMmY5NzA4OTVmZDBhNTA1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQKQEAgLTkyLDYgKzkyLDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgU3RhY2tTdGF0
cy5oCiAgICAgU3RhdGljQ29uc3RydWN0b3JzLmgKICAgICBTdGRMaWJFeHRyYXMuaAorICAgIFN0
b3B3YXRjaC5oCiAgICAgU3RyaW5nRXh0cmFzLmgKICAgICBTdHJpbmdIYXNoZXIuaAogICAgIFN0
cmluZ1ByaW50U3RyZWFtLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0b3B3YXRjaC5o
IGIvU291cmNlL1dURi93dGYvU3RvcHdhdGNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzhmM2QwZGUxZTk3Yzk4
YmM5YjU2ZDZjYWZjMWU5ZWViMWFjYmFkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1N0b3B3YXRjaC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3Rv
cHdhdGNoX2gKKyNkZWZpbmUgU3RvcHdhdGNoX2gKKworI2luY2x1ZGUgPGNtYXRoPgorI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25h
bWVzcGFjZSBXVEYgeworCitjbGFzcyBTdG9wd2F0Y2ggOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9w
d2F0Y2g+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdG9wd2F0Y2g+IGNyZWF0
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3B3YXRjaCgpKTsKKyAg
ICB9CisKKyAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgc3Rv
cCgpOworCisgICAgZG91YmxlIGVsYXBzZWRUaW1lKCk7CisKK3ByaXZhdGU6CisgICAgU3RvcHdh
dGNoKCkKKyAgICAgICAgOiBtX2VsYXBzZWRUaW1lKE5BTikKKyAgICAgICAgLCBtX2xhc3RTdGFy
dFRpbWUoTkFOKQorICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUgbV9lbGFwc2VkVGltZTsKKyAg
ICBkb3VibGUgbV9sYXN0U3RhcnRUaW1lOworfTsKKworaW5saW5lIHZvaWQgU3RvcHdhdGNoOjpy
ZXNldCgpCit7CisgICAgbV9lbGFwc2VkVGltZSA9IDAuMDsKKyAgICBtX2xhc3RTdGFydFRpbWUg
PSBOQU47Cit9CisKK2lubGluZSB2b2lkIFN0b3B3YXRjaDo6c3RhcnQoKQoreworICAgIEFTU0VS
VCghaXNuYW4obV9lbGFwc2VkVGltZSkgJiYgaXNuYW4obV9sYXN0U3RhcnRUaW1lKSk7CisKKyAg
ICBtX2xhc3RTdGFydFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKK30KKwor
aW5saW5lIHZvaWQgU3RvcHdhdGNoOjpzdG9wKCkKK3sKKyAgICBBU1NFUlQoIWlzbmFuKG1fZWxh
cHNlZFRpbWUpICYmICFpc25hbihtX2xhc3RTdGFydFRpbWUpKTsKKworICAgIG1fZWxhcHNlZFRp
bWUgKz0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX2xhc3RTdGFydFRpbWU7Cisg
ICAgbV9sYXN0U3RhcnRUaW1lID0gTkFOOworfQorCitpbmxpbmUgZG91YmxlIFN0b3B3YXRjaDo6
ZWxhcHNlZFRpbWUoKQoreworICAgIGJvb2wgc2hvdWxkU3VzcGVuZCA9ICFpc25hbihtX2xhc3RT
dGFydFRpbWUpOworICAgIGlmIChzaG91bGRTdXNwZW5kKQorICAgICAgICBzdG9wKCk7CisKKyAg
ICBBU1NFUlQoIWlzbmFuKG1fZWxhcHNlZFRpbWUpICYmIGlzbmFuKG1fbGFzdFN0YXJ0VGltZSkp
OworICAgIGRvdWJsZSBlbGFwc2VkVGltZSA9IG1fZWxhcHNlZFRpbWU7CisKKyAgICBpZiAoc2hv
dWxkU3VzcGVuZCkKKyAgICAgICAgc3RhcnQoKTsKKyAgICByZXR1cm4gZWxhcHNlZFRpbWU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlN0b3B3YXRjaDsKKworI2VuZGlm
IC8vIFN0b3B3YXRjaF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcAppbmRleCA5ZTU2ODdkYTQ3YjE3YTVlOWM4YWU3OTUwODZkYTk3MmZjNTYxMTJk
Li5iNTcxZGZlZTA4MDkzZDRkYTY0YjNlNDRkMWY1MWEwZjJlZmNkMDM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTU3LDcgKzU3LDYg
QEAKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgogI2luY2x1ZGUgIldlYktpdE5hbWVkRmxv
dy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KLSNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDQwOTliMjlmNDM3MTk2ODFiMWM0
ZjQ4Y2Y3ZDFhZTMyMDE1ODRkMjAuLjNjMmZmN2E4MTQ2NjdmY2RiZTlmN2YyMjc1YTkxNDIxNDlj
NzIzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JPdmVybGF5LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnN0cnVt
ZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCkBAIC03Myw3ICs3NCw2IEBA
CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaD4KICNpbmNsdWRl
IDxpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9CYXNlNjQuaD4KQEAgLTM2MSw2ICszNjEsMTYgQEAgdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb24KICNlbmRpZgogfQogCitkb3VibGUgSW5zcGVjdG9yUGFnZUFnZW50Ojp0aW1lc3RhbXAo
KQoreworICAgIC8vIElmIHRoZSB0aW1lbGluZSBhZ2VudCBpcyByZWNvcmRpbmcgbm93LCB1c2Ug
aXRzIHN0b3B3YXRjaC4gT3RoZXJ3aXNlLCBqdXN0IHJlcG9ydCAwLjAKKyAgICAvLyBzaW5jZSB0
aGUgdGltZXN0YW1wcyBhcmUgb25seSB1c2VkIHRvIGFjY3VyYXRlbHkgZ3JhcGggcmVjb3JkcyBv
biB0aGUgdGltZWxpbmUuCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5l
QWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkK
KyAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPnRpbWVzdGFtcCgpOworCisgICAgcmV0dXJu
IDAuMDsKK30KKwogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYp
CiB7CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKQEAgLTc1MiwxMiArNzYyLDEyIEBAIHZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1l
LCBET01XcmFwcGVyV29yCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZG9tQ29udGVudEV2ZW50
RmlyZWQoKQogewogICAgIG1faXNGaXJzdExheW91dEFmdGVyT25Mb2FkID0gdHJ1ZTsKLSAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+ZG9tQ29udGVudEV2ZW50RmlyZWQoY3VycmVudFRpbWUoKSk7
CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRvbUNvbnRlbnRFdmVudEZpcmVkKHRpbWVzdGFt
cCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmxvYWRFdmVudEZpcmVkKCkKIHsK
LSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9hZEV2ZW50RmlyZWQoY3VycmVudFRpbWUoKSk7
CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmxvYWRFdmVudEZpcmVkKHRpbWVzdGFtcCgpKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmgKaW5kZXggMThkY2MzZmExOTBhNzVhMmQ4YzU1NTVkMzQwMzVkZjE4YzFiOTI4ZC4uMDY2
MzdlMmQ1NTA1MGFiMmRlMzU3ZjdjNGFkYTI3MWVkNjVhNjllOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtMTY3LDYgKzE2Nyw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB1cGRhdGVUb3VjaEV2ZW50RW11bGF0aW9uSW5QYWdlKGJvb2wpOwog
I2VuZGlmCiAKKyAgICBkb3VibGUgdGltZXN0YW1wKCk7CisKICAgICBzdGF0aWMgYm9vbCBtYWlu
UmVzb3VyY2VDb250ZW50KEZyYW1lKiwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCk7CiAgICAgc3RhdGljIGJvb2wgZGF0YUNvbnRlbnQoY29uc3QgY2hhciogZGF0YSwgdW5z
aWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNl
NjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDA1MTIyNDljODNhMjM5OWFj
YWQwM2ViYTM2ZmVkOTA5MmE2MDEwYzIuLjMwMmJjMzRmNGU0ZjI5MzcyNjdmNTlmZDU0MTcxY2Y3
MGM5NTc0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJJY29uQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
clBhZ2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1
bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgpAQCAt
NjksNyArNzAsNiBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNp
bmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCkBAIC0yNzYsNiArMjc2LDE2IEBAIEluc3BlY3RvclJlc291cmNlQWdlbnQ6On5JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KCkKICAgICBBU1NFUlQoIW1faW5zdHJ1bWVudGluZ0FnZW50cy0+
aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKTsKIH0KIAorZG91YmxlIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OnRpbWVzdGFtcCgpCit7CisgICAgLy8gSWYgdGhlIHRpbWVsaW5lIGFnZW50IGlzIHJl
Y29yZGluZyBub3csIHVzZSBpdHMgc3RvcHdhdGNoLiBPdGhlcndpc2UsIGp1c3QgcmVwb3J0IDAu
MAorICAgIC8vIHNpbmNlIHRoZSB0aW1lc3RhbXBzIGFyZSBvbmx5IHVzZWQgdG8gYWNjdXJhdGVs
eSBncmFwaCByZWNvcmRzIG9uIHRoZSB0aW1lbGluZS4KKyAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpKQorICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+dGltZXN0YW1w
KCk7CisKKyAgICByZXR1cm4gMC4wOworfQorCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBpZiAocmVxdWVzdC5oaWRkZW5Gcm9tSW5zcGVj
dG9yKCkpIHsKQEAgLTMyMCw3ICszMzAsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TAogICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUgPSBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24odHlwZSk7CiAKICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3Qg
PSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCkt
PmRvY3VtZW50KCkgOiBudWxscHRyKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVz
dFdpbGxCZVNlbnQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1l
KCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSwgbG9hZGVyLT51cmwoKS5zdHJpbmco
KSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGN1cnJlbnRUaW1lKCks
IGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlZGlyZWN0
UmVzcG9uc2UsIGxvYWRlciksIHR5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291
cmNlID8gJnJlc291cmNlVHlwZSA6IG51bGxwdHIpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRl
ci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBsb2FkZXItPnVybCgp
LnN0cmluZygpLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgdGltZXN0
YW1wKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJl
ZGlyZWN0UmVzcG9uc2UsIGxvYWRlciksIHR5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhl
clJlc291cmNlID8gJnJlc291cmNlVHlwZSA6IG51bGxwdHIpOwogfQogCiB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllcikKQEAgLTM2NSw3ICszNzUsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZQogICAgIG1f
cmVzb3VyY2VzRGF0YS0+cmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5m
cmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIHJlc3BvbnNlKTsKICAgICBtX3Jlc291cmNlc0RhdGEt
PnNldFJlc291cmNlVHlwZShyZXF1ZXN0SWQsIHR5cGUpOwogCi0gICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPnJlc3BvbnNlUmVjZWl2ZWQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChs
b2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSwgY3VycmVudFRp
bWUoKSwgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKHR5cGUpLCByZXNvdXJj
ZVJlc3BvbnNlKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzcG9uc2VSZWNlaXZlZChy
ZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFn
ZW50LT5sb2FkZXJJZChsb2FkZXIpLCB0aW1lc3RhbXAoKSwgSW5zcGVjdG9yUGFnZUFnZW50Ojpy
ZXNvdXJjZVR5cGVKc29uKHR5cGUpLCByZXNvdXJjZVJlc3BvbnNlKTsKIAogICAgIC8vIElmIHdl
IHJldmFsaWRhdGVkIHRoZSByZXNvdXJjZSBhbmQgZ290IE5vdCBtb2RpZmllZCwgc2VuZCBjb250
ZW50IGxlbmd0aCBmb2xsb3dpbmcgZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAgLy8gYXMgdGhlcmUg
d2lsbCBiZSBubyBjYWxscyB0byBkaWRSZWNlaXZlRGF0YSBmcm9tIHRoZSBuZXR3b3JrIHN0YWNr
LgpAQCAtMzkxLDcgKzQwMSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyCiAgICAgICAgICAg
ICBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgZGF0YSwg
ZGF0YUxlbmd0aCk7CiAgICAgfQogCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRhdGFSZWNl
aXZlZChyZXF1ZXN0SWQsIGN1cnJlbnRUaW1lKCksIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwg
dGltZXN0YW1wKCksIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgZG91YmxlIGZpbmlzaFRpbWUpCkBAIC00
MTEsNyArNDIxLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnQKICAgICAvLyBIb3dldmVyLCBh
bGwgb3RoZXIgdGltZXMgcGFzc2VkIHRvIHRoZSBJbnNwZWN0b3IgYXJlIGdlbmVyYXRlZCBmcm9t
IHRoZSB3ZWIgcHJvY2Vzcy4gTWl4aW5nCiAgICAgLy8gdGltZXMgZnJvbSBkaWZmZXJlbnQgcHJv
Y2Vzc2VzIGNhbiBjYXVzZSB0aGUgZmluaXNoIHRpbWUgdG8gYmUgZWFybGllciB0aGFuIHRoZSBy
ZXNwb25zZQogICAgIC8vIHJlY2VpdmVkIHRpbWUgZHVlIHRvIGludGVyLXByb2Nlc3MgY29tbXVu
aWNhdGlvbiBsYWcuCi0gICAgZmluaXNoVGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgZmluaXNo
VGltZSA9IHRpbWVzdGFtcCgpOwogCiAgICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkw7CiAgICAg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0g
bV9yZXNvdXJjZXNEYXRhLT5kYXRhKHJlcXVlc3RJZCk7CkBAIC00MzcsNyArNDQ3LDcgQEAgdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG8KICAgICB9CiAKICAgICBib29sIGNhbmNlbGVkID0gZXJyb3Iu
aXNDYW5jZWxsYXRpb24oKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9hZGluZ0ZhaWxl
ZChyZXF1ZXN0SWQsIGN1cnJlbnRUaW1lKCksIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCks
IGNhbmNlbGVkID8gJmNhbmNlbGVkIDogbnVsbHB0cik7CisgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPmxvYWRpbmdGYWlsZWQocmVxdWVzdElkLCB0aW1lc3RhbXAoKSwgZXJyb3IubG9jYWxpemVk
RGVzY3JpcHRpb24oKSwgY2FuY2VsZWQgPyAmY2FuY2VsZWQgOiBudWxscHRyKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQpAQCAtNDU2
LDcgKzQ2Niw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNl
RnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkCiAKICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWls
ZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3Vt
ZW50KCkgOiBudWxscHRyKTsKIAotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0U2Vy
dmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGxvYWRlci0+
dXJsKCkuc3RyaW5nKCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmpl
Y3RGb3JDYWNoZWRSZXNvdXJjZShyZXNvdXJjZSwgbG9hZGVyKSk7CisgICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPnJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlk
LCBsb2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgdGltZXN0YW1wKCksIGluaXRpYXRv
ck9iamVjdCwgYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShyZXNvdXJjZSwgbG9hZGVyKSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0SW5pdGlhbFNjcmlwdENvbnRl
bnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykK
QEAgLTU4OCw3ICs1OTgsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5k
V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZQogewogICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0PiByZXF1ZXN0
T2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6V2ViU29ja2V0UmVxdWVzdDo6
Y3JlYXRlKCkKICAgICAgICAgLnNldEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlcXVl
c3QuaHR0cEhlYWRlckZpZWxkcygpKSk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNv
Y2tldFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJ
ZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgcmVxdWVzdE9iamVjdCk7CisgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPndlYlNvY2tldFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdChJZGVudGlm
aWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgdGltZXN0YW1wKCksIHJlcXVlc3RP
YmplY3QpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtNTk3LDEyICs2MDcsMTIgQEAgdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Uo
dW5zaWduZWQgbG9uZwogICAgICAgICAuc2V0U3RhdHVzKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkpCiAgICAgICAgIC5zZXRTdGF0dXNUZXh0KHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpCiAg
ICAgICAgIC5zZXRIZWFkZXJzKGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXNwb25zZS5odHRwSGVh
ZGVyRmllbGRzKCkpKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2VSZWNlaXZlZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlm
aWVyKSwgY3VycmVudFRpbWUoKSwgcmVzcG9uc2VPYmplY3QpOworICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT53ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZVJlY2VpdmVkKElkZW50aWZpZXJzRmFj
dG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgcmVzcG9uc2VPYmplY3Qp
OwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENsb3NlV2ViU29ja2V0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2Vi
U29ja2V0Q2xvc2VkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBj
dXJyZW50VGltZSgpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0Q2xvc2Vk
KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZy
YW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUmIGZyYW1l
KQpAQCAtNjExLDcgKzYyMSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVj
ZWl2ZVdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwKICAgICAgICAgLnNl
dE9wY29kZShmcmFtZS5vcENvZGUpCiAgICAgICAgIC5zZXRNYXNrKGZyYW1lLm1hc2tlZCkKICAg
ICAgICAgLnNldFBheWxvYWREYXRhKFN0cmluZyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2Fk
TGVuZ3RoKSk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEZyYW1lUmVjZWl2
ZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIGN1cnJlbnRUaW1l
KCksIGZyYW1lT2JqZWN0KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0RnJh
bWVSZWNlaXZlZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgdGlt
ZXN0YW1wKCksIGZyYW1lT2JqZWN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRTZW5kV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBX
ZWJTb2NrZXRGcmFtZSYgZnJhbWUpCkBAIC02MjAsMTIgKzYzMCwxMiBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZFNlbmRXZWJTb2NrZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbgogICAgICAgICAuc2V0T3Bjb2RlKGZyYW1lLm9wQ29kZSkKICAgICAgICAgLnNl
dE1hc2soZnJhbWUubWFza2VkKQogICAgICAgICAuc2V0UGF5bG9hZERhdGEoU3RyaW5nKGZyYW1l
LnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+d2ViU29ja2V0RnJhbWVTZW50KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50
aWZpZXIpLCBjdXJyZW50VGltZSgpLCBmcmFtZU9iamVjdCk7CisgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPndlYlNvY2tldEZyYW1lU2VudChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChp
ZGVudGlmaWVyKSwgdGltZXN0YW1wKCksIGZyYW1lT2JqZWN0KTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvcih1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRGcmFtZUVycm9yKElkZW50aWZpZXJzRmFjdG9yeTo6
cmVxdWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCBlcnJvck1lc3NhZ2UpOworICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRGcmFtZUVycm9yKElkZW50aWZpZXJzRmFj
dG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgZXJyb3JNZXNzYWdlKTsK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IDI4MzkyMGRmZTU2MzA3
OTIxZDQ2NzQ5ZTYxMzQwMzA0Y2NmNWM2YzIuLmI5NjQ0YWZjODBkY2VhN2ZhODMwODEyMmMwZmFh
MTAzYTk5Yjc0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuaApAQCAtMTM4LDYgKzEzOCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgdm9pZCBlbmFibGUoKTsKIAorICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKKwogICAgIEluc3Bl
Y3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVu
dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JOZXR3b3JrRnJvbnRl
bmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCBhODZjYTg5OTA0
NzlkM2U2NWRmN2ZiMDUyNTRkMGNkMjZjNjJjYjhkLi44YjNlYjRlZGMxYzlhMDUwNTBiOTdmYjY0
MWRkNDk5YWIxM2M3ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC02MSwxMSArNjEsNiBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgVGltZWxpbmVUaW1l
Q29udmVydGVyOjpyZXNldCgpCi17Ci0gICAgbV9zdGFydE9mZnNldCA9IG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpIC0gY3VycmVudFRpbWUoKTsKLX0KLQogSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6fkluc3BlY3RvclRpbWVsaW5lQWdlbnQoKQogewogfQpAQCAtNzYsNiArNzEsNyBAQCB2
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckZybwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0
b3JUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpOwogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQZXJzaXN0ZW50SW5zcGVjdG9y
VGltZWxpbmVBZ2VudCh0aGlzKTsKKyAgICBtX3N0b3B3YXRjaC0+cmVzZXQoKTsKIAogICAgIGlm
IChtX3NjcmlwdERlYnVnU2VydmVyKQogICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLT5yZWNv
bXBpbGVBbGxKU0Z1bmN0aW9ucygpOwpAQCAtMTE4LDcgKzExNCw3IEBAIHZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRo
KQogICAgIGVsc2UKICAgICAgICAgbV9tYXhDYWxsU3RhY2tEZXB0aCA9IDU7CiAKLSAgICBtX3Rp
bWVDb252ZXJ0ZXIucmVzZXQoKTsKKyAgICBtX3N0b3B3YXRjaC0+c3RhcnQoKTsKIAogICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yVGltZWxpbmVBZ2VudCh0aGlzKTsKIApA
QCAtMTM2LDYgKzEzMiw4IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxT
dG9wKCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9zdG9w
d2F0Y2gtPnN0b3AoKTsKKwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9y
VGltZWxpbmVBZ2VudChudWxscHRyKTsKIAogICAgIGlmIChtX3NjcmlwdERlYnVnU2VydmVyKQpA
QCAtMTU3LDkgKzE1NSw5IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0UGFnZVNj
cmlwdERlYnVnU2VydmVyKFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciogc2NyCiAgICAgbV9zY3JpcHRE
ZWJ1Z1NlcnZlciA9IHNjcmlwdERlYnVnU2VydmVyOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQg
c3RhcnRQcm9maWxpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUp
CitzdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRQcm9maWxpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPiBzdG9wd2F0Y2gpCiB7
Ci0gICAgSlNDOjpMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmcoZXhl
YywgdGl0bGUpOworICAgIEpTQzo6TGVnYWN5UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0YXJ0UHJv
ZmlsaW5nKGV4ZWMsIHRpdGxlLCBzdG9wd2F0Y2gpOwogfQogCiBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8SlNDOjpQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIHRpdGxlKQpAQCAtMTY3LDkgKzE2NSw5IEBAIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxKU0M6OlByb2ZpbGU+IHN0b3BQcm9maWxpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0CiAgICAgcmV0dXJuIEpTQzo6TGVnYWN5UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0b3BQ
cm9maWxpbmcoZXhlYywgdGl0bGUpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRQcm9m
aWxpbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlKQorc3RhdGljIGlubGluZSB2
b2lkIHN0YXJ0UHJvZmlsaW5nKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFz
c1JlZlB0cjxTdG9wd2F0Y2g+IHN0b3B3YXRjaCkKIHsKLSAgICBzdGFydFByb2ZpbGluZyh0b0pT
RE9NV2luZG93KGZyYW1lLCBkZWJ1Z2dlcldvcmxkKCkpLT5nbG9iYWxFeGVjKCksIHRpdGxlKTsK
KyAgICBzdGFydFByb2ZpbGluZyh0b0pTRE9NV2luZG93KGZyYW1lLCBkZWJ1Z2dlcldvcmxkKCkp
LT5nbG9iYWxFeGVjKCksIHRpdGxlLCBzdG9wd2F0Y2gpOwogfQogCiBzdGF0aWMgaW5saW5lIFBh
c3NSZWZQdHI8SlNDOjpQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEZyYW1lKiBmcmFtZSwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKQEAgLTE5Myw3ICsxOTEsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZwogICAgIGlmICghbV9lbmFibGVkICYmIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5p
c0VtcHR5KCkpCiAgICAgICAgIGludGVybmFsU3RhcnQoKTsKIAotICAgIHN0YXJ0UHJvZmlsaW5n
KGV4ZWMsIHRpdGxlKTsKKyAgICBzdGFydFByb2ZpbGluZyhleGVjLCB0aXRsZSwgbV9zdG9wd2F0
Y2gpOwogCiAgICAgbV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzLmFwcGVuZChjcmVhdGVS
ZWNvcmRFbnRyeShUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUNvbnNvbGVQcm9maWxlRGF0
YSh0aXRsZSksIFRpbWVsaW5lUmVjb3JkVHlwZTo6Q29uc29sZVByb2ZpbGUsIHRydWUsIGZyYW1l
RnJvbUV4ZWNTdGF0ZShleGVjKSkpOwogfQpAQCAtMjMyLDcgKzIzMCw3IEBAIHZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6d2lsbENhbGxGdW5jdGlvbihjb25zdCBTdHJpbmcmIHNjcmlwdE5h
bWUsIGludCBzY3JpCiAgICAgcHVzaEN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5
OjpjcmVhdGVGdW5jdGlvbkNhbGxEYXRhKHNjcmlwdE5hbWUsIHNjcmlwdExpbmUpLCBUaW1lbGlu
ZVJlY29yZFR5cGU6OkZ1bmN0aW9uQ2FsbCwgdHJ1ZSwgZnJhbWUpOwogCiAgICAgaWYgKGZyYW1l
ICYmICFtX2NhbGxTdGFja0RlcHRoKQotICAgICAgICBzdGFydFByb2ZpbGluZyhmcmFtZSwgQVND
SUlMaXRlcmFsKCJUaW1lbGluZSBGdW5jdGlvbkNhbGwiKSk7CisgICAgICAgIHN0YXJ0UHJvZmls
aW5nKGZyYW1lLCBBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIEZ1bmN0aW9uQ2FsbCIpLCBtX3N0b3B3
YXRjaCk7CiAKICAgICArK21fY2FsbFN0YWNrRGVwdGg7CiB9CkBAIC00MDcsNyArNDA1LDcgQEAg
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRXZhbHVhdGVTY3JpcHQoY29uc3QgU3Ry
aW5nJiB1cmwsIGludCBsaW5lTnVtYmUKIAogICAgIGlmIChmcmFtZSAmJiAhbV9jYWxsU3RhY2tE
ZXB0aCkgewogICAgICAgICArK21fY2FsbFN0YWNrRGVwdGg7Ci0gICAgICAgIHN0YXJ0UHJvZmls
aW5nKGZyYW1lLCBBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIEV2YWx1YXRlU2NyaXB0IikpOworICAg
ICAgICBzdGFydFByb2ZpbGluZyhmcmFtZSwgQVNDSUlMaXRlcmFsKCJUaW1lbGluZSBFdmFsdWF0
ZVNjcmlwdCIpLCBtX3N0b3B3YXRjaCk7CiAgICAgfQogfQogCkBAIC01NTQsNiArNTUyLDE2IEBA
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJCiAgICAgYXBwZW5kUmVjb3JkKFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGFjdGlvbiwgaGl0Q291bnQpLCBUaW1lbGlu
ZVJlY29yZFR5cGU6OlByb2JlU2FtcGxlLCBmYWxzZSwgZnJhbWVGcm9tRXhlY1N0YXRlKGV4ZWMp
KTsKIH0KIAordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRQYXVzZShKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmKQoreworICAgIG1fc3RvcHdhdGNoLT5zdG9wKCk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29udGludWUoKQoreworICAgIG1fc3RvcHdhdGNoLT5z
dGFydCgpOworfQorCiBzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50
VHlwZSB0b1Byb3RvY29sKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAo
dHlwZSkgewpAQCAtNjkwLDYgKzY5OCw3IEBAIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluCiAgICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJUaW1lbGluZSIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9zY3JpcHRE
ZWJ1Z1NlcnZlcihudWxscHRyKQorICAgICwgbV9zdG9wd2F0Y2goU3RvcHdhdGNoOjpjcmVhdGUo
KSkKICAgICAsIG1faWQoMSkKICAgICAsIG1fY2FsbFN0YWNrRGVwdGgoMCkKICAgICAsIG1fbWF4
Q2FsbFN0YWNrRGVwdGgoNSkKQEAgLTc0OCw3ICs3NTcsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmxvY2FsVG9QYWdlUXVhZChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBj
b25zdAogCiBkb3VibGUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dGltZXN0YW1wKCkKIHsKLSAg
ICByZXR1cm4gbV90aW1lQ29udmVydGVyLmZyb21Nb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOworICAgIHJldHVybiBtX3N0b3B3YXRjaC0+
ZWxhcHNlZFRpbWUoKTsKIH0KIAogUGFnZSogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cGFnZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
aAppbmRleCBhNGNiNGM0ZTJlZjIzZWNkMzdkMGVmMDRkYzE1M2E5ODZjNjVmNGJlLi43NGI3ZWI1
NDdjNzJiN2FmMmQwZWU3MjQ0NTEwMWIxNzNiMjg2MjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg+CisjaW5j
bHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCkBAIC0xMTMsMTkgKzExNCw2IEBAIGVudW0gY2xhc3MgVGltZWxp
bmVSZWNvcmRUeXBlIHsKICAgICBXZWJTb2NrZXREZXN0cm95CiB9OwogCi1jbGFzcyBUaW1lbGlu
ZVRpbWVDb252ZXJ0ZXIgewotcHVibGljOgotICAgIFRpbWVsaW5lVGltZUNvbnZlcnRlcigpCi0g
ICAgICAgIDogbV9zdGFydE9mZnNldCgwKQotICAgIHsKLSAgICB9Ci0gICAgZG91YmxlIGZyb21N
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoZG91YmxlIHRpbWUpIGNvbnN0ICB7IHJldHVybiAo
dGltZSAtIG1fc3RhcnRPZmZzZXQpICogMTAwMC4wOyB9Ci0gICAgdm9pZCByZXNldCgpOwotCi1w
cml2YXRlOgotICAgIGRvdWJsZSBtX3N0YXJ0T2Zmc2V0OwotfTsKLQogY2xhc3MgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudAogICAgIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZQogICAgICwgcHVi
bGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIK
QEAgLTIxMCw2ICsxOTgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbEZpcmVBbmltYXRpb25G
cmFtZShpbnQgY2FsbGJhY2tJZCwgRnJhbWUqKTsKICAgICB2b2lkIGRpZEZpcmVBbmltYXRpb25G
cmFtZSgpOwogCisgICAgLy8gUmV0dXJucyB0aGUgZWxhcHNlZCB0aW1lIGZyb20gYSBtb25vdG9u
aWMgc3RvcHdhdGNoIHRoYXQgc3RhcnRzIHdpdGggdGltZWxpbmUgcmVjb3JkaW5nIGFuZAorICAg
IC8vIHBhdXNlcyB3aGVuIHRoZSBkZWJ1Z2dlciBwYXVzZXMgb3IgZXhlY3V0aW9uIGlzIG90aGVy
d2lzZSBzdXNwZW5kZWQuCisgICAgZG91YmxlIHRpbWVzdGFtcCgpOworCiAjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQogICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRnJhbWUqKTsKICAg
ICB2b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIEZyYW1lKik7CkBAIC0yMTgsMTEgKzIxMCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogcHJvdGVjdGVkOgotICAgIC8vIFNjcmlwdERlYnVnTGlzdGVuZXIuIFRoaXMgaXMgb25seSB1
c2VkIHRvIGNyZWF0ZSByZWNvcmRzIGZvciBwcm9iZSBzYW1wbGVzLgorICAgIC8vIFNjcmlwdERl
YnVnTGlzdGVuZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJ
RCwgY29uc3QgU2NyaXB0Jikgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRv
UGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgaW50LCBpbnQsIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGlu
dWUoKSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCkgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBicmVh
a3BvaW50QWN0aW9uU291bmQoaW50KSBvdmVycmlkZSB7IH0KQEAgLTI2NCwxNyArMjU2LDE1IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclJlY29yZFN0YWNrKCk7CiAKICAgICB2b2lkIGxvY2Fs
VG9QYWdlUXVhZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0JiwgRmxvYXRR
dWFkKik7Ci0gICAgY29uc3QgVGltZWxpbmVUaW1lQ29udmVydGVyJiB0aW1lQ29udmVydGVyKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1lQ29udmVydGVyOyB9Ci0gICAgZG91YmxlIHRpbWVzdGFtcCgp
OwogICAgIFBhZ2UqIHBhZ2UoKTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdl
bnQ7CiAgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyKiBtX3NjcmlwdERlYnVnU2VydmVyOwotICAg
IFRpbWVsaW5lVGltZUNvbnZlcnRlciBtX3RpbWVDb252ZXJ0ZXI7CisKKyAgICBSZWZQdHI8U3Rv
cHdhdGNoPiBtX3N0b3B3YXRjaDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvclRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAgIGRvdWJsZSBtX3RpbWVzdGFtcE9mZnNldDsKIAog
ICAgIFZlY3RvcjxUaW1lbGluZVJlY29yZEVudHJ5PiBtX3JlY29yZFN0YWNrOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCmluZGV4
IDNmZWM0MDBhYjEyMjQyNThkNzg4ZDI5ZDNlNjViOTVjMTZiYzIzMGMuLjE2Y2IzODhkZjI4N2Fm
NDRhYTAwY2YzZGQ2ODczNzk4ZTYwOTMwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5j
bHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgot
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXggOTAyMTJlMTQyNTY4
Y2I2YjNiYWE0MTliMWJmNzAzYWM4NWRlZTg4Ni4uZGJkOWE1ODhiYmIxOWRkNzk1NTkyMmU1Mjgw
MTkzZGM1MzcwYTIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwpAQCAt
MzUsNiArMzUsOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyID0gZnVuY3Rpb24oKQog
ICAgIHRoaXMuX2FjdGl2ZVJlY29yZGluZyA9IG51bGw7CiAgICAgdGhpcy5faXNDYXB0dXJpbmcg
PSBmYWxzZTsKIAorICAgIC8vIEZvciBsZWdhY3kgYmFja2VuZHMsIHdlIGNvbXB1dGUgdGhlIGVs
YXBzZWQgdGltZSBvZiByZWNvcmRzIHJlbGF0aXZlIHRvIHRoaXMgdGltZXN0YW1wLgorICAgIHRo
aXMuX2xlZ2FjeUZpcnN0UmVjb3JkVGltZXN0YW1wID0gTmFOOwogICAgIHRoaXMuX25leHRSZWNv
cmRpbmdJZGVudGlmaWVyID0gMTsKIAogICAgIHRoaXMuX2JvdW5kU3RvcENhcHR1cmluZyA9IHRo
aXMuc3RvcENhcHR1cmluZy5iaW5kKHRoaXMpOwpAQCAtNTUsNiArNTcsNyBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50ID0gewogICAgIENhcHR1cmluZ1N0b3BwZWQ6ICJ0aW1l
bGluZS1tYW5hZ2VyLWNhcHR1cmluZy1zdG9wcGVkIgogfTsKIAorV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTWFuYWdlci5TdGFydFRpbWVUaHJlc2hvbGRGb3JMZWdhY3lSZWNvcmRDb252ZXJzaW9uID0g
Mjg4MDAwMDA7IC8vIERhdGUucGFyc2UoIkphbiAxLCAxOTcwIikKIFdlYkluc3BlY3Rvci5UaW1l
bGluZU1hbmFnZXIuTWF4aW11bUF1dG9SZWNvcmREdXJhdGlvbiA9IDkwMDAwOyAvLyA5MCBzZWNv
bmRzCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLk1heGltdW1BdXRvUmVjb3JkRHVyYXRp
b25BZnRlckxvYWRFdmVudCA9IDEwMDAwOyAvLyAxMCBzZWNvbmRzCiBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVNYW5hZ2VyLkRlYWRUaW1lUmVxdWlyZWRUb1N0b3BBdXRvUmVjb3JkaW5nRWFybHkgPSAy
MDAwOyAvLyAyIHNlY29uZHMKQEAgLTE2Myw5ICsxNjYsMjAgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTWFuYWdlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1JlY29y
ZChyZWNvcmRQYXlsb2FkLCBwYXJlbnRSZWNvcmRQYXlsb2FkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXBzIHRvIHNlY29uZHMgdG8gbWF0Y2ggdGhlIHJl
c291cmNlIHRpbWVzdGFtcHMuCi0gICAgICAgICAgICB2YXIgc3RhcnRUaW1lID0gcmVjb3JkUGF5
bG9hZC5zdGFydFRpbWUgLyAxMDAwOwotICAgICAgICAgICAgdmFyIGVuZFRpbWUgPSByZWNvcmRQ
YXlsb2FkLmVuZFRpbWUgLyAxMDAwOworICAgICAgICAgICAgdmFyIHN0YXJ0VGltZSA9IHJlY29y
ZFBheWxvYWQuc3RhcnRUaW1lOworICAgICAgICAgICAgdmFyIGVuZFRpbWUgPSByZWNvcmRQYXls
b2FkLmVuZFRpbWU7CisKKyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUzgpOiBvbGQg
dmVyc2lvbnMgdXNlIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2gsIHJhdGhlcgorICAgICAg
ICAgICAgLy8gdGhhbiBzZWNvbmRzIGVsYXBzZWQgc2luY2UgdGltZWxpbmUgY2FwdHVyaW5nIHN0
YXJ0ZWQuIFdlIGFwcHJveGltYXRlIHRoZSBsYXR0ZXIgYnkKKyAgICAgICAgICAgIC8vIHN1YnRy
YWN0aW5nIHRoZSBzdGFydCB0aW1lc3RhbXAsIGFzIG9sZCB2ZXJzaW9ucyBkaWQgbm90IHVzZSBt
b25vdG9uaWMgdGltZXMuCisgICAgICAgICAgICBpZiAoaXNOYU4odGhpcy5fbGVnYWN5Rmlyc3RS
ZWNvcmRUaW1lc3RhbXApKQorICAgICAgICAgICAgICAgIHRoaXMuX2xlZ2FjeUZpcnN0UmVjb3Jk
VGltZXN0YW1wID0gcmVjb3JkUGF5bG9hZC5zdGFydFRpbWU7CisKKyAgICAgICAgICAgIC8vIElm
IHRoZSByZWNvcmQncyBzdGFydCB0aW1lIHNlbXMgdW5yZWFzb25hYmx5IGxhcmdlLCB0cmVhdCBp
dCBhcyBhIGxlZ2FjeSB0aW1lc3RhbXAuCisgICAgICAgICAgICBpZiAoc3RhcnRUaW1lID4gV2Vi
SW5zcGVjdG9yLlN0YXJ0VGltZVRocmVzaG9sZEZvckxlZ2FjeVJlY29yZENvbnZlcnNpb24pIHsK
KyAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSAoc3RhcnRUaW1lIC0gdGhpcy5fbGVnYWN5Rmly
c3RSZWNvcmRUaW1lc3RhbXApIC8gMTAwMDsKKyAgICAgICAgICAgICAgICBlbmRUaW1lID0gaXNO
YU4oZW5kVGltZSkgPyBOYU4gOiAoc3RhcnRUaW1lIC0gdGhpcy5fbGVnYWN5Rmlyc3RSZWNvcmRU
aW1lc3RhbXApIC8gMTAwMDsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdmFyIGNhbGxG
cmFtZXMgPSB0aGlzLl9jYWxsRnJhbWVzRnJvbVBheWxvYWQocmVjb3JkUGF5bG9hZC5zdGFja1Ry
YWNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGltZWxpbmVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lQ29udGVudFZpZXcuanMKaW5kZXggYmU0YTRlN2E4ODQx
MmJjNDA3MzM4ZTUxOWIwNWJmYzkyNWI0ZTIwZC4uYTIwM2YyZTMxZmIzOTljZWI3ZWQwOTRhMDlm
M2IzNWVjMGM5ZjAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGltZWxpbmVDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZUNvbnRlbnRWaWV3LmpzCkBAIC05OCw2
ICs5OCw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVj
b3JkaW5nKQogICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0YXJ0ZWQsIHRo
aXMuX2NhcHR1cmluZ1N0YXJ0ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50
LkNhcHR1cmluZ1N0b3BwZWQsIHRoaXMuX2NhcHR1cmluZ1N0b3BwZWQsIHRoaXMpOwogCisgICAg
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCB0aGlzLl9kZWJ1Z2dlclBhdXNlZCwgdGhp
cyk7CisgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1lZCwgdGhpcy5fZGVidWdnZXJS
ZXN1bWVkLCB0aGlzKTsKKwogICAgIHRoaXMuc2hvd092ZXJ2aWV3VGltZWxpbmVWaWV3KCk7CiB9
OwogCkBAIC00MDcsNiArNDEwLDIyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc3RvcFVwZGF0aW5nQ3VycmVudFRpbWUoKTsK
ICAgICB9LAogCisgICAgX2RlYnVnZ2VyUGF1c2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIGlmIChXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZXNzaW9uU3RhdGUgPT09IFdl
Ykluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25TdGF0ZS5SZXBsYXlpbmcpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fc3RvcFVwZGF0aW5nQ3VycmVudFRpbWUoKTsK
KyAgICB9LAorCisgICAgX2RlYnVnZ2VyUmVzdW1lZDogZnVuY3Rpb24oZXZlbnQpCisgICAgewor
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2Vzc2lvblN0YXRlID09PSBX
ZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUuUmVwbGF5aW5nKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3N0YXJ0VXBkYXRpbmdDdXJyZW50VGltZSgp
OworICAgIH0sCisKICAgICBfcmVjb3JkaW5nVGltZXNVcGRhdGVkOiBmdW5jdGlvbihldmVudCkK
ICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fd2FpdGluZ1RvUmVzZXRDdXJyZW50VGltZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239446</attachid>
            <date>2014-10-07 19:23:27 -0700</date>
            <delta_ts>2014-10-10 17:00:02 -0700</delta_ts>
            <desc>Patch (Fixed test regressions)</desc>
            <filename>bug-136351-20141007192229.patch</filename>
            <type>text/plain</type>
            <size>59466</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
OWVmMzYyODU2YzI1M2I3OTBlNDI0NmI4Y2JjMjJkNjRiMzYxZGZmLi4wMzNhYzg5MGU3YWZhMWRl
OTJhY2NmZWQwNDg0NjEwNjU3NmFkNjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxNC0xMC0wNyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291
bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBOb3cgdGhhdCB3ZSBoYXZlIGEg
c3RvcHdhdGNoIHRvIHByb3ZpZGUgcGF1c2UtYXdhcmUgdGltaW5nIGRhdGEsIHdlIGNhbiByZW1v
dmUgdGhlCisgICAgICAgIHByb2ZpbGVyJ3MgaGFuZGxpbmcgb2YgZGVidWdnZXIgcGF1c2UvY29u
dGludWUgY2FsbGJhY2tzLiBUaGUgdGltZWxpbmUgYWdlbnQgYWNjb3VudHMKKyAgICAgICAgZm9y
IGRlYnVnZ2VyIHBhdXNlcyBieSBwYXVzaW5nIGFuZCByZXN1bWluZyB0aGUgc3RvcHdhdGNoLgor
CisgICAgICAgICogQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKEpTU3RhcnRQ
cm9maWxpbmcpOiBVc2UgYSBmcmVzaCBzdG9wd2F0Y2ggd2hlbiBwcm9maWxpbmcgZnJvbSB0aGUg
SlNDIEFQSS4KKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAg
ICAgICAoSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlUGF1c2UpOgorICAgICAg
ICAqIHByb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGVnYWN5UHJv
ZmlsZXI6OnByb2ZpbGVyKTogVXNlIG51bGxwdHIuCisgICAgICAgIChKU0M6OkxlZ2FjeVByb2Zp
bGVyOjpzdGFydFByb2ZpbGluZyk6IEhhbmQgb2ZmIGEgc3RvcHdhdGNoIHRvIHRoZSBwcm9maWxl
IGdlbmVyYXRvci4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OnN0b3BQcm9maWxpbmcp
OiBVc2UgbnVsbHB0ci4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OmRpZFBhdXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OmRpZENvbnRpbnVlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwcm9maWxlci9MZWdhY3lQcm9maWxlci5oOgorICAgICAgICAqIHBy
b2ZpbGVyL1Byb2ZpbGUuY3BwOiBUaGUgcm9vdCBub2RlIHNob3VsZCBhbHdheXMgaGF2ZSBhIHN0
YXJ0IHRpbWUgb2YgMC4wLgorICAgICAgICAoSlNDOjpQcm9maWxlOjpQcm9maWxlKToKKyAgICAg
ICAgKiBwcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNwcDogUmVtb3ZlIGRlYnVnZ2VyIHBhdXNl
L2NvbnRpbnVlIGNhbGxiYWNrcyBhbmQgdGhlCisgICAgICAgIHRpbWVzdGFtcCBtZW1iZXIgdGhh
dCB3YXMgdXNlZCB0byB0cmFjayB0aW1lIGVsYXBzZWQgYnkgdGhlIGRlYnVnZ2VyLiBKdXN0IHVz
ZSB0aGUKKyAgICAgICAgc3RvcHdhdGNoJ3MgZWxhcHNlZCB0aW1lcyB0byBnZW5lcmF0ZSBzdGFy
dC9lbGFwc2VkIHRpbWVzIGZvciBmdW5jdGlvbiBjYWxscy4KKworICAgICAgICAoSlNDOjpQcm9m
aWxlR2VuZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQcm9maWxlR2VuZXJhdG9yOjpQ
cm9maWxlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6QWRkUGFyZW50Rm9yQ29uc29sZVN0YXJ0
RnVuY3Rvcjo6b3BlcmF0b3IoKSk6IFRoZSBwYXJlbnQgbm9kZSBvZiB8Y29uc29sZS5wcm9maWxl
fAorICAgICAgICBzaG91bGQgaGF2ZSBhIHN0YXJ0IHRpbWUgb2YgMC4wLCBzaW5jZSBpdCByZXBy
ZXNlbnRzIHRoZSBzdGFydGluZyBub2RlIG9mIHByb2ZpbGluZy4KKworICAgICAgICAoSlNDOjpQ
cm9maWxlR2VuZXJhdG9yOjpiZWdpbkNhbGxFbnRyeSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVH
ZW5lcmF0b3I6OmVuZENhbGxFbnRyeSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0b3I6
OmRpZFBhdXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UHJvZmlsZUdlbmVyYXRvcjo6ZGlk
Q29udGludWUpOiBEZWxldGVkLgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3Iu
aDoKKwogMjAxNC0xMC0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSb2xsLW92ZXIgQ2hhbmdlbG9ncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODE1NGRkNTY0NTI3YzRhNDNl
MDkwY2Y2YjVmYTc2ZWRlNjg1ODAwZi4uYjBlMGQ0YzU4Y2UyMmU4ZjY2YTA0Y2EzYTJkMTdkZmZm
ZTM0ZmJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNC0xMC0wNyAgQnJpYW4gSi4gQnVyZyAg
PGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxp
bmVzIHNob3VsZCBub3QgY291bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVi
dWdnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NjM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICAq
IFdURi52Y3hwcm9qL1dURi52Y3hwcm9qOgorICAgICAgICAqIFdURi52Y3hwcm9qL1dURi52Y3hw
cm9qLmZpbHRlcnM6CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9TdG9wd2F0Y2guaDog
QWRkZWQuIFRoaXMgaW1wbGVtZW50cyBhIHJlZmNvdW50ZWQgbW9ub3RvbmljIHN0b3B3YXRjaC4K
KyAgICAgICAgKFdURjo6U3RvcHdhdGNoOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpTdG9wd2F0
Y2g6OlN0b3B3YXRjaCk6CisgICAgICAgIChXVEY6OlN0b3B3YXRjaDo6cmVzZXQpOgorICAgICAg
ICAoV1RGOjpTdG9wd2F0Y2g6OnN0YXJ0KToKKyAgICAgICAgKFdURjo6U3RvcHdhdGNoOjpzdG9w
KToKKyAgICAgICAgKFdURjo6U3RvcHdhdGNoOjplbGFwc2VkVGltZSk6CisKIDIwMTQtMTAtMDcg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gUmVz
b2x2ZSBzb21lIE1TVkMgc3RhdGljIGFuYWx5emVyIHdhcm5pbmdzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg3
ZTlkMTBjZjVkMWI4YWE2MDVhOTI4NTEyM2Q2OTI0NzVkNmE0Zi4uMzNhZmFlOTQ3OWYwYjExZWQw
MDBkNmI2Y2FmYWJhNWRkYmU0ZTY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE0
LTEwLTA3ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiB0aW1lbGluZXMgc2hvdWxkIG5vdCBjb3VudCB0aW1lIGVsYXBzZWQg
d2hpbGUgcGF1c2VkIGluIHRoZSBkZWJ1Z2dlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3Ro
eSBIYXRjaGVyLgorCisgICAgICAgIFRvIGF2b2lkIGNvdW50aW5nIHRpbWUgZWxhcHNlZCB3aGls
ZSB0aGUgZGVidWdnZXIgaXMgcGF1c2VkLCB0aW1lbGluZSByZWNvcmRzIHNob3VsZAorICAgICAg
ICBrZWVwIHRyYWNrIG9mIHRpbWUgZWxhcHNlZCBzaW5jZSB0aGUgc3RhcnQgb2YgdGltZWxpbmUg
Y2FwdHVyaW5nLCByYXRoZXIgdGhhbiB3YWxsIGNsb2NrCisgICAgICAgIHRpbWVzdGFtcHMuIFdl
IGNhbiBlYXNpbHkgY29tcHV0ZSBlbGFwc2VkIHRpbWUgYnkgc2hhcmluZyBhIFN0b3B3YXRjaCBp
bnN0YW5jZSBhbW9uZworICAgICAgICBhbGwgdGltZWxpbmUgcmVjb3JkLWdlbmVyYXRpbmcgY29k
ZS4gVGhlIHN0b3B3YXRjaCBpcyBwYXVzZWQgd2hpbGUgdGhlIGRlYnVnZ2VyIGlzIHBhdXNlZCwK
KyAgICAgICAgc28gc3Vic2VxdWVudCB0aW1lIG1lYXN1cmVtZW50cyB3aWxsIG5vdCBpbmNsdWRl
IHRpbWUgZWxhcHNlZCB3aGlsZSB0aGUgZGVidWdnZXIgaXMgcGF1c2VkLgorCisgICAgICAgIEFn
ZW50cyB1c2UgdGhlIHNoYXJlZCBzdG9wd2F0Y2ggdG8gZ2VuZXJhdGUgdGltZXN0YW1wcyBpZiB0
aGUgdGltZWxpbmUgYWdlbnQgaXMgYWN0aXZlCisgICAgICAgIChpLmUuLCBhIHRpbWVsaW5lIHJl
Y29yZGluZyBpcyBiZWluZyBjYXB0dXJlZCkuIElmIG5vdCwgdXNlIGEgemVybyB0aW1lc3RhbXAg
c2luY2UgdGhlCisgICAgICAgIHRpbWluZyBkYXRhIGlzIG9ubHkgcmV2ZWFsZWQgdGhyb3VnaCB0
aGUgVGltZWxpbmUgaW50ZXJmYWNlLgorCisgICAgICAgIFRoaXMgcmVmYWN0b3JpbmcgaXMgc2Fm
ZSBiZWNhdXNlIHN0YXJ0IGFuZCBlbmQgdGltZXMgYXJlIG9ubHkgdXNlZCB0byBncmFwaCByZWNv
cmRzOyB0aGUKKyAgICAgICAgdGltZXN0YW1wJ3MgYWN0dWFsIHZhbHVlIGlzIGlycmVsZXZhbnQg
YW5kIGlzIG5vdCBkaXNwbGF5ZWQgaW4gdGhlIHVzZXIgaW50ZXJmYWNlLiBEYXRlCisgICAgICAg
IHRpbWVzdGFtcHMgYXJlIHN0aWxsIGluY2x1ZGVkIHdpdGggbmV0d29yay1yZWxhdGVkIHJlY29y
ZHMgYXMgcGFydCBvZiB0aGVpciBoZWFkZXIgZGF0YS4KKworICAgICAgICBObyBuZXcgdGVzdHMs
IGJlY2F1c2Ugd2UgY2Fubm90IHJlbGlhYmx5IHRlc3QgdGltaW5nIGNoYW5nZXMgaW5kdWNlZCBi
eSBkZWJ1Z2dlciBwYXVzZXMuCisgICAgICAgIEl0IGlzIHBvc3NpYmxlIGZvciByZWNvcmRzIHRv
IGFjY3J1ZSB0aW1lIGJlZm9yZSB0aGUgZGVidWdnZXIgcGF1c2VzIG9yIGFmdGVyIGl0IHJlc3Vt
ZXMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOiBSZW1vdmUg
dW51c2VkIGluY2x1ZGUuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHA6IFVzZSB0aW1lc3RhbXBzIGZyb20gdGhlIHNoYXJlZCBzdG9wd2F0Y2guCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnRpbWVzdGFtcCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRvbUNvbnRlbnRFdmVudEZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bG9hZEV2ZW50RmlyZWQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHA6IFVzZSB0aW1lc3RhbXBzIGZyb20gdGhlIHNoYXJlZCBzdG9w
d2F0Y2guCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp0aW1lc3Rh
bXApOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFr
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlk
UmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENsb3NlV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRTZW5kV2ViU29ja2V0
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVj
ZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwOiBBZGQgY2FsbHMgdG8gcmVzZXQsIHN0YXJ0LCBhbmQgc3RvcCB0aGUgc3RvcHdhdGNo
LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OmludGVybmFsU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6aW50ZXJuYWxTdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0UHJvZmlsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbENhbGxG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxs
RXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6ZGlkUGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
ZGlkQ29udGludWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50Ojp0aW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVUaW1lQ29u
dmVydGVyOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuaDogTWFrZSB0aW1lc3RhbXAoKSBwdWJsaWMsIGFuZCByZW1vdmUgb2xkIHRp
bWVwaWVjZXMuCisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVRpbWVDb252ZXJ0ZXI6OlRpbWVs
aW5lVGltZUNvbnZlcnRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVRp
bWVDb252ZXJ0ZXI6OmZyb21Nb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dGltZUNvbnZlcnRlcik6
IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6
CisKIDIwMTQtMTAtMDcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgUm9sbC1vdmVyIENoYW5nZWxvZ3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRl
eCBhNmM5ZDBlZGUzN2QwMGEyMDkzZmQyODJiY2M2NjEyZWE1MjZhODkyLi4xMTQ4MWRmNTlhYmE5
MDBjMTQ1ZjZhOWFiNTg2ZWMyNTk0YzViYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNCBAQAorMjAxNC0xMC0wNCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGlu
Z3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3Qg
Y291bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBEb24ndCB1cGRhdGUgdGhl
IHRpbWVsaW5lJ3MgY3VycmVudCB0aW1lIHdoZW4gdGhlIGRlYnVnZ2VyIGlzIHBhdXNlZC4KKwor
ICAgICAgICBTdGFydCBhbmQgZW5kIHRpbWVzIGZvciB0aW1lbGluZSByZWNvcmRzIGFyZSBub3cg
aW4gc2Vjb25kcyBlbGFwc2VkIHNpbmNlIHRpbWVsaW5lCisgICAgICAgIHJlY29yZGluZyBzdGFy
dGVkLCByYXRoZXIgdGhhbiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoLiBBZGQgYSB3b3Jr
YXJvdW5kIHRvCisgICAgICAgIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgYmFja2Vu
ZHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdl
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmNh
cHR1cmluZ1N0YXJ0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5w
cm90b3R5cGUuZXZlbnRSZWNvcmRlZC5wcm9jZXNzUmVjb3JkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmV2ZW50UmVjb3JkZWQpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fZGVidWdnZXJQYXVzZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZpZXcucHJvdG90eXBlLl9k
ZWJ1Z2dlclJlc3VtZWQpOgorCiAyMDE0LTEwLTA0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIFByZXR0eVByaW50ZXIg
Q1NTIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUHJvZmls
ZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNQcm9maWxlclByaXZh
dGUuY3BwCmluZGV4IDJhNWVjMmM4MjM5MDFlZDllMWJiZDgyNGNmYTljNjNmOGE4MjM2ODYuLmFj
MTEyYWU2ZWZmY2M1NjYyYWVjMjBmNGM4ZjQwMGQ0NjQ3ZDMwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNQcm9maWxlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNQcm9maWxlclByaXZhdGUuY3BwCkBAIC0zNCw3ICszNCwxMSBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiB2b2lkIEpTU3RhcnRQcm9maWxpbmcoSlNDb250ZXh0
UmVmIGN0eCwgSlNTdHJpbmdSZWYgdGl0bGUpCiB7Ci0gICAgTGVnYWN5UHJvZmlsZXI6OnByb2Zp
bGVyKCktPnN0YXJ0UHJvZmlsaW5nKHRvSlMoY3R4KSwgdGl0bGUtPnN0cmluZygpKTsKKyAgICAv
LyBVc2UgYW4gaW5kZXBlbmRlbnQgc3RvcHdhdGNoIGZvciBBUEktaW5pdGlhdGVkIHByb2ZpbGlu
Zywgc2luY2UgdGhlIHVzZXIgd2lsbCBleHBlY3QgaXQKKyAgICAvLyB0byBiZSByZWxhdGl2ZSB0
byB3aGVuIHRoZWlyIGNvbW1hbmQgd2FzIGlzc3VlZC4KKyAgICBSZWZQdHI8U3RvcHdhdGNoPiBz
dG9wd2F0Y2ggPSBTdG9wd2F0Y2g6OmNyZWF0ZSgpOworICAgIHN0b3B3YXRjaC0+c3RhcnQoKTsK
KyAgICBMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmcodG9KUyhjdHgp
LCB0aXRsZS0+c3RyaW5nKCksIHN0b3B3YXRjaC5yZWxlYXNlKCkpOwogfQogCiB2b2lkIEpTRW5k
UHJvZmlsaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHRpdGxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcApp
bmRleCAyYzc4M2FmNDc3NmQ2MTU0ZjBmZjMyMzQ2MDc1ZjcxODRiMmUwYjQ5Li4zYTYxNjYzZTM2
YzQ3N2MxMTczYjJjYzM4ODc5M2QxNTJjYmYzOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzgsNyArMzgs
NiBAQAogI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpTTG9j
ay5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJMZWdhY3lQ
cm9maWxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU291cmNlUHJv
dmlkZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTMwNywxNCArMzA2
LDEyIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZUV4Y2VwdGlvbkluQnJlYWtwb2lu
dENvbmRpdGlvbihKU0M6OkV4ZWNTdGF0ZSogZXhlCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpo
YW5kbGVQYXVzZShEZWJ1Z2dlcjo6UmVhc29uRm9yUGF1c2UsIEpTR2xvYmFsT2JqZWN0KiB2bUVu
dHJ5R2xvYmFsT2JqZWN0KQogewogICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmU2Ny
aXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1c2UpOwotICAgIExlZ2FjeVByb2ZpbGVyOjpw
cm9maWxlcigpLT5kaWRQYXVzZShjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKSk7CiAgICAgZGlk
UGF1c2Uodm1FbnRyeUdsb2JhbE9iamVjdCk7CiAKICAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdn
ZXJFdmVudHMgPSBmYWxzZTsKICAgICBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpOwogCiAgICAg
ZGlkQ29udGludWUodm1FbnRyeUdsb2JhbE9iamVjdCk7Ci0gICAgTGVnYWN5UHJvZmlsZXI6OnBy
b2ZpbGVyKCktPmRpZENvbnRpbnVlKGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpKTsKICAgICBk
aXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoJlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERp
ZENvbnRpbnVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL0xlZ2FjeVByb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9M
ZWdhY3lQcm9maWxlci5jcHAKaW5kZXggNGZlMmJhNmIxY2U0MmI2OTJhNmM0ODU3MDM2ODZmYTll
NGY3ZjdmZi4uZTBjYTI2ODBiZGI5NTQ3NTE0OGZlNGM0MTkzNmRjNmU5NmZjM2E0NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwCkBA
IC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKLSNpbmNsdWRlICJEZWJ1Z2dl
ckNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTUwLDE2ICs0OSwx
NiBAQCBzdGF0aWMgdW5zaWduZWQgUHJvZmlsZXNVSUQgPSAwOwogCiBzdGF0aWMgQ2FsbElkZW50
aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXJGcm9tRnVuY3Rpb25JbXAoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRTb3VyY2VVUkwsIHVuc2lnbmVkIGRlZmF1bHRM
aW5lTnVtYmVyLCB1bnNpZ25lZCBkZWZhdWx0Q29sdW1uTnVtYmVyKTsKIAotTGVnYWN5UHJvZmls
ZXIqIExlZ2FjeVByb2ZpbGVyOjpzX3NoYXJlZExlZ2FjeVByb2ZpbGVyID0gMDsKK0xlZ2FjeVBy
b2ZpbGVyKiBMZWdhY3lQcm9maWxlcjo6c19zaGFyZWRMZWdhY3lQcm9maWxlciA9IG51bGxwdHI7
CiAKIExlZ2FjeVByb2ZpbGVyKiBMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKQogewogICAgIGlm
ICghc19zaGFyZWRMZWdhY3lQcm9maWxlcikKICAgICAgICAgc19zaGFyZWRMZWdhY3lQcm9maWxl
ciA9IG5ldyBMZWdhY3lQcm9maWxlcigpOwogICAgIHJldHVybiBzX3NoYXJlZExlZ2FjeVByb2Zp
bGVyOwotfSAgIAorfQogCi12b2lkIExlZ2FjeVByb2ZpbGVyOjpzdGFydFByb2ZpbGluZyhFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIExlZ2FjeVByb2ZpbGVyOjpz
dGFydFByb2ZpbGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3NS
ZWZQdHI8U3RvcHdhdGNoPiBzdG9wd2F0Y2gpCiB7CiAgICAgaWYgKCFleGVjKQogICAgICAgICBy
ZXR1cm47CkBAIC03NSwxNCArNzQsMTQgQEAgdm9pZCBMZWdhY3lQcm9maWxlcjo6c3RhcnRQcm9m
aWxpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIH0KIAogICAg
IGV4ZWMtPnZtKCkuc2V0RW5hYmxlZFByb2ZpbGVyKHRoaXMpOwotICAgIFJlZlB0cjxQcm9maWxl
R2VuZXJhdG9yPiBwcm9maWxlR2VuZXJhdG9yID0gUHJvZmlsZUdlbmVyYXRvcjo6Y3JlYXRlKGV4
ZWMsIHRpdGxlLCArK1Byb2ZpbGVzVUlEKTsKKyAgICBSZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4g
cHJvZmlsZUdlbmVyYXRvciA9IFByb2ZpbGVHZW5lcmF0b3I6OmNyZWF0ZShleGVjLCB0aXRsZSwg
KytQcm9maWxlc1VJRCwgc3RvcHdhdGNoKTsKICAgICBtX2N1cnJlbnRQcm9maWxlcy5hcHBlbmQo
cHJvZmlsZUdlbmVyYXRvcik7CiB9CiAKIFBhc3NSZWZQdHI8UHJvZmlsZT4gTGVnYWN5UHJvZmls
ZXI6OnN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlKQog
ewogICAgIGlmICghZXhlYykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIG9yaWdpbiA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKTsKICAgICBmb3IgKHB0cmRpZmZfdCBpID0gbV9jdXJyZW50UHJvZmlsZXMuc2l6ZSgp
IC0gMTsgaSA+PSAwOyAtLWkpIHsKQEAgLTk0LDEyICs5MywxMiBAQCBQYXNzUmVmUHRyPFByb2Zp
bGU+IExlZ2FjeVByb2ZpbGVyOjpzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U3RyaW5nJgogICAgICAgICAgICAgbV9jdXJyZW50UHJvZmlsZXMucmVtb3ZlKGkpOwogICAgICAg
ICAgICAgaWYgKCFtX2N1cnJlbnRQcm9maWxlcy5zaXplKCkpCiAgICAgICAgICAgICAgICAgZXhl
Yy0+dm0oKS5zZXRFbmFibGVkUHJvZmlsZXIobnVsbHB0cik7Ci0gICAgICAgICAgICAKKwogICAg
ICAgICAgICAgcmV0dXJuIHJldHVyblByb2ZpbGU7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBMZWdhY3lQcm9maWxlcjo6
c3RvcFByb2ZpbGluZyhKU0dsb2JhbE9iamVjdCogb3JpZ2luKQpAQCAtMTg0LDI4ICsxODMsNiBA
QCB2b2lkIExlZ2FjeVByb2ZpbGVyOjpleGNlcHRpb25VbndpbmQoRXhlY1N0YXRlKiBoYW5kbGVy
Q2FsbEZyYW1lKQogICAgIGNhbGxGdW5jdGlvbkZvclByb2ZpbGVzV2l0aEdyb3VwKHN0ZDo6Ymlu
ZCgmUHJvZmlsZUdlbmVyYXRvcjo6ZXhjZXB0aW9uVW53aW5kLCBzdGQ6OnBsYWNlaG9sZGVyczo6
XzEsIGhhbmRsZXJDYWxsRnJhbWUsIGNhbGxJZGVudGlmaWVyKSwgbV9jdXJyZW50UHJvZmlsZXMs
IGhhbmRsZXJDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvZmlsZUdyb3VwKCkp
OwogfQogCi12b2lkIExlZ2FjeVByb2ZpbGVyOjpkaWRQYXVzZShQYXNzUmVmUHRyPERlYnVnZ2Vy
Q2FsbEZyYW1lPiBwcnBDYWxsRnJhbWUpCi17Ci0gICAgaWYgKG1fY3VycmVudFByb2ZpbGVzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1l
PiBjYWxsRnJhbWUgPSBwcnBDYWxsRnJhbWU7Ci0gICAgQ2FsbElkZW50aWZpZXIgY2FsbElkZW50
aWZpZXIgPSBjcmVhdGVDYWxsSWRlbnRpZmllcihjYWxsRnJhbWUtPmV4ZWMoKSwgSlNWYWx1ZSgp
LCBTdHJpbmdJbXBsOjplbXB0eSgpLCAwLCAwKTsKLQotICAgIGNhbGxGdW5jdGlvbkZvclByb2Zp
bGVzV2l0aEdyb3VwKHN0ZDo6YmluZCgmUHJvZmlsZUdlbmVyYXRvcjo6ZGlkUGF1c2UsIHN0ZDo6
cGxhY2Vob2xkZXJzOjpfMSwgY2FsbEZyYW1lLCBjYWxsSWRlbnRpZmllciksIG1fY3VycmVudFBy
b2ZpbGVzLCBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+cHJvZmlsZUdyb3VwKCkp
OwotfQotCi12b2lkIExlZ2FjeVByb2ZpbGVyOjpkaWRDb250aW51ZShQYXNzUmVmUHRyPERlYnVn
Z2VyQ2FsbEZyYW1lPiBwcnBDYWxsRnJhbWUpCi17Ci0gICAgaWYgKG1fY3VycmVudFByb2ZpbGVz
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPERlYnVnZ2VyQ2FsbEZy
YW1lPiBjYWxsRnJhbWUgPSBwcnBDYWxsRnJhbWU7Ci0gICAgQ2FsbElkZW50aWZpZXIgY2FsbElk
ZW50aWZpZXIgPSBjcmVhdGVDYWxsSWRlbnRpZmllcihjYWxsRnJhbWUtPmV4ZWMoKSwgSlNWYWx1
ZSgpLCBTdHJpbmdJbXBsOjplbXB0eSgpLCAwLCAwKTsKLQotICAgIGNhbGxGdW5jdGlvbkZvclBy
b2ZpbGVzV2l0aEdyb3VwKHN0ZDo6YmluZCgmUHJvZmlsZUdlbmVyYXRvcjo6ZGlkQ29udGludWUs
IHN0ZDo6cGxhY2Vob2xkZXJzOjpfMSwgY2FsbEZyYW1lLCBjYWxsSWRlbnRpZmllciksIG1fY3Vy
cmVudFByb2ZpbGVzLCBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+cHJvZmlsZUdy
b3VwKCkpOwotfQotCiBDYWxsSWRlbnRpZmllciBMZWdhY3lQcm9maWxlcjo6Y3JlYXRlQ2FsbElk
ZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUsIGNvbnN0IFN0
cmluZyYgZGVmYXVsdFNvdXJjZVVSTCwgdW5zaWduZWQgZGVmYXVsdExpbmVOdW1iZXIsIHVuc2ln
bmVkIGRlZmF1bHRDb2x1bW5OdW1iZXIpCiB7CiAgICAgaWYgKCFmdW5jdGlvblZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuaAppbmRleCAx
ZDZjYjI2ZjgzZmYwMmY4Y2FkMzI3MGQxNGUwMTQzNjYwYWI3NmFmLi44ZjZhZjQwZWU5OWVhNGE5
MDUwMWU3ZWVlYTdiOTAyNzVjZWUzZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuaApAQCAtMzIsMTMgKzMyLDEyIEBACiAjaW5jbHVkZSAi
UHJvZmlsZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBEZWJ1Z2dlckNhbGxGcmFtZTsKIGNsYXNz
IEV4ZWNTdGF0ZTsKLWNsYXNzIFZNOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU09i
amVjdDsKIGNsYXNzIEpTVmFsdWU7CkBAIC00OCwxMCArNDcsMTAgQEAgc3RydWN0IENhbGxJZGVu
dGlmaWVyOwogY2xhc3MgTGVnYWN5UHJvZmlsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMZWdhY3lQcm9maWxl
ciogcHJvZmlsZXIoKTsgCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIExlZ2FjeVByb2Zp
bGVyKiBwcm9maWxlcigpOwogICAgIHN0YXRpYyBDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxsSWRl
bnRpZmllcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJM
LCB1bnNpZ25lZCBkZWZhdWx0TGluZU51bWJlciwgdW5zaWduZWQgZGVmYXVsdENvbHVtbk51bWJl
cik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0UHJvZmlsaW5nKEV4ZWNTdGF0
ZSosIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIFBh
c3NSZWZQdHI8U3RvcHdhdGNoPik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxQ
cm9maWxlPiBzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRs
ZSk7CiAgICAgdm9pZCBzdG9wUHJvZmlsaW5nKEpTR2xvYmFsT2JqZWN0Kik7CiAKQEAgLTY2LDkg
KzY1LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBleGNlcHRpb25VbndpbmQoRXhlY1N0YXRlKiBo
YW5kbGVyQ2FsbEZyYW1lKTsKIAotICAgIHZvaWQgZGlkUGF1c2UoUGFzc1JlZlB0cjxEZWJ1Z2dl
ckNhbGxGcmFtZT4pOwotICAgIHZvaWQgZGlkQ29udGludWUoUGFzc1JlZlB0cjxEZWJ1Z2dlckNh
bGxGcmFtZT4pOwotCiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxQcm9maWxlR2VuZXJhdG9yPj4m
IGN1cnJlbnRQcm9maWxlcygpIHsgcmV0dXJuIG1fY3VycmVudFByb2ZpbGVzOyB9OwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCmluZGV4IDc1
MmI2Y2MyZGUyMzM4MGY1YTI3NDJjZTQ4MzBjMTU4MDVmODM3YmEuLjZkNjI0MjFmYmQyZjQ0MTc1
NDlhMWVlZDBlMTdlMDQ5YWI5OGQ4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgUHJvZmlsZTo6UHJvZmlsZShjb25zdCBT
dHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCiAgICAgLy8gRklYTUU6IFdoZW4gbXVsdGktdGhy
ZWFkaW5nIGlzIHN1cHBvcnRlZCB0aGlzIHdpbGwgYmUgYSB2ZWN0b3IgYW5kIGNhbGxzCiAgICAg
Ly8gaW50byB0aGUgcHJvZmlsZXIgd2lsbCBuZWVkIHRvIGtub3cgd2hpY2ggdGhyZWFkIGl0IGlz
IGV4ZWN1dGluZyBvbi4KICAgICBtX3Jvb3ROb2RlID0gUHJvZmlsZU5vZGU6OmNyZWF0ZShudWxs
cHRyLCBDYWxsSWRlbnRpZmllcihBU0NJSUxpdGVyYWwoIlRocmVhZF8xIiksIFN0cmluZygpLCAw
LCAwKSwgbnVsbHB0cik7Ci0gICAgbV9yb290Tm9kZS0+YXBwZW5kQ2FsbChQcm9maWxlTm9kZTo6
Q2FsbChjdXJyZW50VGltZSgpKSk7CisgICAgbV9yb290Tm9kZS0+YXBwZW5kQ2FsbChQcm9maWxl
Tm9kZTo6Q2FsbCgwLjApKTsKIH0KIAogUHJvZmlsZTo6flByb2ZpbGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwCmluZGV4IDMy
ZTg5MjYwZWVmYzc4ZjJhOGViOTk2YWU5YTc3Zjg5NmVkOTQzNzguLmE0YjMzNGM1OTNkNTkxMjU4
MzgzYTZiODJiNDJhYmNlOGM3NDI4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lu
Y2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkRl
YnVnZ2VyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmlu
Z1JlZi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTQwLDIxICszOSwxOCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotUGFzc1JlZlB0cjxQcm9maWxlR2VuZXJhdG9yPiBQcm9maWxlR2Vu
ZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNp
Z25lZCB1aWQpCitQYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IFByb2ZpbGVHZW5lcmF0b3I6
OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVp
ZCwgUGFzc1JlZlB0cjxTdG9wd2F0Y2g+IHN0b3B3YXRjaCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFByb2ZpbGVHZW5lcmF0b3IoZXhlYywgdGl0bGUsIHVpZCkpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUHJvZmlsZUdlbmVyYXRvcihleGVjLCB0aXRsZSwgdWlkLCBzdG9wd2F0Y2gp
KTsKIH0KIAotUHJvZmlsZUdlbmVyYXRvcjo6UHJvZmlsZUdlbmVyYXRvcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCkKK1Byb2ZpbGVHZW5lcmF0b3I6
OlByb2ZpbGVHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1
bnNpZ25lZCB1aWQsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPiBzdG9wd2F0Y2gpCiAgICAgOiBtX29y
aWdpbihleGVjID8gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpIDogbnVsbHB0cikKICAgICAs
IG1fcHJvZmlsZUdyb3VwKGV4ZWMgPyBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb2Zp
bGVHcm91cCgpIDogMCkKLSAgICAsIG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXAoTkFOKQorICAg
ICwgbV9zdG9wd2F0Y2goc3RvcHdhdGNoKQogICAgICwgbV9mb3VuZENvbnNvbGVTdGFydFBhcmVu
dChmYWxzZSkKICAgICAsIG1fc3VzcGVuZGVkKGZhbHNlKQogewotICAgIGlmIChEZWJ1Z2dlciog
ZGVidWdnZXIgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpCi0gICAg
ICAgIG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXAgPSBkZWJ1Z2dlci0+aXNQYXVzZWQoKSA/IGN1
cnJlbnRUaW1lKCkgOiBOQU47Ci0KICAgICBtX3Byb2ZpbGUgPSBQcm9maWxlOjpjcmVhdGUodGl0
bGUsIHVpZCk7CiAgICAgbV9jdXJyZW50Tm9kZSA9IG1fcm9vdE5vZGUgPSBtX3Byb2ZpbGUtPnJv
b3ROb2RlKCk7CiAgICAgaWYgKGV4ZWMpCkBAIC04NSw3ICs4MSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgdW5zaWduZWQgY29sdW1uID0gMDsKICAgICAgICAgdmlzaXRvci0+Y29tcHV0ZUxpbmVBbmRD
b2x1bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IFByb2ZpbGVOb2Rl
OjpjcmVhdGUobV9leGVjLCBMZWdhY3lQcm9maWxlcjo6Y3JlYXRlQ2FsbElkZW50aWZpZXIobV9l
eGVjLCB2aXNpdG9yLT5jYWxsZWUoKSwgdmlzaXRvci0+c291cmNlVVJMKCksIGxpbmUsIGNvbHVt
biksIG1fcm9vdE5vZGUuZ2V0KCkpOwotICAgICAgICBtX2N1cnJlbnROb2RlLT5hcHBlbmRDYWxs
KFByb2ZpbGVOb2RlOjpDYWxsKGN1cnJlbnRUaW1lKCkpKTsKKyAgICAgICAgLy8gQXNzdW1lIHRo
YXQgcHJvZmlsZSB0aW1lcyBhcmUgcmVsYXRpdmUgdG8gd2hlbiB0aGUgfGNvbnNvbGUucHJvZmls
ZXwgY29tbWFuZCBpcyBldmFsdWF0ZWQuCisgICAgICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgbG9n
aWMgaW4gSlNTdGFydFByb2ZpbGluZygpIGFuZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFy
dEZyb21Db25zb2xlKCkuCisgICAgICAgIG1fY3VycmVudE5vZGUtPmFwcGVuZENhbGwoUHJvZmls
ZU5vZGU6OkNhbGwoMC4wKSk7CiAgICAgICAgIG1fcm9vdE5vZGUtPnNwbGljZU5vZGUobV9jdXJy
ZW50Tm9kZS5nZXQoKSk7CiAKICAgICAgICAgbV9mb3VuZFBhcmVudCA9IHRydWU7CkBAIC0xMTgs
MTIgKzExNiw3IEBAIHZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6YmVnaW5DYWxsRW50cnkoUHJvZmls
ZU5vZGUqIG5vZGUsIGRvdWJsZSBzdGFydFRpbWUpCiAgICAgQVNTRVJUX0FSRyhub2RlLCBub2Rl
KTsKIAogICAgIGlmIChpc25hbihzdGFydFRpbWUpKQotICAgICAgICBzdGFydFRpbWUgPSBjdXJy
ZW50VGltZSgpOwotCi0gICAgLy8gSWYgdGhlIGRlYnVnZ2VyIGlzIHBhdXNlZCB3aGVuIGJlZ2lu
bmluZywgdGhlbiBkb24ndCBzZXQgdGhlIHN0YXJ0IHRpbWUuIEl0Ci0gICAgLy8gd2lsbCBiZSBm
aXhlZCB1cCB3aGVuIHRoZSBkZWJ1Z2dlciB1bnBhdXNlcyBvciB0aGUgY2FsbCBlbnRyeSBlbmRz
LgotICAgIGlmICghaXNuYW4obV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCkpCi0gICAgICAgIHN0
YXJ0VGltZSA9IE5BTjsKKyAgICAgICAgc3RhcnRUaW1lID0gbV9zdG9wd2F0Y2gtPmVsYXBzZWRU
aW1lKCk7CiAKICAgICBub2RlLT5hcHBlbmRDYWxsKFByb2ZpbGVOb2RlOjpDYWxsKHN0YXJ0VGlt
ZSkpOwogfQpAQCAtMTMzLDIyICsxMjYsOCBAQCB2b2lkIFByb2ZpbGVHZW5lcmF0b3I6OmVuZENh
bGxFbnRyeShQcm9maWxlTm9kZSogbm9kZSkKICAgICBBU1NFUlRfQVJHKG5vZGUsIG5vZGUpOwog
CiAgICAgUHJvZmlsZU5vZGU6OkNhbGwmIGxhc3QgPSBub2RlLT5sYXN0Q2FsbCgpOwotCi0gICAg
Ly8gSWYgdGhlIGRlYnVnZ2VyIGlzIHBhdXNlZCwgaWdub3JlIHRoZSBpbnRlcnZhbCB0aGF0IGVu
ZHMgbm93LgotICAgIGlmICghaXNuYW4obV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCkgJiYgIWlz
bmFuKGxhc3QuZWxhcHNlZFRpbWUoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHBh
dXNlZCBhbmQgbm8gdGltZSB3YXMgYWNjcnVlZCB0aGVuIHRoZSBkZWJ1Z2dlciB3YXMgbmV2ZXIg
dW5wYXVzZWQuIFRoZSBjYWxsIHdpbGwKLSAgICAvLyBoYXZlIG5vIHRpbWUgYWNjcnVlZCBhbmQg
YXBwZWFyIHRvIGhhdmUgc3RhcnRlZCB3aGVuIHRoZSBkZWJ1Z2dlciB3YXMgcGF1c2VkLgotICAg
IGlmICghaXNuYW4obV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCkpIHsKLSAgICAgICAgbGFzdC5z
ZXRTdGFydFRpbWUobV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCk7Ci0gICAgICAgIGxhc3Quc2V0
RWxhcHNlZFRpbWUoMC4wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE90aGVy
d2lzZSwgYWRkIHRoZSBpbnRlcnZhbCBlbmRpbmcgbm93IHRvIGVsYXBzZWQgdGltZS4KICAgICBk
b3VibGUgcHJldmlvdXNFbGFwc2VkVGltZSA9IGlzbmFuKGxhc3QuZWxhcHNlZFRpbWUoKSkgPyAw
LjAgOiBsYXN0LmVsYXBzZWRUaW1lKCk7Ci0gICAgZG91YmxlIG5ld2x5RWxhcHNlZFRpbWUgPSBj
dXJyZW50VGltZSgpIC0gbGFzdC5zdGFydFRpbWUoKTsKKyAgICBkb3VibGUgbmV3bHlFbGFwc2Vk
VGltZSA9IG1fc3RvcHdhdGNoLT5lbGFwc2VkVGltZSgpIC0gbGFzdC5zdGFydFRpbWUoKTsKICAg
ICBsYXN0LnNldEVsYXBzZWRUaW1lKHByZXZpb3VzRWxhcHNlZFRpbWUgKyBuZXdseUVsYXBzZWRU
aW1lKTsKIH0KIApAQCAtMTgwLDcgKzE1OSw3IEBAIHZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6d2ls
bEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IENhbGxJZGVudGlmCiAg
ICAgfQogCiAgICAgbV9jdXJyZW50Tm9kZSA9IGNhbGxlZU5vZGU7Ci0gICAgYmVnaW5DYWxsRW50
cnkoY2FsbGVlTm9kZS5nZXQoKSk7CisgICAgYmVnaW5DYWxsRW50cnkoY2FsbGVlTm9kZS5nZXQo
KSwgbV9zdG9wd2F0Y2gtPmVsYXBzZWRUaW1lKCkpOwogfQogCiB2b2lkIFByb2ZpbGVHZW5lcmF0
b3I6OmRpZEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IENhbGxJZGVu
dGlmaWVyJiBjYWxsSWRlbnRpZmllcikKQEAgLTIyMywzMyArMjAyLDYgQEAgdm9pZCBQcm9maWxl
R2VuZXJhdG9yOjpleGNlcHRpb25VbndpbmQoRXhlY1N0YXRlKiBoYW5kbGVyQ2FsbEZyYW1lLCBj
b25zdCBDYWxsSWQKICAgICB9CiB9CiAKLXZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6ZGlkUGF1c2Uo
UGFzc1JlZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4sIGNvbnN0IENhbGxJZGVudGlmaWVyJikKLXsK
LSAgICBBU1NFUlQoaXNuYW4obV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCkpOwotCi0gICAgbV9k
ZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCA9IGN1cnJlbnRUaW1lKCk7Ci0KLSAgICBmb3IgKFByb2Zp
bGVOb2RlKiBub2RlID0gbV9jdXJyZW50Tm9kZS5nZXQoKTsgbm9kZSAhPSBtX3Byb2ZpbGUtPnJv
b3ROb2RlKCk7IG5vZGUgPSBub2RlLT5wYXJlbnQoKSkgewotICAgICAgICBQcm9maWxlTm9kZTo6
Q2FsbCYgbGFzdCA9IG5vZGUtPmxhc3RDYWxsKCk7Ci0gICAgICAgIEFTU0VSVCghaXNuYW4obGFz
dC5zdGFydFRpbWUoKSkpOwotCi0gICAgICAgIGRvdWJsZSBwcmV2aW91c0VsYXBzZWRUaW1lID0g
aXNuYW4obGFzdC5lbGFwc2VkVGltZSgpKSA/IDAuMCA6IGxhc3QuZWxhcHNlZFRpbWUoKTsKLSAg
ICAgICAgZG91YmxlIGFkZGl0aW9uYWxFbGFwc2VkVGltZSA9IG1fZGVidWdnZXJQYXVzZWRUaW1l
c3RhbXAgLSBsYXN0LnN0YXJ0VGltZSgpOwotICAgICAgICBsYXN0LnNldFN0YXJ0VGltZShOQU4p
OwotICAgICAgICBsYXN0LnNldEVsYXBzZWRUaW1lKHByZXZpb3VzRWxhcHNlZFRpbWUgKyBhZGRp
dGlvbmFsRWxhcHNlZFRpbWUpOwotICAgIH0KLX0KLQotdm9pZCBQcm9maWxlR2VuZXJhdG9yOjpk
aWRDb250aW51ZShQYXNzUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiwgY29uc3QgQ2FsbElkZW50
aWZpZXImKQotewotICAgIEFTU0VSVCghaXNuYW4obV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCkp
OwotCi0gICAgZm9yIChQcm9maWxlTm9kZSogbm9kZSA9IG1fY3VycmVudE5vZGUuZ2V0KCk7IG5v
ZGUgIT0gbV9wcm9maWxlLT5yb290Tm9kZSgpOyBub2RlID0gbm9kZS0+cGFyZW50KCkpCi0gICAg
ICAgIG5vZGUtPmxhc3RDYWxsKCkuc2V0U3RhcnRUaW1lKG1fZGVidWdnZXJQYXVzZWRUaW1lc3Rh
bXApOwotCi0gICAgbV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCA9IE5BTjsKLX0KLQogdm9pZCBQ
cm9maWxlR2VuZXJhdG9yOjpzdG9wUHJvZmlsaW5nKCkKIHsKICAgICBmb3IgKFByb2ZpbGVOb2Rl
KiBub2RlID0gbV9jdXJyZW50Tm9kZS5nZXQoKTsgbm9kZSAhPSBtX3Byb2ZpbGUtPnJvb3ROb2Rl
KCk7IG5vZGUgPSBub2RlLT5wYXJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oCmluZGV4IDlmNTFhM2RjODZjZDMzZjQxYTRlNGJl
YWZlOWY1MGMzY2NjOTQxZjIuLmM1NzQ2ZDM5ZGY1MDA2MzQwMzIwYjk5ODAzZTVhZGY2MWIxNTA2
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2Vu
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5l
cmF0b3IuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQyLDcgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBQcm9maWxlR2VuZXJhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8UHJvZmlsZUdlbmVy
YXRvcj4gIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2ZpbGVH
ZW5lcmF0b3I+IGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIHVu
c2lnbmVkIHVpZCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+
IGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVp
ZCwgUGFzc1JlZlB0cjxTdG9wd2F0Y2g+KTsKIAogICAgICAgICAvLyBNZW1iZXJzCiAgICAgICAg
IGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSgpIGNvbnN0OwpAQCAtNTQsMjggKzU1LDI0IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGRpZEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJD
YWxsRnJhbWUsIGNvbnN0IENhbGxJZGVudGlmaWVyJik7CiAgICAgICAgIHZvaWQgZXhjZXB0aW9u
VW53aW5kKEV4ZWNTdGF0ZSogaGFuZGxlckNhbGxGcmFtZSwgY29uc3QgQ2FsbElkZW50aWZpZXIm
KTsKIAotICAgICAgICB2b2lkIGRpZFBhdXNlKFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+
LCBjb25zdCBDYWxsSWRlbnRpZmllciYpOwotICAgICAgICB2b2lkIGRpZENvbnRpbnVlKFBhc3NS
ZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+LCBjb25zdCBDYWxsSWRlbnRpZmllciYpOwotCiAgICAg
ICAgIHZvaWQgc2V0SXNTdXNwZW5kZWQoYm9vbCBzdXNwZW5kZWQpIHsgQVNTRVJUKG1fc3VzcGVu
ZGVkICE9IHN1c3BlbmRlZCk7IG1fc3VzcGVuZGVkID0gc3VzcGVuZGVkOyB9CiAKICAgICAgICAg
dm9pZCBzdG9wUHJvZmlsaW5nKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBQcm9maWxlR2Vu
ZXJhdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlk
KTsKKyAgICAgICAgUHJvZmlsZUdlbmVyYXRvcihFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmlu
ZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCwgUGFzc1JlZlB0cjxTdG9wd2F0Y2g+KTsKICAgICAgICAg
dm9pZCBhZGRQYXJlbnRGb3JDb25zb2xlU3RhcnQoRXhlY1N0YXRlKik7CiAKICAgICAgICAgdm9p
ZCByZW1vdmVQcm9maWxlU3RhcnQoKTsKICAgICAgICAgdm9pZCByZW1vdmVQcm9maWxlRW5kKCk7
CiAKLSAgICAgICAgdm9pZCBiZWdpbkNhbGxFbnRyeShQcm9maWxlTm9kZSosIGRvdWJsZSBzdGFy
dFRpbWUgPSBOQU4pOworICAgICAgICB2b2lkIGJlZ2luQ2FsbEVudHJ5KFByb2ZpbGVOb2RlKiwg
ZG91YmxlIHN0YXJ0VGltZSk7CiAgICAgICAgIHZvaWQgZW5kQ2FsbEVudHJ5KFByb2ZpbGVOb2Rl
Kik7CiAKICAgICAgICAgUmVmUHRyPFByb2ZpbGU+IG1fcHJvZmlsZTsKICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIG1fb3JpZ2luOwogICAgICAgICB1bnNpZ25lZCBtX3Byb2ZpbGVHcm91cDsKLSAg
ICAgICAgLy8gVGltZXN0YW1wIGlzIHNldCB0byBOQU4gd2hlbiB0aGUgZGVidWdnZXIgaXMgbm90
IGN1cnJlbnRseSBwYXVzZWQuCi0gICAgICAgIGRvdWJsZSBtX2RlYnVnZ2VyUGF1c2VkVGltZXN0
YW1wOworICAgICAgICBSZWZQdHI8U3RvcHdhdGNoPiBtX3N0b3B3YXRjaDsKICAgICAgICAgUmVm
UHRyPFByb2ZpbGVOb2RlPiBtX3Jvb3ROb2RlOwogICAgICAgICBSZWZQdHI8UHJvZmlsZU5vZGU+
IG1fY3VycmVudE5vZGU7CiAgICAgICAgIGJvb2wgbV9mb3VuZENvbnNvbGVTdGFydFBhcmVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ogYi9Tb3VyY2Uv
V1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCmluZGV4IDBmODNiYWU5YjU4N2VlOWQzOGQxYjkw
NjBkYzRlYzZjNGU2ZjEwNDIuLjJmM2FjMjA5YzUyNmMwMzRmZjQwYWU1ZTM2NDQ0MjZmNmJhYjZi
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKKysrIGIv
U291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagpAQCAtMjcwLDYgKzI3MCw3IEBAIO+7
vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx3dGZcU3RhY2tCb3VuZHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHd0ZlxTdGF0aWNDb25zdHJ1Y3RvcnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHd0ZlxTdGRMaWJFeHRyYXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0
ZlxTdG9wd2F0Y2guaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdHJpbmdF
eHRyYXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdHJpbmdIYXNoZXIu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdHJpbmdQcmludFN0cmVhbS5o
IiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0
ZXJzIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCmluZGV4IDZh
MGU5YTE2MmQ5NTc1NTJjOGY3N2UyMTEzNTZlYmYzYTRjNTRjYTMuLjU5NTNhMGY0MmFmZDc1MDc2
YmY5ODVkNTk4MzBkOWJlYzg2MzVmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnZjeHBy
b2ovV1RGLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52
Y3hwcm9qLmZpbHRlcnMKQEAgLTYxNCw2ICs2MTQsOSBAQCDvu788P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0ZExp
YkV4dHJhcy5oIj4KICAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3RvcHdhdGNoLmgiPgorICAgICAgPEZp
bHRlcj53dGY8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHd0ZlxTdHJpbmdFeHRyYXMuaCI+CiAgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNTEyZTBlMjFlOWI0ZDUyNzgwNTRhODllZmM2YzExMDE4NDc5NWFjZi4uZmY0OGRhMGNj
NTMxMjgyYTEyZDBkNTEwNmM2NjAzNWYxNTVkOTE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzMsNiArMjczLDcgQEAKIAkJQThBNDc0ODcxNTFBODI1
QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWRE
YXRhLmggKi87IH07CiAJCUE4QTQ3NDhDMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3NDhCMTUxQTgy
NjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLzsgfTsKIAkJQjM4RkQ3QkQxNjg5NTNFODAwNjVDOTY5
IC8qIEZlYXR1cmVEZWZpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmluZXMuaCAq
LzsgfTsKKwkJQzRGOEE5MzcxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzRGOEE5MzYxOUM2NUVCNDAw
QjJCMTVEIC8qIFN0b3B3YXRjaC5oICovOyB9OwogCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAg
LyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovOyB9Owog
CQlDRDU0OTdBRDE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQjE1ODU3RDAzMDBCNUJDMzAg
LyogTWVkaWFUaW1lLmggKi87IH07CiAJCUNFNDY1MTZFMTlEQjFGQjQwMDNFQ0EwNSAvKiBOU01h
cFRhYmxlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTQ2NTE2RDE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5oICovOyB9OwpAQCAt
NTY2LDYgKzU2Nyw3IEBACiAJCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWRE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlRocmVhZERhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDc0OEIxNTFBODI2NDAwNDEyM0ZGIC8q
IGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZl
YXR1cmVEZWZpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZlYXR1cmVE
ZWZpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0RjhBOTM2MTlDNjVFQjQw
MEIyQjE1RCAvKiBTdG9wd2F0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RvcHdhdGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5N0FBMTU4NTdE
MDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1
NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZWRpYVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0U0NjUxNkQxOURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTlNNYXBUYWJsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODU4LDYgKzg2MCw3IEBACiAJCQkJRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0
IC8qIFN0YWNrU3RhdHMuaCAqLywKIAkJCQlBOEE0NzMxMDE1MUE4MjVCMDA0MTIzRkYgLyogU3Rh
dGljQ29uc3RydWN0b3JzLmggKi8sCiAJCQkJQThBNDczMTExNTFBODI1QjAwNDEyM0ZGIC8qIFN0
ZExpYkV4dHJhcy5oICovLAorCQkJCUM0RjhBOTM2MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0
Y2guaCAqLywKIAkJCQkxQTZCQjc2ODE2MkYzMDA1MDBERDE2REIgLyogU3RyZWFtQnVmZmVyLmgg
Ki8sCiAJCQkJQThBNDczMTMxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0V4dHJhcy5oICovLAog
CQkJCUE3NDg3NDUxMTdBMEJEQUUwMEZBMDRDQiAvKiBTdHJpbmdIYXNoRHVtcENvbnRleHQuaCAq
LywKQEAgLTEwNzgsNiArMTA4MSw3IEBACiAJCQkJQThBNDczQTMxNTFBODI1QjAwNDEyM0ZGIC8q
IERlY2ltYWxOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkE2MTdCNkI0RkIwMEE3
QUUzRiAvKiBEZWZlcnJhYmxlUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDcz
QTUxNTFBODI1QjAwNDEyM0ZGIC8qIERlcXVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNEY4QTkz
NzE5QzY1RUI0MDBCMkIxNUQgLyogU3RvcHdhdGNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzNBNjE1MUE4MjVCMDA0MTIzRkYgLyogRGlzYWxsb3dDVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDczQUYxNTFBODI1QjAwNDEyM0ZGIC8qIGRpeS1mcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDczQjExNTFBODI1QjAwNDEyM0ZGIC8qIGRvdWJsZS1jb252ZXJzaW9uLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggMmFhZDc5M2M4MTcwYjExZGYyZTEwOGVi
MTM0NzE2MDdhYjBhNWUyZC4uYmMyNmFjNDFkMjVjN2IzNzEwMDBmNGVkYmQwZTI3NzcyYTA0NTU3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTkyLDYgKzkyLDcgQEAgc2V0KFdURl9IRUFERVJT
CiAgICAgU3RhY2tTdGF0cy5oCiAgICAgU3RhdGljQ29uc3RydWN0b3JzLmgKICAgICBTdGRMaWJF
eHRyYXMuaAorICAgIFN0b3B3YXRjaC5oCiAgICAgU3RyaW5nRXh0cmFzLmgKICAgICBTdHJpbmdI
YXNoZXIuaAogICAgIFN0cmluZ1ByaW50U3RyZWFtLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1N0b3B3YXRjaC5oIGIvU291cmNlL1dURi93dGYvU3RvcHdhdGNoLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDdlNWRiMTIzYzUzMmEzNGEwNTUyZjkwZDAwZDhmOWY1MjdiZmU1OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1N0b3B3YXRjaC5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU3RvcHdhdGNoX2gKKyNkZWZpbmUgU3RvcHdhdGNoX2gKKworI2luY2x1ZGUg
PGNtYXRoPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBTdG9wd2F0Y2ggOiBwdWJsaWMg
UmVmQ291bnRlZDxTdG9wd2F0Y2g+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dG9wd2F0Y2g+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0
b3B3YXRjaCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBzdGFydCgp
OworICAgIHZvaWQgc3RvcCgpOworCisgICAgZG91YmxlIGVsYXBzZWRUaW1lKCk7CisKK3ByaXZh
dGU6CisgICAgU3RvcHdhdGNoKCkKKyAgICAgICAgOiBtX2VsYXBzZWRUaW1lKDAuMCkKKyAgICAg
ICAgLCBtX2xhc3RTdGFydFRpbWUoTkFOKQorICAgIHsKKyAgICB9CisKKyAgICBkb3VibGUgbV9l
bGFwc2VkVGltZTsKKyAgICBkb3VibGUgbV9sYXN0U3RhcnRUaW1lOworfTsKKworaW5saW5lIHZv
aWQgU3RvcHdhdGNoOjpyZXNldCgpCit7CisgICAgbV9lbGFwc2VkVGltZSA9IDAuMDsKKyAgICBt
X2xhc3RTdGFydFRpbWUgPSBOQU47Cit9CisKK2lubGluZSB2b2lkIFN0b3B3YXRjaDo6c3RhcnQo
KQoreworICAgIEFTU0VSVChpc25hbihtX2xhc3RTdGFydFRpbWUpKTsKKworICAgIG1fbGFzdFN0
YXJ0VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworfQorCitpbmxpbmUgdm9p
ZCBTdG9wd2F0Y2g6OnN0b3AoKQoreworICAgIEFTU0VSVCghaXNuYW4obV9sYXN0U3RhcnRUaW1l
KSk7CisKKyAgICBtX2VsYXBzZWRUaW1lICs9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
IC0gbV9sYXN0U3RhcnRUaW1lOworICAgIG1fbGFzdFN0YXJ0VGltZSA9IE5BTjsKK30KKworaW5s
aW5lIGRvdWJsZSBTdG9wd2F0Y2g6OmVsYXBzZWRUaW1lKCkKK3sKKyAgICBib29sIHNob3VsZFN1
c3BlbmQgPSAhaXNuYW4obV9sYXN0U3RhcnRUaW1lKTsKKyAgICBpZiAoc2hvdWxkU3VzcGVuZCkK
KyAgICAgICAgc3RvcCgpOworCisgICAgZG91YmxlIGVsYXBzZWRUaW1lID0gbV9lbGFwc2VkVGlt
ZTsKKworICAgIGlmIChzaG91bGRTdXNwZW5kKQorICAgICAgICBzdGFydCgpOworICAgIHJldHVy
biBlbGFwc2VkVGltZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6U3Rv
cHdhdGNoOworCisjZW5kaWYgLy8gU3RvcHdhdGNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGM1M2U3YzU2NDJjNzI2YzFiMjZhMWRj
ODUwMGY1ZTI3Mzk0YjhjODkuLjBjYTdkMGQ1NjE1ZGJjMTIzNDQwOGJkMzBkMTVjN2ZjNWE0MTQy
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cApAQCAtNTcsNyArNTcsNiBAQAogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVk
ZSAiV2ViS2l0TmFtZWRGbG93LmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggZmMz
YmMyN2QxOTQ1ZjBhYjY4MmVkYWVkYzkzNzA5ZmI0NTUxYjE5Ni4uMzdiYWJiMGQ4MjkxZjRmNjU1
ODNkZDFhNmIxMTJiOTdiODU5ZDI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJJbnNw
ZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5oIgog
I2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIK
QEAgLTczLDcgKzc0LDYgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxp
dGllcy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNs
dWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtMzYxLDYgKzM2MSwxNiBAQCB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbgogI2VuZGlmCiB9CiAKK2RvdWJsZSBJbnNwZWN0b3JQYWdl
QWdlbnQ6OnRpbWVzdGFtcCgpCit7CisgICAgLy8gSWYgdGhlIHRpbWVsaW5lIGFnZW50IGlzIHJl
Y29yZGluZyBub3csIHVzZSBpdHMgc3RvcHdhdGNoLiBPdGhlcndpc2UsIGp1c3QgcmVwb3J0IDAu
MAorICAgIC8vIHNpbmNlIHRoZSB0aW1lc3RhbXBzIGFyZSBvbmx5IHVzZWQgdG8gYWNjdXJhdGVs
eSBncmFwaCByZWNvcmRzIG9uIHRoZSB0aW1lbGluZS4KKyAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
VGltZWxpbmVBZ2VudCgpKQorICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+dGltZXN0YW1w
KCk7CisKKyAgICByZXR1cm4gMC4wOworfQorCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZW5h
YmxlKEVycm9yU3RyaW5nJikKIHsKICAgICBtX2VuYWJsZWQgPSB0cnVlOwpAQCAtNzUyLDEyICs3
NjIsMTIgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5X
b3JsZChGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3IKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50
Ojpkb21Db250ZW50RXZlbnRGaXJlZCgpCiB7CiAgICAgbV9pc0ZpcnN0TGF5b3V0QWZ0ZXJPbkxv
YWQgPSB0cnVlOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kb21Db250ZW50RXZlbnRGaXJl
ZChjdXJyZW50VGltZSgpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZG9tQ29udGVudEV2
ZW50RmlyZWQodGltZXN0YW1wKCkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bG9h
ZEV2ZW50RmlyZWQoKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sb2FkRXZlbnRGaXJl
ZChjdXJyZW50VGltZSgpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9hZEV2ZW50Rmly
ZWQodGltZXN0YW1wKCkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVOYXZp
Z2F0ZWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCAxOGRjYzNmYTE5MGE3NWEyZDhjNTU1NWQzNDAz
NWRmMThjMWI5MjhkLi4wNjYzN2UyZDU1MDUwYWIyZGUzNTdmN2M0YWRhMjcxZWQ2NWE2OWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC0x
NjcsNiArMTY3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVRvdWNoRXZlbnRFbXVsYXRp
b25JblBhZ2UoYm9vbCk7CiAjZW5kaWYKIAorICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKKwogICAg
IHN0YXRpYyBib29sIG1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqLCBib29sIHdpdGhCYXNlNjRF
bmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25z
dCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXgg
NjFiYmQ4ZjE0ODEyMmRhOGU0MzJmZThhMWFiZmJkNTgzYjNjZjhkOC4uOGJiNTgxMGI0OGJiNmY4
MDBmMTVmY2I2NDZiZTdjMWU5ZjMzNjg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2lu
Y2x1ZGUgIkljb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIK
ICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmgiCkBAIC02OSw3ICs3MCw2IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNp
bmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgotI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTI3Niw2ICsyNzYsMTYgQEAgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6fkluc3BlY3RvclJlc291cmNlQWdlbnQoKQogICAgIEFTU0VSVCghbV9pbnN0
cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpOwogfQogCitkb3VibGUg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6dGltZXN0YW1wKCkKK3sKKyAgICAvLyBJZiB0aGUgdGlt
ZWxpbmUgYWdlbnQgaXMgcmVjb3JkaW5nIG5vdywgdXNlIGl0cyBzdG9wd2F0Y2guIE90aGVyd2lz
ZSwganVzdCByZXBvcnQgMC4wCisgICAgLy8gc2luY2UgdGhlIHRpbWVzdGFtcHMgYXJlIG9ubHkg
dXNlZCB0byBhY2N1cmF0ZWx5IGdyYXBoIHJlY29yZHMgb24gdGhlIHRpbWVsaW5lLgorICAgIGlm
IChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgICAgIHJldHVybiB0aW1lbGlu
ZUFnZW50LT50aW1lc3RhbXAoKTsKKworICAgIHJldHVybiAwLjA7Cit9CisKIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIGlmIChyZXF1ZXN0
LmhpZGRlbkZyb21JbnNwZWN0b3IoKSkgewpAQCAtMzIwLDcgKzMzMCw3IEBAIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lbnRMCiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6UmVzb3VyY2VUeXBl
IHJlc291cmNlVHlwZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSnNvbih0eXBl
KTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+
IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/
IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHIpOwotICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFt
ZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCBsb2Fk
ZXItPnVybCgpLnN0cmluZygpLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChyZXF1ZXN0
KSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvclJlc291cmNl
UmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSwgbG9hZGVyKSwgdHlwZSAhPSBJbnNwZWN0b3JQYWdl
QWdlbnQ6Ok90aGVyUmVzb3VyY2UgPyAmcmVzb3VyY2VUeXBlIDogbnVsbHB0cik7CisgICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdl
bnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRl
ciksIGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0
KHJlcXVlc3QpLCB0aW1lc3RhbXAoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvclJl
c291cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSwgbG9hZGVyKSwgdHlwZSAhPSBJbnNwZWN0
b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgPyAmcmVzb3VyY2VUeXBlIDogbnVsbHB0cik7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6bWFya1Jlc291cmNlQXNDYWNoZWQodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKQpAQCAtMzY1LDcgKzM3NSw3IEBAIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5yZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJ
ZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgcmVzcG9uc2UpOwogICAg
IG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VUeXBlKHJlcXVlc3RJZCwgdHlwZSk7CiAKLSAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIG1fcGFn
ZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChs
b2FkZXIpLCBjdXJyZW50VGltZSgpLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpz
b24odHlwZSksIHJlc291cmNlUmVzcG9uc2UpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5y
ZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5m
cmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciksIHRpbWVzdGFtcCgpLCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlVHlwZUpzb24odHlwZSksIHJlc291cmNlUmVzcG9uc2Up
OwogCiAgICAgLy8gSWYgd2UgcmV2YWxpZGF0ZWQgdGhlIHJlc291cmNlIGFuZCBnb3QgTm90IG1v
ZGlmaWVkLCBzZW5kIGNvbnRlbnQgbGVuZ3RoIGZvbGxvd2luZyBkaWRSZWNlaXZlUmVzcG9uc2UK
ICAgICAvLyBhcyB0aGVyZSB3aWxsIGJlIG5vIGNhbGxzIHRvIGRpZFJlY2VpdmVEYXRhIGZyb20g
dGhlIG5ldHdvcmsgc3RhY2suCkBAIC0zOTEsNyArNDAxLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IGNoYXIKICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEo
cmVxdWVzdElkLCBkYXRhLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+ZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwgY3VycmVudFRpbWUoKSwgZGF0YUxlbmd0
aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kYXRhUmVj
ZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAoKSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5n
dGgpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBkb3VibGUg
ZmluaXNoVGltZSkKQEAgLTQxMSw3ICs0MjEsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudAog
ICAgIC8vIEhvd2V2ZXIsIGFsbCBvdGhlciB0aW1lcyBwYXNzZWQgdG8gdGhlIEluc3BlY3RvciBh
cmUgZ2VuZXJhdGVkIGZyb20gdGhlIHdlYiBwcm9jZXNzLiBNaXhpbmcKICAgICAvLyB0aW1lcyBm
cm9tIGRpZmZlcmVudCBwcm9jZXNzZXMgY2FuIGNhdXNlIHRoZSBmaW5pc2ggdGltZSB0byBiZSBl
YXJsaWVyIHRoYW4gdGhlIHJlc3BvbnNlCiAgICAgLy8gcmVjZWl2ZWQgdGltZSBkdWUgdG8gaW50
ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIGxhZy4KLSAgICBmaW5pc2hUaW1lID0gY3VycmVudFRp
bWUoKTsKKyAgICBmaW5pc2hUaW1lID0gdGltZXN0YW1wKCk7CiAKICAgICBTdHJpbmcgc291cmNl
TWFwcGluZ1VSTDsKICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0
KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRhdGEocmVxdWVzdElkKTsKQEAgLTQz
Nyw3ICs0NDcsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxMb2FkaW5n
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMbwogICAgIH0KIAogICAgIGJvb2wg
Y2FuY2VsZWQgPSBlcnJvci5pc0NhbmNlbGxhdGlvbigpOwotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5sb2FkaW5nRmFpbGVkKHJlcXVlc3RJZCwgY3VycmVudFRpbWUoKSwgZXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24oKSwgY2FuY2VsZWQgPyAmY2FuY2VsZWQgOiBudWxscHRyKTsKKyAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9hZGluZ0ZhaWxlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCgp
LCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLCBjYW5jZWxlZCA/ICZjYW5jZWxlZCA6IG51
bGxwdHIpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJj
ZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciogbG9hZGVyLCBDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UpCkBAIC00NTUsNyArNDY1LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWQKIAog
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRp
YXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRl
ci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHIpOwogCi0gICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPnJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBs
b2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9y
T2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKHJlc291cmNlLCBsb2FkZXIpKTsK
KyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNoZShy
ZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCB0aW1l
c3RhbXAoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKHJl
c291cmNlLCBsb2FkZXIpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRJ
bml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlU3RyaW5nKQpAQCAtNTg3LDcgKzU5Nyw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcg
aWRlCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OldlYlNvY2tl
dFJlcXVlc3Q+IHJlcXVlc3RPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpX
ZWJTb2NrZXRSZXF1ZXN0OjpjcmVhdGUoKQogICAgICAgICAuc2V0SGVhZGVycyhidWlsZE9iamVj
dEZvckhlYWRlcnMocmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkpKTsKLSAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KElkZW50aWZpZXJz
RmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCByZXF1ZXN0T2Jq
ZWN0KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hh
a2VSZXF1ZXN0KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1l
c3RhbXAoKSwgcmVxdWVzdE9iamVjdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC01OTYsMTIgKzYw
NiwxMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZSh1bnNpZ25lZCBsb25nCiAgICAgICAgIC5zZXRTdGF0dXMocmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSkKICAgICAgICAgLnNldFN0YXR1c1RleHQocmVzcG9uc2UuaHR0
cFN0YXR1c1RleHQoKSkKICAgICAgICAgLnNldEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJz
KHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT53ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZVJlY2VpdmVkKElkZW50aWZpZXJzRmFjdG9yeTo6
cmVxdWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCByZXNwb25zZU9iamVjdCk7Cisg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlUmVjZWl2
ZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFtcCgp
LCByZXNwb25zZU9iamVjdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlk
Q2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewotICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT53ZWJTb2NrZXRDbG9zZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0
SWQoaWRlbnRpZmllciksIGN1cnJlbnRUaW1lKCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT53ZWJTb2NrZXRDbG9zZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmll
ciksIHRpbWVzdGFtcCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRS
ZWNlaXZlV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJT
b2NrZXRGcmFtZSYgZnJhbWUpCkBAIC02MTAsNyArNjIwLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLAogICAgICAgICAuc2V0T3Bjb2RlKGZyYW1lLm9wQ29kZSkKICAgICAgICAgLnNldE1hc2so
ZnJhbWUubWFza2VkKQogICAgICAgICAuc2V0UGF5bG9hZERhdGEoU3RyaW5nKGZyYW1lLnBheWxv
YWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2Vi
U29ja2V0RnJhbWVSZWNlaXZlZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlm
aWVyKSwgY3VycmVudFRpbWUoKSwgZnJhbWVPYmplY3QpOworICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT53ZWJTb2NrZXRGcmFtZVJlY2VpdmVkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElk
KGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgZnJhbWVPYmplY3QpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZFNlbmRXZWJTb2NrZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKQEAgLTYxOSwxMiArNjI5LDEy
IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkU2VuZFdlYlNvY2tldEZyYW1lKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uCiAgICAgICAgIC5zZXRPcGNvZGUoZnJhbWUub3BD
b2RlKQogICAgICAgICAuc2V0TWFzayhmcmFtZS5tYXNrZWQpCiAgICAgICAgIC5zZXRQYXlsb2Fk
RGF0YShTdHJpbmcoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkpOwotICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRGcmFtZVNlbnQoSWRlbnRpZmllcnNGYWN0b3J5
OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIGN1cnJlbnRUaW1lKCksIGZyYW1lT2JqZWN0KTsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0RnJhbWVTZW50KElkZW50aWZpZXJzRmFj
dG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgZnJhbWVPYmplY3QpOwog
fQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFt
ZUVycm9yKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEZyYW1lRXJyb3IoSWRl
bnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIGN1cnJlbnRUaW1lKCksIGVy
cm9yTWVzc2FnZSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEZyYW1lRXJy
b3IoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFtcCgp
LCBlcnJvck1lc3NhZ2UpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5k
ZXggMjgzOTIwZGZlNTYzMDc5MjFkNDY3NDllNjEzNDAzMDRjY2Y1YzZjMi4uYjk2NDRhZmM4MGRj
ZWE3ZmE4MzA4MTIyYzBmYWExMDNhOTliNzQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC0xMzgsNiArMTM4LDggQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICB2b2lkIGVuYWJsZSgpOwogCisgICAgZG91YmxlIHRpbWVzdGFt
cCgpOworCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0
b3JDbGllbnQqIG1fY2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CmluZGV4IGE4NmNhODk5MDQ3OWQzZTY1ZGY3ZmIwNTI1NGQwY2QyNmM2MmNiOGQuLjViMTNkMmRj
NDJhNmQ0MTI1ZTUzMTFmOTg4Y2VhYzU2NTFiYmVhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTYxLDExICs2MSw2
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dm9pZCBUaW1lbGluZVRpbWVDb252ZXJ0ZXI6OnJlc2V0KCkKLXsKLSAgICBtX3N0YXJ0T2Zmc2V0
ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBjdXJyZW50VGltZSgpOwotfQotCiBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpCiB7CiB9CkBA
IC0xMTgsNyArMTEzLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0
YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAgICAgZWxzZQogICAgICAgICBtX21h
eENhbGxTdGFja0RlcHRoID0gNTsKIAotICAgIG1fdGltZUNvbnZlcnRlci5yZXNldCgpOworICAg
IG1fc3RvcHdhdGNoLT5zdGFydCgpOwogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMpOwogCkBAIC0xMzYsNiArMTMxLDggQEAgdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0b3AoKQogICAgIGlmICghbV9lbmFibGVk
KQogICAgICAgICByZXR1cm47CiAKKyAgICBtX3N0b3B3YXRjaC0+c3RvcCgpOworCiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KG51bGxwdHIpOwog
CiAgICAgaWYgKG1fc2NyaXB0RGVidWdTZXJ2ZXIpCkBAIC0xNTcsOSArMTU0LDkgQEAgdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRQYWdlU2NyaXB0RGVidWdTZXJ2ZXIoUGFnZVNjcmlw
dERlYnVnU2VydmVyKiBzY3IKICAgICBtX3NjcmlwdERlYnVnU2VydmVyID0gc2NyaXB0RGVidWdT
ZXJ2ZXI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFydFByb2ZpbGluZyhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzdGFy
dFByb2ZpbGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFz
c1JlZlB0cjxTdG9wd2F0Y2g+IHN0b3B3YXRjaCkKIHsKLSAgICBKU0M6OkxlZ2FjeVByb2ZpbGVy
Ojpwcm9maWxlcigpLT5zdGFydFByb2ZpbGluZyhleGVjLCB0aXRsZSk7CisgICAgSlNDOjpMZWdh
Y3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmcoZXhlYywgdGl0bGUsIHN0b3B3
YXRjaCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IHN0b3BQ
cm9maWxpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCkBAIC0x
NjcsOSArMTY0LDkgQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEpTQzo6UHJvZmlsZT4gc3Rv
cFByb2ZpbGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QKICAgICByZXR1cm4gSlNDOjpM
ZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RvcFByb2ZpbGluZyhleGVjLCB0aXRsZSk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFydFByb2ZpbGluZyhGcmFtZSogZnJhbWUsIGNvbnN0
IFN0cmluZyYgdGl0bGUpCitzdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRQcm9maWxpbmcoRnJhbWUq
IGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFN0b3B3YXRjaD4gc3RvcHdh
dGNoKQogewotICAgIHN0YXJ0UHJvZmlsaW5nKHRvSlNET01XaW5kb3coZnJhbWUsIGRlYnVnZ2Vy
V29ybGQoKSktPmdsb2JhbEV4ZWMoKSwgdGl0bGUpOworICAgIHN0YXJ0UHJvZmlsaW5nKHRvSlNE
T01XaW5kb3coZnJhbWUsIGRlYnVnZ2VyV29ybGQoKSktPmdsb2JhbEV4ZWMoKSwgdGl0bGUsIHN0
b3B3YXRjaCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IHN0
b3BQcm9maWxpbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlKQpAQCAtMTkzLDcg
KzE5MCwxMSBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZwogICAgIGlmICghbV9lbmFibGVkICYm
IG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5pc0VtcHR5KCkpCiAgICAgICAgIGludGVy
bmFsU3RhcnQoKTsKIAotICAgIHN0YXJ0UHJvZmlsaW5nKGV4ZWMsIHRpdGxlKTsKKyAgICAvLyBV
c2UgYW4gaW5kZXBlbmRlbnQgc3RvcHdhdGNoIGZvciBjb25zb2xlLWluaXRpYXRlZCBwcm9maWxp
bmcsIHNpbmNlIHRoZSB1c2VyIHdpbGwgZXhwZWN0IGl0CisgICAgLy8gdG8gYmUgcmVsYXRpdmUg
dG8gd2hlbiB0aGVpciBjb21tYW5kIHdhcyBpc3N1ZWQuCisgICAgUmVmUHRyPFN0b3B3YXRjaD4g
cHJvZmlsZXJTdG9wd2F0Y2ggPSBTdG9wd2F0Y2g6OmNyZWF0ZSgpOworICAgIHByb2ZpbGVyU3Rv
cHdhdGNoLT5zdGFydCgpOworICAgIHN0YXJ0UHJvZmlsaW5nKGV4ZWMsIHRpdGxlLCBwcm9maWxl
clN0b3B3YXRjaC5yZWxlYXNlKCkpOwogCiAgICAgbV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNv
cmRzLmFwcGVuZChjcmVhdGVSZWNvcmRFbnRyeShUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0
ZUNvbnNvbGVQcm9maWxlRGF0YSh0aXRsZSksIFRpbWVsaW5lUmVjb3JkVHlwZTo6Q29uc29sZVBy
b2ZpbGUsIHRydWUsIGZyYW1lRnJvbUV4ZWNTdGF0ZShleGVjKSkpOwogfQpAQCAtMjMyLDcgKzIz
Myw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbENhbGxGdW5jdGlvbihjb25z
dCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpCiAgICAgcHVzaEN1cnJlbnRSZWNvcmQoVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVGdW5jdGlvbkNhbGxEYXRhKHNjcmlwdE5hbWUsIHNj
cmlwdExpbmUpLCBUaW1lbGluZVJlY29yZFR5cGU6OkZ1bmN0aW9uQ2FsbCwgdHJ1ZSwgZnJhbWUp
OwogCiAgICAgaWYgKGZyYW1lICYmICFtX2NhbGxTdGFja0RlcHRoKQotICAgICAgICBzdGFydFBy
b2ZpbGluZyhmcmFtZSwgQVNDSUlMaXRlcmFsKCJUaW1lbGluZSBGdW5jdGlvbkNhbGwiKSk7Cisg
ICAgICAgIHN0YXJ0UHJvZmlsaW5nKGZyYW1lLCBBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIEZ1bmN0
aW9uQ2FsbCIpLCBtX3N0b3B3YXRjaCk7CiAKICAgICArK21fY2FsbFN0YWNrRGVwdGg7CiB9CkBA
IC00MDcsNyArNDA4LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRXZhbHVh
dGVTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmUKIAogICAgIGlmIChmcmFt
ZSAmJiAhbV9jYWxsU3RhY2tEZXB0aCkgewogICAgICAgICArK21fY2FsbFN0YWNrRGVwdGg7Ci0g
ICAgICAgIHN0YXJ0UHJvZmlsaW5nKGZyYW1lLCBBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIEV2YWx1
YXRlU2NyaXB0IikpOworICAgICAgICBzdGFydFByb2ZpbGluZyhmcmFtZSwgQVNDSUlMaXRlcmFs
KCJUaW1lbGluZSBFdmFsdWF0ZVNjcmlwdCIpLCBtX3N0b3B3YXRjaCk7CiAgICAgfQogfQogCkBA
IC01NTQsNiArNTU1LDE2IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YnJlYWtwb2lu
dEFjdGlvblByb2JlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJCiAgICAgYXBwZW5kUmVj
b3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGFjdGlvbiwg
aGl0Q291bnQpLCBUaW1lbGluZVJlY29yZFR5cGU6OlByb2JlU2FtcGxlLCBmYWxzZSwgZnJhbWVG
cm9tRXhlY1N0YXRlKGV4ZWMpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpk
aWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKQoreworICAgIG1fc3RvcHdhdGNoLT5zdG9w
KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29udGludWUoKQorewor
ICAgIG1fc3RvcHdhdGNoLT5zdGFydCgpOworfQorCiBzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6VGltZWxpbmU6OkV2ZW50VHlwZSB0b1Byb3RvY29sKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBl
KQogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtNjkwLDYgKzcwMSw3IEBAIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJUaW1l
bGluZSIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50
KQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihudWxscHRyKQorICAgICwgbV9zdG9wd2F0Y2go
U3RvcHdhdGNoOjpjcmVhdGUoKSkKICAgICAsIG1faWQoMSkKICAgICAsIG1fY2FsbFN0YWNrRGVw
dGgoMCkKICAgICAsIG1fbWF4Q2FsbFN0YWNrRGVwdGgoNSkKQEAgLTc0OCw3ICs3NjAsNyBAQCB2
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmxvY2FsVG9QYWdlUXVhZChjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyLCBjb25zdAogCiBkb3VibGUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
dGltZXN0YW1wKCkKIHsKLSAgICByZXR1cm4gbV90aW1lQ29udmVydGVyLmZyb21Nb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOworICAgIHJl
dHVybiBtX3N0b3B3YXRjaC0+ZWxhcHNlZFRpbWUoKTsKIH0KIAogUGFnZSogSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6cGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCBhNGNiNGM0ZTJlZjIzZWNkMzdkMGVmMDRkYzE1M2E5
ODZjNjVmNGJlLi43NGI3ZWI1NDdjNzJiN2FmMmQwZWU3MjQ0NTEwMWIxNzNiMjg2MjdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgK
QEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHREZWJ1
Z0xpc3RlbmVyLmg+CisjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC0xMTMsMTkgKzExNCw2IEBA
IGVudW0gY2xhc3MgVGltZWxpbmVSZWNvcmRUeXBlIHsKICAgICBXZWJTb2NrZXREZXN0cm95CiB9
OwogCi1jbGFzcyBUaW1lbGluZVRpbWVDb252ZXJ0ZXIgewotcHVibGljOgotICAgIFRpbWVsaW5l
VGltZUNvbnZlcnRlcigpCi0gICAgICAgIDogbV9zdGFydE9mZnNldCgwKQotICAgIHsKLSAgICB9
Ci0gICAgZG91YmxlIGZyb21Nb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoZG91YmxlIHRpbWUp
IGNvbnN0ICB7IHJldHVybiAodGltZSAtIG1fc3RhcnRPZmZzZXQpICogMTAwMC4wOyB9Ci0gICAg
dm9pZCByZXNldCgpOwotCi1wcml2YXRlOgotICAgIGRvdWJsZSBtX3N0YXJ0T2Zmc2V0OwotfTsK
LQogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudAogICAgIDogcHVibGljIEluc3BlY3RvckFn
ZW50QmFzZQogICAgICwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGltZWxpbmVCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIKQEAgLTIxMCw2ICsxOTgsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
d2lsbEZpcmVBbmltYXRpb25GcmFtZShpbnQgY2FsbGJhY2tJZCwgRnJhbWUqKTsKICAgICB2b2lk
IGRpZEZpcmVBbmltYXRpb25GcmFtZSgpOwogCisgICAgLy8gUmV0dXJucyB0aGUgZWxhcHNlZCB0
aW1lIGZyb20gYSBtb25vdG9uaWMgc3RvcHdhdGNoIHRoYXQgc3RhcnRzIHdpdGggdGltZWxpbmUg
cmVjb3JkaW5nIGFuZAorICAgIC8vIHBhdXNlcyB3aGVuIHRoZSBkZWJ1Z2dlciBwYXVzZXMgb3Ig
ZXhlY3V0aW9uIGlzIG90aGVyd2lzZSBzdXNwZW5kZWQuCisgICAgZG91YmxlIHRpbWVzdGFtcCgp
OworCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCwgRnJhbWUqKTsKICAgICB2b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIEZyYW1lKik7CkBAIC0yMTgsMTEgKzIxMCwxMSBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIC8vIFNjcmlwdERlYnVnTGlzdGVu
ZXIuIFRoaXMgaXMgb25seSB1c2VkIHRvIGNyZWF0ZSByZWNvcmRzIGZvciBwcm9iZSBzYW1wbGVz
LgorICAgIC8vIFNjcmlwdERlYnVnTGlzdGVuZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VT
b3VyY2UoSlNDOjpTb3VyY2VJRCwgY29uc3QgU2NyaXB0Jikgb3ZlcnJpZGUgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgaW50LCBpbnQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29udGludWUoKSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UGF1c2UoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRpZENvbnRpbnVlKCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFj
dGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uU291bmQoaW50KSBvdmVycmlkZSB7IH0KQEAg
LTI2NCwxNyArMjU2LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclJlY29yZFN0YWNrKCk7
CiAKICAgICB2b2lkIGxvY2FsVG9QYWdlUXVhZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBM
YXlvdXRSZWN0JiwgRmxvYXRRdWFkKik7Ci0gICAgY29uc3QgVGltZWxpbmVUaW1lQ29udmVydGVy
JiB0aW1lQ29udmVydGVyKCkgY29uc3QgeyByZXR1cm4gbV90aW1lQ29udmVydGVyOyB9Ci0gICAg
ZG91YmxlIHRpbWVzdGFtcCgpOwogICAgIFBhZ2UqIHBhZ2UoKTsKIAogICAgIEluc3BlY3RvclBh
Z2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyKiBtX3Njcmlw
dERlYnVnU2VydmVyOwotICAgIFRpbWVsaW5lVGltZUNvbnZlcnRlciBtX3RpbWVDb252ZXJ0ZXI7
CisKKyAgICBSZWZQdHI8U3RvcHdhdGNoPiBtX3N0b3B3YXRjaDsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvclRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zy
b250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JUaW1lbGlu
ZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAgIGRvdWJsZSBtX3Rp
bWVzdGFtcE9mZnNldDsKIAogICAgIFZlY3RvcjxUaW1lbGluZVJlY29yZEVudHJ5PiBtX3JlY29y
ZFN0YWNrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVS
ZWNvcmRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29y
ZEZhY3RvcnkuY3BwCmluZGV4IDNmZWM0MDBhYjEyMjQyNThkNzg4ZDI5ZDNlNjViOTVjMTZiYzIz
MGMuLjE2Y2IzODhkZjI4N2FmNDRhYTAwY2YzZGQ2ODczNzk4ZTYwOTMwZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCkBAIC00
Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8cHJv
ZmlsZXIvUHJvZmlsZS5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMK
aW5kZXggOTAyMTJlMTQyNTY4Y2I2YjNiYWE0MTliMWJmNzAzYWM4NWRlZTg4Ni4uZGJkOWE1ODhi
YmIxOWRkNzk1NTkyMmU1MjgwMTkzZGM1MzcwYTIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVs
aW5lTWFuYWdlci5qcwpAQCAtMzUsNiArMzUsOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5h
Z2VyID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2FjdGl2ZVJlY29yZGluZyA9IG51bGw7CiAgICAg
dGhpcy5faXNDYXB0dXJpbmcgPSBmYWxzZTsKIAorICAgIC8vIEZvciBsZWdhY3kgYmFja2VuZHMs
IHdlIGNvbXB1dGUgdGhlIGVsYXBzZWQgdGltZSBvZiByZWNvcmRzIHJlbGF0aXZlIHRvIHRoaXMg
dGltZXN0YW1wLgorICAgIHRoaXMuX2xlZ2FjeUZpcnN0UmVjb3JkVGltZXN0YW1wID0gTmFOOwog
ICAgIHRoaXMuX25leHRSZWNvcmRpbmdJZGVudGlmaWVyID0gMTsKIAogICAgIHRoaXMuX2JvdW5k
U3RvcENhcHR1cmluZyA9IHRoaXMuc3RvcENhcHR1cmluZy5iaW5kKHRoaXMpOwpAQCAtNTUsNiAr
NTcsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50ID0gewogICAgIENhcHR1
cmluZ1N0b3BwZWQ6ICJ0aW1lbGluZS1tYW5hZ2VyLWNhcHR1cmluZy1zdG9wcGVkIgogfTsKIAor
V2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5TdGFydFRpbWVUaHJlc2hvbGRGb3JMZWdhY3lS
ZWNvcmRDb252ZXJzaW9uID0gMjg4MDAwMDA7IC8vIERhdGUucGFyc2UoIkphbiAxLCAxOTcwIikK
IFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuTWF4aW11bUF1dG9SZWNvcmREdXJhdGlvbiA9
IDkwMDAwOyAvLyA5MCBzZWNvbmRzCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLk1heGlt
dW1BdXRvUmVjb3JkRHVyYXRpb25BZnRlckxvYWRFdmVudCA9IDEwMDAwOyAvLyAxMCBzZWNvbmRz
CiBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkRlYWRUaW1lUmVxdWlyZWRUb1N0b3BBdXRv
UmVjb3JkaW5nRWFybHkgPSAyMDAwOyAvLyAyIHNlY29uZHMKQEAgLTE2Myw5ICsxNjYsMjAgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVu
Y3Rpb24gcHJvY2Vzc1JlY29yZChyZWNvcmRQYXlsb2FkLCBwYXJlbnRSZWNvcmRQYXlsb2FkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXBzIHRvIHNlY29u
ZHMgdG8gbWF0Y2ggdGhlIHJlc291cmNlIHRpbWVzdGFtcHMuCi0gICAgICAgICAgICB2YXIgc3Rh
cnRUaW1lID0gcmVjb3JkUGF5bG9hZC5zdGFydFRpbWUgLyAxMDAwOwotICAgICAgICAgICAgdmFy
IGVuZFRpbWUgPSByZWNvcmRQYXlsb2FkLmVuZFRpbWUgLyAxMDAwOworICAgICAgICAgICAgdmFy
IHN0YXJ0VGltZSA9IHJlY29yZFBheWxvYWQuc3RhcnRUaW1lOworICAgICAgICAgICAgdmFyIGVu
ZFRpbWUgPSByZWNvcmRQYXlsb2FkLmVuZFRpbWU7CisKKyAgICAgICAgICAgIC8vIENPTVBBVElC
SUxJVFkgKGlPUzgpOiBvbGQgdmVyc2lvbnMgdXNlIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgZXBv
Y2gsIHJhdGhlcgorICAgICAgICAgICAgLy8gdGhhbiBzZWNvbmRzIGVsYXBzZWQgc2luY2UgdGlt
ZWxpbmUgY2FwdHVyaW5nIHN0YXJ0ZWQuIFdlIGFwcHJveGltYXRlIHRoZSBsYXR0ZXIgYnkKKyAg
ICAgICAgICAgIC8vIHN1YnRyYWN0aW5nIHRoZSBzdGFydCB0aW1lc3RhbXAsIGFzIG9sZCB2ZXJz
aW9ucyBkaWQgbm90IHVzZSBtb25vdG9uaWMgdGltZXMuCisgICAgICAgICAgICBpZiAoaXNOYU4o
dGhpcy5fbGVnYWN5Rmlyc3RSZWNvcmRUaW1lc3RhbXApKQorICAgICAgICAgICAgICAgIHRoaXMu
X2xlZ2FjeUZpcnN0UmVjb3JkVGltZXN0YW1wID0gcmVjb3JkUGF5bG9hZC5zdGFydFRpbWU7CisK
KyAgICAgICAgICAgIC8vIElmIHRoZSByZWNvcmQncyBzdGFydCB0aW1lIHNlbXMgdW5yZWFzb25h
Ymx5IGxhcmdlLCB0cmVhdCBpdCBhcyBhIGxlZ2FjeSB0aW1lc3RhbXAuCisgICAgICAgICAgICBp
ZiAoc3RhcnRUaW1lID4gV2ViSW5zcGVjdG9yLlN0YXJ0VGltZVRocmVzaG9sZEZvckxlZ2FjeVJl
Y29yZENvbnZlcnNpb24pIHsKKyAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSAoc3RhcnRUaW1l
IC0gdGhpcy5fbGVnYWN5Rmlyc3RSZWNvcmRUaW1lc3RhbXApIC8gMTAwMDsKKyAgICAgICAgICAg
ICAgICBlbmRUaW1lID0gaXNOYU4oZW5kVGltZSkgPyBOYU4gOiAoc3RhcnRUaW1lIC0gdGhpcy5f
bGVnYWN5Rmlyc3RSZWNvcmRUaW1lc3RhbXApIC8gMTAwMDsKKyAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgdmFyIGNhbGxGcmFtZXMgPSB0aGlzLl9jYWxsRnJhbWVzRnJvbVBheWxvYWQocmVj
b3JkUGF5bG9hZC5zdGFja1RyYWNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lQ29udGVudFZpZXcuanMK
aW5kZXggYmU0YTRlN2E4ODQxMmJjNDA3MzM4ZTUxOWIwNWJmYzkyNWI0ZTIwZC4uYTIwM2YyZTMx
ZmIzOTljZWI3ZWQwOTRhMDlmM2IzNWVjMGM5ZjAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVDb250ZW50Vmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZUNvbnRl
bnRWaWV3LmpzCkBAIC05OCw2ICs5OCw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRW
aWV3ID0gZnVuY3Rpb24ocmVjb3JkaW5nKQogICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNh
cHR1cmluZ1N0YXJ0ZWQsIHRoaXMuX2NhcHR1cmluZ1N0YXJ0ZWQsIHRoaXMpOwogICAgIFdlYklu
c3BlY3Rvci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0b3BwZWQsIHRoaXMuX2NhcHR1cmluZ1N0b3Bw
ZWQsIHRoaXMpOwogCisgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCB0aGlzLl9k
ZWJ1Z2dlclBhdXNlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1l
ZCwgdGhpcy5fZGVidWdnZXJSZXN1bWVkLCB0aGlzKTsKKwogICAgIHRoaXMuc2hvd092ZXJ2aWV3
VGltZWxpbmVWaWV3KCk7CiB9OwogCkBAIC00MDcsNiArNDEwLDIyIEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc3RvcFVwZGF0
aW5nQ3VycmVudFRpbWUoKTsKICAgICB9LAogCisgICAgX2RlYnVnZ2VyUGF1c2VkOiBmdW5jdGlv
bihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5z
ZXNzaW9uU3RhdGUgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25TdGF0ZS5S
ZXBsYXlpbmcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fc3RvcFVwZGF0
aW5nQ3VycmVudFRpbWUoKTsKKyAgICB9LAorCisgICAgX2RlYnVnZ2VyUmVzdW1lZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIu
c2Vzc2lvblN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUu
UmVwbGF5aW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3N0YXJ0VXBk
YXRpbmdDdXJyZW50VGltZSgpOworICAgIH0sCisKICAgICBfcmVjb3JkaW5nVGltZXNVcGRhdGVk
OiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fd2FpdGluZ1RvUmVz
ZXRDdXJyZW50VGltZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239660</attachid>
            <date>2014-10-10 17:00:11 -0700</date>
            <delta_ts>2014-10-18 17:34:15 -0700</delta_ts>
            <desc>Revised approach</desc>
            <filename>bug-136351-20141010165902.patch</filename>
            <type>text/plain</type>
            <size>87827</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZWUyMDEyZDUxM2Y5MWJlZmM0YTdjYmNiZjI0MGRmMGJlNjcwOWI3Li5mNWVjOGVmY2E4YWE5NWZi
ZDYzZjUwMTM5YmEyMWMwNDg1ZjMzYTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxNC0xMC0xMCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291
bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBOb3cgdGhhdCB3ZSBoYXZlIGEg
c3RvcHdhdGNoIHRvIHByb3ZpZGUgcGF1c2UtYXdhcmUgdGltaW5nIGRhdGEsIHdlIGNhbiByZW1v
dmUgdGhlCisgICAgICAgIHByb2ZpbGVyJ3MgaGFuZGxpbmcgb2YgZGVidWdnZXIgcGF1c2UvY29u
dGludWUgY2FsbGJhY2tzLiBUaGUgZGVidWdnZXIgYWdlbnQgYWNjb3VudHMKKyAgICAgICAgZm9y
IHN1c3BlbmRlZCBleGVjdXRpb24gYnkgcGF1c2luZyBhbmQgcmVzdW1pbmcgdGhlIHN0b3B3YXRj
aC4KKworICAgICAgICAqIEFQSS9KU1Byb2ZpbGVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChKU1N0
YXJ0UHJvZmlsaW5nKTogVXNlIGEgZnJlc2ggc3RvcHdhdGNoIHdoZW4gcHJvZmlsaW5nIGZyb20g
dGhlIEpTQyBBUEkuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpleGVjdXRpb25TdG9wd2F0Y2gp
OgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAo
SW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlUGF1c2UpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ29udGludWUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAg
ICAgICAqIHByb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGVnYWN5
UHJvZmlsZXI6OnByb2ZpbGVyKTogVXNlIG51bGxwdHIuCisgICAgICAgIChKU0M6OkxlZ2FjeVBy
b2ZpbGVyOjpzdGFydFByb2ZpbGluZyk6IEhhbmQgb2ZmIGEgc3RvcHdhdGNoIHRvIHRoZSBwcm9m
aWxlIGdlbmVyYXRvci4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OnN0b3BQcm9maWxp
bmcpOiBVc2UgbnVsbHB0ci4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OmRpZFBhdXNl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OmRpZENvbnRpbnVlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwcm9maWxlci9MZWdhY3lQcm9maWxlci5oOgorICAgICAgICAq
IHByb2ZpbGVyL1Byb2ZpbGUuY3BwOiBUaGUgcm9vdCBub2RlIHNob3VsZCBhbHdheXMgaGF2ZSBh
IHN0YXJ0IHRpbWUgb2YgMC4wLgorICAgICAgICAoSlNDOjpQcm9maWxlOjpQcm9maWxlKToKKyAg
ICAgICAgKiBwcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNwcDogUmVtb3ZlIGRlYnVnZ2VyIHBh
dXNlL2NvbnRpbnVlIGNhbGxiYWNrcyBhbmQgdGhlCisgICAgICAgIHRpbWVzdGFtcCBtZW1iZXIg
dGhhdCB3YXMgdXNlZCB0byB0cmFjayB0aW1lIGVsYXBzZWQgYnkgdGhlIGRlYnVnZ2VyLiBKdXN0
IHVzZSB0aGUKKyAgICAgICAgc3RvcHdhdGNoJ3MgZWxhcHNlZCB0aW1lcyB0byBnZW5lcmF0ZSBz
dGFydC9lbGFwc2VkIHRpbWVzIGZvciBmdW5jdGlvbiBjYWxscy4KKworICAgICAgICAoSlNDOjpQ
cm9maWxlR2VuZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQcm9maWxlR2VuZXJhdG9y
OjpQcm9maWxlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6QWRkUGFyZW50Rm9yQ29uc29sZVN0
YXJ0RnVuY3Rvcjo6b3BlcmF0b3IoKSk6IFRoZSBwYXJlbnQgbm9kZSBvZiB8Y29uc29sZS5wcm9m
aWxlfAorICAgICAgICBzaG91bGQgaGF2ZSBhIHN0YXJ0IHRpbWUgb2YgMC4wLCBzaW5jZSBpdCBy
ZXByZXNlbnRzIHRoZSBzdGFydGluZyBub2RlIG9mIHByb2ZpbGluZy4KKworICAgICAgICAoSlND
OjpQcm9maWxlR2VuZXJhdG9yOjpiZWdpbkNhbGxFbnRyeSk6CisgICAgICAgIChKU0M6OlByb2Zp
bGVHZW5lcmF0b3I6OmVuZENhbGxFbnRyeSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0
b3I6OmRpZFBhdXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UHJvZmlsZUdlbmVyYXRvcjo6
ZGlkQ29udGludWUpOiBEZWxldGVkLgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0
b3IuaDoKKwogMjAxNC0xMC0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3NDYwNi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOTBh
YmIwYmNkOThlNzI2NzhjODU3ZDE0ZjMzMGYwOGM0ZDM2NTE3MC4uZDVhYzJmOWRmYzU0YWY3OGZh
MjdiODg3MGIyMWNiMzgxOTc4ZWU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNC0xMC0xMCAg
QnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBh
dXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hl
ci4KKworICAgICAgICAqIFdURi52Y3hwcm9qL1dURi52Y3hwcm9qOgorICAgICAgICAqIFdURi52
Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0
Zi9TdG9wd2F0Y2guaDogQWRkZWQuIFRoaXMgaW1wbGVtZW50cyBhIHJlZmNvdW50ZWQgbW9ub3Rv
bmljIHN0b3B3YXRjaC4KKyAgICAgICAgKFdURjo6U3RvcHdhdGNoOjpjcmVhdGUpOgorICAgICAg
ICAoV1RGOjpTdG9wd2F0Y2g6OlN0b3B3YXRjaCk6CisgICAgICAgIChXVEY6OlN0b3B3YXRjaDo6
cmVzZXQpOgorICAgICAgICAoV1RGOjpTdG9wd2F0Y2g6OnN0YXJ0KToKKyAgICAgICAgKFdURjo6
U3RvcHdhdGNoOjpzdG9wKToKKyAgICAgICAgKFdURjo6U3RvcHdhdGNoOjplbGFwc2VkVGltZSk6
CisKIDIwMTQtMTAtMDkgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSBFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRmOTg4
OGVmYzZhZTA3MzhiOWEyYjY0ODM3ODg2NTk5MjkzNWE2YmYuLjQzYTg0YjMxMGUxMjViYmY0MGJm
MjJkMzg5ZWYyZTRhODVhZGQxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxNC0x
MC0xMCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291bnQgdGltZSBlbGFwc2VkIHdo
aWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkg
SGF0Y2hlci4KKworICAgICAgICBUbyBhdm9pZCBjb3VudGluZyB0aW1lIGVsYXBzZWQgd2hpbGUg
dGhlIGRlYnVnZ2VyIGlzIHBhdXNlZCwgdGltZWxpbmUgcmVjb3JkcyBzaG91bGQKKyAgICAgICAg
a2VlcCB0cmFjayBvZiB0aW1lIGVsYXBzZWQgc2luY2UgdGhlIHN0YXJ0IG9mIHRpbWVsaW5lIGNh
cHR1cmluZywgcmF0aGVyIHRoYW4gd2FsbCBjbG9jaworICAgICAgICB0aW1lc3RhbXBzLiBXZSBj
YW4gZWFzaWx5IGNvbXB1dGUgZWxhcHNlZCB0aW1lIGJ5IHNoYXJpbmcgYSBTdG9wd2F0Y2ggaW5z
dGFuY2UgdGhyb3VnaCB0aGUKKyAgICAgICAgaW5zcGVjdG9yIGVudmlyb25tZW50LiBUaGUgc3Rv
cHdhdGNoIHJ1bnMgd2l0aCB0aW1lbGluZXMgYW5kIGlzIHBhdXNlZCB3aXRoIHRoZSBkZWJ1Z2dl
ciwKKyAgICAgICAgc28gc3Vic2VxdWVudCB0aW1lIG1lYXN1cmVtZW50cyB3aWxsIG5vdCBpbmNs
dWRlIHRpbWUgZWxhcHNlZCB3aGlsZSB0aGUgZGVidWdnZXIgaXMgcGF1c2VkLgorCisgICAgICAg
IFRoaXMgcmVmYWN0b3JpbmcgaXMgc2FmZSBiZWNhdXNlIHN0YXJ0IGFuZCBlbmQgdGltZXMgYXJl
IG9ubHkgdXNlZCB0byBncmFwaCByZWNvcmRzOyB0aGUKKyAgICAgICAgdGltZXN0YW1wJ3MgYWN0
dWFsIHZhbHVlIGlzIGlycmVsZXZhbnQgYW5kIGlzIG5vdCBkaXNwbGF5ZWQgaW4gdGhlIHVzZXIg
aW50ZXJmYWNlLiBEYXRlCisgICAgICAgIHRpbWVzdGFtcHMgYXJlIHN0aWxsIGluY2x1ZGVkIHdp
dGggbmV0d29yay1yZWxhdGVkIHJlY29yZHMgYXMgcGFydCBvZiB0aGVpciBoZWFkZXIgZGF0YS4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIGJlY2F1c2Ugd2UgY2Fubm90IHJlbGlhYmx5IHRlc3Qg
dGltaW5nIGNoYW5nZXMgaW5kdWNlZCBieSBkZWJ1Z2dlciBwYXVzZXMuCisgICAgICAgIEl0IGlz
IHBvc3NpYmxlIGZvciByZWNvcmRzIHRvIGFjY3J1ZSB0aW1lIGJlZm9yZSB0aGUgZGVidWdnZXIg
cGF1c2VzIG9yIGFmdGVyIGl0IHJlc3VtZXMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwOiBSZW1vdmUgdW5uZWNlc3NhcnkgaW5jbHVkZS4KKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXI6OmV4ZWN1dGlvblN0b3B3YXRjaCk6IEFkZCBhIHNoYXJlZCBz
dG9wd2F0Y2guCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6dGltZXN0YW1wKTogUmVkaXJlY3QgdG8gdGhlIHNoYXJl
ZCBzdG9wd2F0Y2guCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRvbUNv
bnRlbnRFdmVudEZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
bG9hZEV2ZW50RmlyZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp0aW1lc3RhbXApOiBSZWRpcmVj
dCB0byB0aGUgc2hhcmVkIHN0b3B3YXRjaC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVt
b3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2ls
bFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDbG9zZVdlYlNv
Y2tldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNl
aXZlV2ViU29ja2V0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6ZGlkU2VuZFdlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOiBTdGFydCBhbmQgc3RvcCB0aGUgc3RvcHdh
dGNoIHdpdGggdGltZWxpbmVzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6aW50ZXJuYWxTdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OnRpbWVzdGFtcCk6IFJlZGlyZWN0IHRvIHRoZSBzaGFyZWQgc3RvcHdhdGNoLgorICAg
ICAgICAoV2ViQ29yZTo6c3RhcnRQcm9maWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsQ2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxFdmFsdWF0ZVNjcmlwdCk6CisgICAgICAg
IChXZWJDb3JlOjpUaW1lbGluZVRpbWVDb252ZXJ0ZXI6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6VGltZWxpbmVUaW1lQ29udmVydGVyOjpUaW1lbGluZVRpbWVDb252ZXJ0ZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVUaW1lQ29udmVydGVyOjpmcm9tTW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OnRpbWVDb252ZXJ0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZXhlY3V0aW9uU3RvcHdhdGNoKTogQWRk
IGEgc2hhcmVkIHN0b3B3YXRjaC4KKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5oOgorCiAyMDE0LTEwLTEwICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBVcGRhdGUgOm50aC1jaGlsZChBbitCIG9mIHNlbGVjdG9y
LWxpc3QpIHRvIHRoZSBsYXRlc3Qgc3BlY2lmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cK
aW5kZXggMTA1NDYzMzFiNjdiYWViNDU3YzlmNGY3YTE5ZmRmNDlmYjA2MWU1YS4uOGM1OWI4ZmY0
NTEzOTg0MTkzNDg0MjY0M2Y1MGQ3MGE5ZjQxMjQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDggQEAKKzIwMTQtMTAtMTAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2Fz
aGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBu
b3QgY291bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBEb24ndCB1cGRhdGUg
dGhlIHRpbWVsaW5lJ3MgY3VycmVudCB0aW1lIHdoZW4gdGhlIGRlYnVnZ2VyIGlzIHBhdXNlZC4K
KworICAgICAgICBTdGFydCBhbmQgZW5kIHRpbWVzIGZvciB0aW1lbGluZSByZWNvcmRzIGFyZSBu
b3cgaW4gc2Vjb25kcyBlbGFwc2VkIHNpbmNlIHRpbWVsaW5lCisgICAgICAgIHJlY29yZGluZyBz
dGFydGVkLCByYXRoZXIgdGhhbiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoLiBBbHNvIGNv
bnZlcnQgY29kZSB0aGF0CisgICAgICAgIHRyYWNrcyBwYWdlL3Jlc291cmNlIGxvYWQgdGltaW5n
cyB0byB1ZSBlbGFwc2VkIHRpbWVzIHJhdGhlciB0aGFuIHRpbWVzdGFtcHMuCisKKyAgICAgICAg
QWRkIGEgd29ya2Fyb3VuZCB0byBwcmVzZXJ2ZSBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGJhY2tl
bmRzLiBDb252ZXJ0IGxlZ2FjeSB0aW1lc3RhbXBzCisgICAgICAgIGluIG11bHRpcGxlIGFnZW50
cyB0byBlbGFwc2VkIHRpbWVzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9GcmFtZVJlc291cmNlTWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVJl
c291cmNlTWFuYWdlci5wcm90b3R5cGUucmVzb3VyY2VSZXF1ZXN0V2lsbEJlU2VudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlLnJlc291cmNl
UmVxdWVzdFdhc1NlcnZlZEZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RnJhbWVSZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlLnJlc291cmNlUmVxdWVzdERpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIucHJv
dG90eXBlLnJlc291cmNlUmVxdWVzdERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUucmVzb3VyY2VSZXF1ZXN0RGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIu
cHJvdG90eXBlLnJlc291cmNlUmVxdWVzdERpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUuX2FkZE5ld1Jlc291cmNlVG9G
cmFtZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Qcm9iZU1hbmFnZXIu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5jb21w
dXRlRWxhcHNlZFRpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5w
cm90b3R5cGUuZXZlbnRSZWNvcmRlZC5wcm9jZXNzUmVjb3JkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLmV2ZW50UmVjb3JkZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUucGFnZURpZExvYWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX2xvYWROZXdSZWNv
cmRpbmcpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByb2JlU2FtcGxlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01v
ZGVscy9SZXNvdXJjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5
cGUudXBkYXRlRm9yUmVkaXJlY3RSZXNwb25zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2UucHJvdG90eXBlLnVwZGF0ZUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5wcm90b3R5cGUuaW5jcmVhc2VTaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5wcm90b3R5cGUubWFya0FzRmluaXNoZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlLnByb3RvdHlwZS5tYXJrQXNGYWlsZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlLnByb3RvdHlwZS5yZXZlcnRNYXJrQXNGaW5pc2hlZCk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZpZXcucHJvdG90eXBlLl9kZWJ1Z2dlclBhdXNlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVDb250ZW50Vmlldy5wcm90b3R5cGUuX2Rl
YnVnZ2VyUmVzdW1lZCk6CisKKwogMjAxNC0xMC0wOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERPTSBTdG9yYWdlIEVkaXRp
bmcgaXMgYnJva2VuIGluIG1hbnkgd2F5cywgZnJ1c3RyYXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNQcm9maWxlclByaXZhdGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1Byb2ZpbGVyUHJpdmF0ZS5jcHAKaW5kZXggMmE1ZWMyYzgyMzkwMWVk
OWUxYmJkODI0Y2ZhOWM2M2Y4YTgyMzY4Ni4uYWMxMTJhZTZlZmZjYzU2NjJhZWMyMGY0YzhmNDAw
ZDQ2NDdkMzBhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Byb2Zp
bGVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Byb2ZpbGVy
UHJpdmF0ZS5jcHAKQEAgLTM0LDcgKzM0LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHZv
aWQgSlNTdGFydFByb2ZpbGluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiB0aXRsZSkK
IHsKLSAgICBMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmcodG9KUyhj
dHgpLCB0aXRsZS0+c3RyaW5nKCkpOworICAgIC8vIFVzZSBhbiBpbmRlcGVuZGVudCBzdG9wd2F0
Y2ggZm9yIEFQSS1pbml0aWF0ZWQgcHJvZmlsaW5nLCBzaW5jZSB0aGUgdXNlciB3aWxsIGV4cGVj
dCBpdAorICAgIC8vIHRvIGJlIHJlbGF0aXZlIHRvIHdoZW4gdGhlaXIgY29tbWFuZCB3YXMgaXNz
dWVkLgorICAgIFJlZlB0cjxTdG9wd2F0Y2g+IHN0b3B3YXRjaCA9IFN0b3B3YXRjaDo6Y3JlYXRl
KCk7CisgICAgc3RvcHdhdGNoLT5zdGFydCgpOworICAgIExlZ2FjeVByb2ZpbGVyOjpwcm9maWxl
cigpLT5zdGFydFByb2ZpbGluZyh0b0pTKGN0eCksIHRpdGxlLT5zdHJpbmcoKSwgc3RvcHdhdGNo
LnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgSlNFbmRQcm9maWxpbmcoSlNDb250ZXh0UmVmIGN0eCwg
SlNTdHJpbmdSZWYgdGl0bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50LmgKaW5kZXggNmU0MzMzMmRjNTBjZWI5NjQzNTQz
OTUzZGE3ZjNhNzlhYzg3NTMwNS4uYWUyYTdjZDkyMzBiYmRjYjI3ODU4MWQ5ZjNhOTBhN2M2NTcy
NWZjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRW52aXJvbm1lbnQuaApAQCAtMjgsNiArMjgsMTAgQEAKIAogI2luY2x1ZGUgIkNhbGxE
YXRhLmgiCiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RvcHdhdGNoOworfQorCiBuYW1lc3Bh
Y2UgSlNDIHsKIGNsYXNzIFNvdXJjZUNvZGU7CiB9CkBAIC00Nyw2ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbGxJbmplY3RlZFNjcmlwdEZ1bmN0aW9uKEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDYWxsSW5qZWN0ZWRTY3JpcHRGdW5jdGlvbihKU0M6OkV4ZWNT
dGF0ZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZnJvbnRlbmRJbml0aWFsaXplZCgpID0gMDsK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V1RGOjpTdG9wd2F0Y2g+IGV4ZWN1dGlvblN0b3B3YXRj
aCgpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDM0M2Y2NGE0MWExOWE2ZjU0ODkzZmUzN2Ix
Zjk5ODg2Zjk0Yzg1MDguLjg1ZWY3ZmZhMWYxOTYzMWE1NWQwYTczMTA3NTZhMGJjNTg4ZDI1Zjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQzLDYgKzQz
LDggQEAKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxs
U3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCisjaW5jbHVkZSA8
d3RmL1N0b3B3YXRjaC5oPgorCiAjaW5jbHVkZSA8Y3h4YWJpLmg+CiAjaW5jbHVkZSA8ZGxmY24u
aD4KICNpbmNsdWRlIDxleGVjaW5mby5oPgpAQCAtNTksNiArNjEsNyBAQCBKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcihK
U0dsb2JhbE9iagogICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogICAgICwgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFn
ZXI+KCp0aGlzLCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1faW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCisgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChT
dG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9pbmNsdWRlTmF0aXZlQ2FsbFN0YWNrV2l0aEV4
Y2VwdGlvbnModHJ1ZSkKICAgICAsIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uKGZhbHNlKQogewpA
QCAtNzYsNiArNzksOCBAQCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iagogICAgIG1fYWdlbnRzLmFw
cGVuZChXVEY6Om1vdmUocnVudGltZUFnZW50KSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6
bW92ZShjb25zb2xlQWdlbnQpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKGRlYnVn
Z2VyQWdlbnQpKTsKKworICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogfQogCiBK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6On5KU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXIoKQpAQCAtMjAwLDYgKzIwNSwxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6ZnJvbnRlbmRJbml0aWFsaXplZCgpCiAjZW5kaWYKIH0KIAorUGFz
c1JlZlB0cjxTdG9wd2F0Y2g+IEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZXhl
Y3V0aW9uU3RvcHdhdGNoKCkKK3sKKyAgICByZXR1cm4gbV9leGVjdXRpb25TdG9wd2F0Y2g7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDVkOWNmOGM0NDQ0
YzU5OTcwZDg4NWYyNzZmYmQ4YjMxNWI2ZDUzYTEuLjBkYWU0YWNlNWJlM2JlMzZlOGI1MjFlMWNm
ZjNkNjlkOGQ0MGE4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaApA
QCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdG9wd2F0
Y2g7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgQ29uc29sZUNsaWVudDsKIGNsYXNzIEV4
ZWNTdGF0ZTsKQEAgLTc5LDYgKzgzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxs
Q2FsbEluamVjdGVkU2NyaXB0RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
LCBpbnQpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDYWxsSW5qZWN0ZWRTY3Jp
cHRGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBmcm9udGVuZEluaXRpYWxpemVkKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdURjo6U3RvcHdhdGNoPiBleGVjdXRpb25TdG9wd2F0Y2goKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKICAgICB2b2lkIGFwcGVuZEFQSUJhY2t0cmFjZShTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFj
ayk7CkBAIC05MSw2ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eSBtX2FnZW50czsKICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsOwogICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9p
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8V1RGOjpTdG9wd2F0Y2g+IG1f
ZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIGJvb2wgbV9pbmNsdWRlTmF0aXZlQ2FsbFN0YWNrV2l0
aEV4Y2VwdGlvbnM7CiAgICAgYm9vbCBtX2lzQXV0b21hdGljSW5zcGVjdGlvbjsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCmluZGV4IDJjNzgzYWY0Nzc2ZDYxNTRmMGZmMzIzNDYwNzVmNzE4NGIyZTBiNDkuLjNhNjE2
NjNlMzZjNDc3YzExNzNiMmNjMzg4NzkzZDE1MmNiZjM4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zOCw3
ICszOCw2IEBACiAjaW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAi
SlNMb2NrLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdENhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkxl
Z2FjeVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTb3Vy
Y2VQcm92aWRlci5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMzA3LDE0
ICszMDYsMTIgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlRXhjZXB0aW9uSW5CcmVh
a3BvaW50Q29uZGl0aW9uKEpTQzo6RXhlY1N0YXRlKiBleGUKIHZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmhhbmRsZVBhdXNlKERlYnVnZ2VyOjpSZWFzb25Gb3JQYXVzZSwgSlNHbG9iYWxPYmplY3Qq
IHZtRW50cnlHbG9iYWxPYmplY3QpCiB7CiAgICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJz
KCZTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXVzZSk7Ci0gICAgTGVnYWN5UHJvZmls
ZXI6OnByb2ZpbGVyKCktPmRpZFBhdXNlKGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpKTsKICAg
ICBkaWRQYXVzZSh2bUVudHJ5R2xvYmFsT2JqZWN0KTsKIAogICAgIG1fZG9uZVByb2Nlc3NpbmdE
ZWJ1Z2dlckV2ZW50cyA9IGZhbHNlOwogICAgIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7CiAK
ICAgICBkaWRDb250aW51ZSh2bUVudHJ5R2xvYmFsT2JqZWN0KTsKLSAgICBMZWdhY3lQcm9maWxl
cjo6cHJvZmlsZXIoKS0+ZGlkQ29udGludWUoY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCkpOwog
ICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3Bh
dGNoRGlkQ29udGludWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmlu
ZGV4IDE2OTBhMzczOTNlNzZkMGYxN2U2ZjBmYjRmNDA4MGU2NGZhMWVkOWEuLjRhMmE5MzBhNTAx
MTcwZWI0ODhiM2YyMjNjMWYyMGNiNGYzYjhmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIu
aCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgor
I2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC02NTIsNiArNjUzLDggQEAgdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUs
IGNvbnN0IERlcHJlY2EKIAogICAgIGlmIChtX2xpc3RlbmVyKQogICAgICAgICBtX2xpc3RlbmVy
LT5kaWRQYXVzZSgpOworICAgIAorICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0
b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5zdG9wKCk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblNvdW5kKGludCBicmVha3Bv
aW50QWN0aW9uSWRlbnRpZmllcikKQEAgLTY2OSw3ICs2NzIsNyBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUsCiAgICAgICAgIC5zZXRQcm9iZUlkKGFjdGlvbi5pZGVudGlmaWVyKQogICAgICAgICAu
c2V0U2FtcGxlSWQoc2FtcGxlSWQpCiAgICAgICAgIC5zZXRCYXRjaElkKGhpdENvdW50KQotICAg
ICAgICAuc2V0VGltZXN0YW1wKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKQorICAgICAg
ICAuc2V0VGltZXN0YW1wKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9u
bWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2VkVGltZSgpKQogICAgICAgICAuc2V0
UGF5bG9hZChwYXlsb2FkLnJlbGVhc2UoKSk7CiAKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
ZGlkU2FtcGxlUHJvYmUocmVzdWx0LnJlbGVhc2UoKSk7CkBAIC02NzksNiArNjgyLDcgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDb250aW51ZSgpCiB7CiAgICAgbV9wYXVzZWRT
Y3JpcHRTdGF0ZSA9IG51bGxwdHI7CiAgICAgbV9jdXJyZW50Q2FsbFN0YWNrID0gRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUoKTsKKyAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9y
RW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2goKS0+c3RhcnQoKTsKICAgICBjbGVhckJy
ZWFrRGV0YWlscygpOwogCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3VtZWQoKTsKQEAg
LTc0NSw3ICs3NDksNiBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyQnJlYWtE
ZXRhaWxzKCkKICAgICBtX2JyZWFrQXV4RGF0YSA9IG51bGxwdHI7CiB9CiAKLQogfSAvLyBuYW1l
c3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDhiM2ZiNjY0MWQyMzI3MzdhZWNmZTY4ZjFmODA3YzFl
YTkzNjIyZGIuLjAwZDQ3OTQ0YzJkZGNmOGIyNGJmNDFlODUwYThkYmI3MDU2YTVlZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTQ3LDYgKzQ3LDEwIEBACiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAorbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBTdG9wd2F0Y2g7Cit9CisKIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKQEAgLTE2Myw2ICsxNjcsNyBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fYnJlYWtBdXhEYXRhOwogICAgIGJvb2wgbV9lbmFi
bGVkOwogICAgIGJvb2wgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQ7CisgICAgUmVmUHRyPFdU
Rjo6U3RvcHdhdGNoPiBtX3N0b3B3YXRjaDsKICAgICBpbnQgbV9uZXh0UHJvYmVTYW1wbGVJZDsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQ
cm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmls
ZXIuY3BwCmluZGV4IDRmZTJiYTZiMWNlNDJiNjkyYTZjNDg1NzAzNjg2ZmE5ZTRmN2Y3ZmYuLmUw
Y2EyNjgwYmRiOTU0NzUxNDhmZTRjNDE5MzZkYzZlOTZmYzNhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcApAQCAtMzIsNyArMzIs
NiBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCi0jaW5jbHVkZSAiRGVidWdnZXJDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC01MCwxNiArNDksMTYgQEAgc3RhdGlj
IHVuc2lnbmVkIFByb2ZpbGVzVUlEID0gMDsKIAogc3RhdGljIENhbGxJZGVudGlmaWVyIGNyZWF0
ZUNhbGxJZGVudGlmaWVyRnJvbUZ1bmN0aW9uSW1wKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgY29u
c3QgU3RyaW5nJiBkZWZhdWx0U291cmNlVVJMLCB1bnNpZ25lZCBkZWZhdWx0TGluZU51bWJlciwg
dW5zaWduZWQgZGVmYXVsdENvbHVtbk51bWJlcik7CiAKLUxlZ2FjeVByb2ZpbGVyKiBMZWdhY3lQ
cm9maWxlcjo6c19zaGFyZWRMZWdhY3lQcm9maWxlciA9IDA7CitMZWdhY3lQcm9maWxlciogTGVn
YWN5UHJvZmlsZXI6OnNfc2hhcmVkTGVnYWN5UHJvZmlsZXIgPSBudWxscHRyOwogCiBMZWdhY3lQ
cm9maWxlciogTGVnYWN5UHJvZmlsZXI6OnByb2ZpbGVyKCkKIHsKICAgICBpZiAoIXNfc2hhcmVk
TGVnYWN5UHJvZmlsZXIpCiAgICAgICAgIHNfc2hhcmVkTGVnYWN5UHJvZmlsZXIgPSBuZXcgTGVn
YWN5UHJvZmlsZXIoKTsKICAgICByZXR1cm4gc19zaGFyZWRMZWdhY3lQcm9maWxlcjsKLX0gICAK
K30KIAotdm9pZCBMZWdhY3lQcm9maWxlcjo6c3RhcnRQcm9maWxpbmcoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBMZWdhY3lQcm9maWxlcjo6c3RhcnRQcm9maWxp
bmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFN0b3B3
YXRjaD4gc3RvcHdhdGNoKQogewogICAgIGlmICghZXhlYykKICAgICAgICAgcmV0dXJuOwpAQCAt
NzUsMTQgKzc0LDE0IEBAIHZvaWQgTGVnYWN5UHJvZmlsZXI6OnN0YXJ0UHJvZmlsaW5nKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICB9CiAKICAgICBleGVjLT52bSgp
LnNldEVuYWJsZWRQcm9maWxlcih0aGlzKTsKLSAgICBSZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4g
cHJvZmlsZUdlbmVyYXRvciA9IFByb2ZpbGVHZW5lcmF0b3I6OmNyZWF0ZShleGVjLCB0aXRsZSwg
KytQcm9maWxlc1VJRCk7CisgICAgUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IHByb2ZpbGVHZW5l
cmF0b3IgPSBQcm9maWxlR2VuZXJhdG9yOjpjcmVhdGUoZXhlYywgdGl0bGUsICsrUHJvZmlsZXNV
SUQsIHN0b3B3YXRjaCk7CiAgICAgbV9jdXJyZW50UHJvZmlsZXMuYXBwZW5kKHByb2ZpbGVHZW5l
cmF0b3IpOwogfQogCiBQYXNzUmVmUHRyPFByb2ZpbGU+IExlZ2FjeVByb2ZpbGVyOjpzdG9wUHJv
ZmlsaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBpZiAo
IWV4ZWMpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IEpTR2xvYmFsT2JqZWN0KiBvcmlnaW4gPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAg
ICAgZm9yIChwdHJkaWZmX3QgaSA9IG1fY3VycmVudFByb2ZpbGVzLnNpemUoKSAtIDE7IGkgPj0g
MDsgLS1pKSB7CkBAIC05NCwxMiArOTMsMTIgQEAgUGFzc1JlZlB0cjxQcm9maWxlPiBMZWdhY3lQ
cm9maWxlcjo6c3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYKICAg
ICAgICAgICAgIG1fY3VycmVudFByb2ZpbGVzLnJlbW92ZShpKTsKICAgICAgICAgICAgIGlmICgh
bV9jdXJyZW50UHJvZmlsZXMuc2l6ZSgpKQogICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkuc2V0
RW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIHJl
dHVybiByZXR1cm5Qcm9maWxlOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgTGVnYWN5UHJvZmlsZXI6OnN0b3BQcm9maWxp
bmcoSlNHbG9iYWxPYmplY3QqIG9yaWdpbikKQEAgLTE4NCwyOCArMTgzLDYgQEAgdm9pZCBMZWdh
Y3lQcm9maWxlcjo6ZXhjZXB0aW9uVW53aW5kKEV4ZWNTdGF0ZSogaGFuZGxlckNhbGxGcmFtZSkK
ICAgICBjYWxsRnVuY3Rpb25Gb3JQcm9maWxlc1dpdGhHcm91cChzdGQ6OmJpbmQoJlByb2ZpbGVH
ZW5lcmF0b3I6OmV4Y2VwdGlvblVud2luZCwgc3RkOjpwbGFjZWhvbGRlcnM6Ol8xLCBoYW5kbGVy
Q2FsbEZyYW1lLCBjYWxsSWRlbnRpZmllciksIG1fY3VycmVudFByb2ZpbGVzLCBoYW5kbGVyQ2Fs
bEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb2ZpbGVHcm91cCgpKTsKIH0KIAotdm9p
ZCBMZWdhY3lQcm9maWxlcjo6ZGlkUGF1c2UoUGFzc1JlZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4g
cHJwQ2FsbEZyYW1lKQotewotICAgIGlmIChtX2N1cnJlbnRQcm9maWxlcy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4gY2FsbEZyYW1l
ID0gcHJwQ2FsbEZyYW1lOwotICAgIENhbGxJZGVudGlmaWVyIGNhbGxJZGVudGlmaWVyID0gY3Jl
YXRlQ2FsbElkZW50aWZpZXIoY2FsbEZyYW1lLT5leGVjKCksIEpTVmFsdWUoKSwgU3RyaW5nSW1w
bDo6ZW1wdHkoKSwgMCwgMCk7Ci0KLSAgICBjYWxsRnVuY3Rpb25Gb3JQcm9maWxlc1dpdGhHcm91
cChzdGQ6OmJpbmQoJlByb2ZpbGVHZW5lcmF0b3I6OmRpZFBhdXNlLCBzdGQ6OnBsYWNlaG9sZGVy
czo6XzEsIGNhbGxGcmFtZSwgY2FsbElkZW50aWZpZXIpLCBtX2N1cnJlbnRQcm9maWxlcywgY2Fs
bEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnByb2ZpbGVHcm91cCgpKTsKLX0KLQotdm9p
ZCBMZWdhY3lQcm9maWxlcjo6ZGlkQ29udGludWUoUGFzc1JlZlB0cjxEZWJ1Z2dlckNhbGxGcmFt
ZT4gcHJwQ2FsbEZyYW1lKQotewotICAgIGlmIChtX2N1cnJlbnRQcm9maWxlcy5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4gY2FsbEZy
YW1lID0gcHJwQ2FsbEZyYW1lOwotICAgIENhbGxJZGVudGlmaWVyIGNhbGxJZGVudGlmaWVyID0g
Y3JlYXRlQ2FsbElkZW50aWZpZXIoY2FsbEZyYW1lLT5leGVjKCksIEpTVmFsdWUoKSwgU3RyaW5n
SW1wbDo6ZW1wdHkoKSwgMCwgMCk7Ci0KLSAgICBjYWxsRnVuY3Rpb25Gb3JQcm9maWxlc1dpdGhH
cm91cChzdGQ6OmJpbmQoJlByb2ZpbGVHZW5lcmF0b3I6OmRpZENvbnRpbnVlLCBzdGQ6OnBsYWNl
aG9sZGVyczo6XzEsIGNhbGxGcmFtZSwgY2FsbElkZW50aWZpZXIpLCBtX2N1cnJlbnRQcm9maWxl
cywgY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnByb2ZpbGVHcm91cCgpKTsKLX0K
LQogQ2FsbElkZW50aWZpZXIgTGVnYWN5UHJvZmlsZXI6OmNyZWF0ZUNhbGxJZGVudGlmaWVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvblZhbHVlLCBjb25zdCBTdHJpbmcmIGRlZmF1
bHRTb3VyY2VVUkwsIHVuc2lnbmVkIGRlZmF1bHRMaW5lTnVtYmVyLCB1bnNpZ25lZCBkZWZhdWx0
Q29sdW1uTnVtYmVyKQogewogICAgIGlmICghZnVuY3Rpb25WYWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmgKaW5kZXggMWQ2Y2IyNmY4M2Zm
MDJmOGNhZDMyNzBkMTRlMDE0MzY2MGFiNzZhZi4uOGY2YWY0MGVlOTllYTRhOTA1MDFlN2VlZWE3
YjkwMjc1Y2VlM2VhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L0xlZ2FjeVByb2ZpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xl
Z2FjeVByb2ZpbGVyLmgKQEAgLTMyLDEzICszMiwxMiBAQAogI2luY2x1ZGUgIlByb2ZpbGUuaCIK
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKIAotY2xhc3MgRGVidWdnZXJDYWxsRnJhbWU7CiBjbGFzcyBFeGVjU3RhdGU7
Ci1jbGFzcyBWTTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNPYmplY3Q7CiBjbGFz
cyBKU1ZhbHVlOwpAQCAtNDgsMTAgKzQ3LDEwIEBAIHN0cnVjdCBDYWxsSWRlbnRpZmllcjsKIGNs
YXNzIExlZ2FjeVByb2ZpbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVy
KCk7IAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMZWdhY3lQcm9maWxlciogcHJvZmls
ZXIoKTsKICAgICBzdGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXIoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQg
ZGVmYXVsdExpbmVOdW1iZXIsIHVuc2lnbmVkIGRlZmF1bHRDb2x1bW5OdW1iZXIpOwogCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBX
VEY6OlN0cmluZyYgdGl0bGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnRQcm9m
aWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFN0
b3B3YXRjaD4pOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8UHJvZmlsZT4gc3Rv
cFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUpOwogICAgIHZv
aWQgc3RvcFByb2ZpbGluZyhKU0dsb2JhbE9iamVjdCopOwogCkBAIC02Niw5ICs2NSw2IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZXhjZXB0aW9uVW53aW5kKEV4ZWNTdGF0ZSogaGFuZGxlckNhbGxG
cmFtZSk7CiAKLSAgICB2b2lkIGRpZFBhdXNlKFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+
KTsKLSAgICB2b2lkIGRpZENvbnRpbnVlKFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+KTsK
LQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4+JiBjdXJyZW50UHJv
ZmlsZXMoKSB7IHJldHVybiBtX2N1cnJlbnRQcm9maWxlczsgfTsKIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcAppbmRleCA3NTJiNmNjMmRlMjMz
ODBmNWEyNzQyY2U0ODMwYzE1ODA1ZjgzN2JhLi42ZDYyNDIxZmJkMmY0NDE3NTQ5YTFlZWQwZTE3
ZTA0OWFiOThkOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUu
Y3BwCkBAIC00NCw3ICs0NCw3IEBAIFByb2ZpbGU6OlByb2ZpbGUoY29uc3QgU3RyaW5nJiB0aXRs
ZSwgdW5zaWduZWQgdWlkKQogICAgIC8vIEZJWE1FOiBXaGVuIG11bHRpLXRocmVhZGluZyBpcyBz
dXBwb3J0ZWQgdGhpcyB3aWxsIGJlIGEgdmVjdG9yIGFuZCBjYWxscwogICAgIC8vIGludG8gdGhl
IHByb2ZpbGVyIHdpbGwgbmVlZCB0byBrbm93IHdoaWNoIHRocmVhZCBpdCBpcyBleGVjdXRpbmcg
b24uCiAgICAgbV9yb290Tm9kZSA9IFByb2ZpbGVOb2RlOjpjcmVhdGUobnVsbHB0ciwgQ2FsbElk
ZW50aWZpZXIoQVNDSUlMaXRlcmFsKCJUaHJlYWRfMSIpLCBTdHJpbmcoKSwgMCwgMCksIG51bGxw
dHIpOwotICAgIG1fcm9vdE5vZGUtPmFwcGVuZENhbGwoUHJvZmlsZU5vZGU6OkNhbGwoY3VycmVu
dFRpbWUoKSkpOworICAgIG1fcm9vdE5vZGUtPmFwcGVuZENhbGwoUHJvZmlsZU5vZGU6OkNhbGwo
MC4wKSk7CiB9CiAKIFByb2ZpbGU6On5Qcm9maWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNwcAppbmRleCAzMmU4OTI2MGVlZmM3
OGYyYThlYjk5NmFlOWE3N2Y4OTZlZDk0Mzc4Li5hNGIzMzRjNTkzZDU5MTI1ODM4M2E2YjgyYjQy
YWJjZThjNzQyOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVHZW5lcmF0b3IuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDYWxs
RnJhbWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJEZWJ1Z2dlci5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdSZWYuaCIKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC00MCwyMSArMzksMTggQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLVBhc3NSZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4gUHJvZmlsZUdlbmVyYXRvcjo6Y3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKQor
UGFzc1JlZlB0cjxQcm9maWxlR2VuZXJhdG9yPiBQcm9maWxlR2VuZXJhdG9yOjpjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQsIFBhc3NSZWZQ
dHI8U3RvcHdhdGNoPiBzdG9wd2F0Y2gpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcm9m
aWxlR2VuZXJhdG9yKGV4ZWMsIHRpdGxlLCB1aWQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFByb2ZpbGVHZW5lcmF0b3IoZXhlYywgdGl0bGUsIHVpZCwgc3RvcHdhdGNoKSk7CiB9CiAKLVBy
b2ZpbGVHZW5lcmF0b3I6OlByb2ZpbGVHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCitQcm9maWxlR2VuZXJhdG9yOjpQcm9maWxlR2Vu
ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlk
LCBQYXNzUmVmUHRyPFN0b3B3YXRjaD4gc3RvcHdhdGNoKQogICAgIDogbV9vcmlnaW4oZXhlYyA/
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSA6IG51bGxwdHIpCiAgICAgLCBtX3Byb2ZpbGVH
cm91cChleGVjID8gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9maWxlR3JvdXAoKSA6
IDApCi0gICAgLCBtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wKE5BTikKKyAgICAsIG1fc3RvcHdh
dGNoKHN0b3B3YXRjaCkKICAgICAsIG1fZm91bmRDb25zb2xlU3RhcnRQYXJlbnQoZmFsc2UpCiAg
ICAgLCBtX3N1c3BlbmRlZChmYWxzZSkKIHsKLSAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKQotICAgICAgICBtX2RlYnVn
Z2VyUGF1c2VkVGltZXN0YW1wID0gZGVidWdnZXItPmlzUGF1c2VkKCkgPyBjdXJyZW50VGltZSgp
IDogTkFOOwotCiAgICAgbV9wcm9maWxlID0gUHJvZmlsZTo6Y3JlYXRlKHRpdGxlLCB1aWQpOwog
ICAgIG1fY3VycmVudE5vZGUgPSBtX3Jvb3ROb2RlID0gbV9wcm9maWxlLT5yb290Tm9kZSgpOwog
ICAgIGlmIChleGVjKQpAQCAtODUsNyArODEsOSBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVk
IGNvbHVtbiA9IDA7CiAgICAgICAgIHZpc2l0b3ItPmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUs
IGNvbHVtbik7CiAgICAgICAgIG1fY3VycmVudE5vZGUgPSBQcm9maWxlTm9kZTo6Y3JlYXRlKG1f
ZXhlYywgTGVnYWN5UHJvZmlsZXI6OmNyZWF0ZUNhbGxJZGVudGlmaWVyKG1fZXhlYywgdmlzaXRv
ci0+Y2FsbGVlKCksIHZpc2l0b3ItPnNvdXJjZVVSTCgpLCBsaW5lLCBjb2x1bW4pLCBtX3Jvb3RO
b2RlLmdldCgpKTsKLSAgICAgICAgbV9jdXJyZW50Tm9kZS0+YXBwZW5kQ2FsbChQcm9maWxlTm9k
ZTo6Q2FsbChjdXJyZW50VGltZSgpKSk7CisgICAgICAgIC8vIEFzc3VtZSB0aGF0IHByb2ZpbGUg
dGltZXMgYXJlIHJlbGF0aXZlIHRvIHdoZW4gdGhlIHxjb25zb2xlLnByb2ZpbGV8IGNvbW1hbmQg
aXMgZXZhbHVhdGVkLgorICAgICAgICAvLyBUaGlzIG1hdGNoZXMgdGhlIGxvZ2ljIGluIEpTU3Rh
cnRQcm9maWxpbmcoKSBhbmQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29s
ZSgpLgorICAgICAgICBtX2N1cnJlbnROb2RlLT5hcHBlbmRDYWxsKFByb2ZpbGVOb2RlOjpDYWxs
KDAuMCkpOwogICAgICAgICBtX3Jvb3ROb2RlLT5zcGxpY2VOb2RlKG1fY3VycmVudE5vZGUuZ2V0
KCkpOwogCiAgICAgICAgIG1fZm91bmRQYXJlbnQgPSB0cnVlOwpAQCAtMTE4LDEyICsxMTYsNyBA
QCB2b2lkIFByb2ZpbGVHZW5lcmF0b3I6OmJlZ2luQ2FsbEVudHJ5KFByb2ZpbGVOb2RlKiBub2Rl
LCBkb3VibGUgc3RhcnRUaW1lKQogICAgIEFTU0VSVF9BUkcobm9kZSwgbm9kZSk7CiAKICAgICBp
ZiAoaXNuYW4oc3RhcnRUaW1lKSkKLSAgICAgICAgc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsK
LQotICAgIC8vIElmIHRoZSBkZWJ1Z2dlciBpcyBwYXVzZWQgd2hlbiBiZWdpbm5pbmcsIHRoZW4g
ZG9uJ3Qgc2V0IHRoZSBzdGFydCB0aW1lLiBJdAotICAgIC8vIHdpbGwgYmUgZml4ZWQgdXAgd2hl
biB0aGUgZGVidWdnZXIgdW5wYXVzZXMgb3IgdGhlIGNhbGwgZW50cnkgZW5kcy4KLSAgICBpZiAo
IWlzbmFuKG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApKQotICAgICAgICBzdGFydFRpbWUgPSBO
QU47CisgICAgICAgIHN0YXJ0VGltZSA9IG1fc3RvcHdhdGNoLT5lbGFwc2VkVGltZSgpOwogCiAg
ICAgbm9kZS0+YXBwZW5kQ2FsbChQcm9maWxlTm9kZTo6Q2FsbChzdGFydFRpbWUpKTsKIH0KQEAg
LTEzMywyMiArMTI2LDggQEAgdm9pZCBQcm9maWxlR2VuZXJhdG9yOjplbmRDYWxsRW50cnkoUHJv
ZmlsZU5vZGUqIG5vZGUpCiAgICAgQVNTRVJUX0FSRyhub2RlLCBub2RlKTsKIAogICAgIFByb2Zp
bGVOb2RlOjpDYWxsJiBsYXN0ID0gbm9kZS0+bGFzdENhbGwoKTsKLQotICAgIC8vIElmIHRoZSBk
ZWJ1Z2dlciBpcyBwYXVzZWQsIGlnbm9yZSB0aGUgaW50ZXJ2YWwgdGhhdCBlbmRzIG5vdy4KLSAg
ICBpZiAoIWlzbmFuKG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApICYmICFpc25hbihsYXN0LmVs
YXBzZWRUaW1lKCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBJZiBwYXVzZWQgYW5kIG5v
IHRpbWUgd2FzIGFjY3J1ZWQgdGhlbiB0aGUgZGVidWdnZXIgd2FzIG5ldmVyIHVucGF1c2VkLiBU
aGUgY2FsbCB3aWxsCi0gICAgLy8gaGF2ZSBubyB0aW1lIGFjY3J1ZWQgYW5kIGFwcGVhciB0byBo
YXZlIHN0YXJ0ZWQgd2hlbiB0aGUgZGVidWdnZXIgd2FzIHBhdXNlZC4KLSAgICBpZiAoIWlzbmFu
KG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApKSB7Ci0gICAgICAgIGxhc3Quc2V0U3RhcnRUaW1l
KG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApOwotICAgICAgICBsYXN0LnNldEVsYXBzZWRUaW1l
KDAuMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBPdGhlcndpc2UsIGFkZCB0
aGUgaW50ZXJ2YWwgZW5kaW5nIG5vdyB0byBlbGFwc2VkIHRpbWUuCiAgICAgZG91YmxlIHByZXZp
b3VzRWxhcHNlZFRpbWUgPSBpc25hbihsYXN0LmVsYXBzZWRUaW1lKCkpID8gMC4wIDogbGFzdC5l
bGFwc2VkVGltZSgpOwotICAgIGRvdWJsZSBuZXdseUVsYXBzZWRUaW1lID0gY3VycmVudFRpbWUo
KSAtIGxhc3Quc3RhcnRUaW1lKCk7CisgICAgZG91YmxlIG5ld2x5RWxhcHNlZFRpbWUgPSBtX3N0
b3B3YXRjaC0+ZWxhcHNlZFRpbWUoKSAtIGxhc3Quc3RhcnRUaW1lKCk7CiAgICAgbGFzdC5zZXRF
bGFwc2VkVGltZShwcmV2aW91c0VsYXBzZWRUaW1lICsgbmV3bHlFbGFwc2VkVGltZSk7CiB9CiAK
QEAgLTE4MCw3ICsxNTksNyBAQCB2b2lkIFByb2ZpbGVHZW5lcmF0b3I6OndpbGxFeGVjdXRlKEV4
ZWNTdGF0ZSogY2FsbGVyQ2FsbEZyYW1lLCBjb25zdCBDYWxsSWRlbnRpZgogICAgIH0KIAogICAg
IG1fY3VycmVudE5vZGUgPSBjYWxsZWVOb2RlOwotICAgIGJlZ2luQ2FsbEVudHJ5KGNhbGxlZU5v
ZGUuZ2V0KCkpOworICAgIGJlZ2luQ2FsbEVudHJ5KGNhbGxlZU5vZGUuZ2V0KCksIG1fc3RvcHdh
dGNoLT5lbGFwc2VkVGltZSgpKTsKIH0KIAogdm9pZCBQcm9maWxlR2VuZXJhdG9yOjpkaWRFeGVj
dXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZyYW1lLCBjb25zdCBDYWxsSWRlbnRpZmllciYgY2Fs
bElkZW50aWZpZXIpCkBAIC0yMjMsMzMgKzIwMiw2IEBAIHZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6
ZXhjZXB0aW9uVW53aW5kKEV4ZWNTdGF0ZSogaGFuZGxlckNhbGxGcmFtZSwgY29uc3QgQ2FsbElk
CiAgICAgfQogfQogCi12b2lkIFByb2ZpbGVHZW5lcmF0b3I6OmRpZFBhdXNlKFBhc3NSZWZQdHI8
RGVidWdnZXJDYWxsRnJhbWU+LCBjb25zdCBDYWxsSWRlbnRpZmllciYpCi17Ci0gICAgQVNTRVJU
KGlzbmFuKG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApKTsKLQotICAgIG1fZGVidWdnZXJQYXVz
ZWRUaW1lc3RhbXAgPSBjdXJyZW50VGltZSgpOwotCi0gICAgZm9yIChQcm9maWxlTm9kZSogbm9k
ZSA9IG1fY3VycmVudE5vZGUuZ2V0KCk7IG5vZGUgIT0gbV9wcm9maWxlLT5yb290Tm9kZSgpOyBu
b2RlID0gbm9kZS0+cGFyZW50KCkpIHsKLSAgICAgICAgUHJvZmlsZU5vZGU6OkNhbGwmIGxhc3Qg
PSBub2RlLT5sYXN0Q2FsbCgpOwotICAgICAgICBBU1NFUlQoIWlzbmFuKGxhc3Quc3RhcnRUaW1l
KCkpKTsKLQotICAgICAgICBkb3VibGUgcHJldmlvdXNFbGFwc2VkVGltZSA9IGlzbmFuKGxhc3Qu
ZWxhcHNlZFRpbWUoKSkgPyAwLjAgOiBsYXN0LmVsYXBzZWRUaW1lKCk7Ci0gICAgICAgIGRvdWJs
ZSBhZGRpdGlvbmFsRWxhcHNlZFRpbWUgPSBtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wIC0gbGFz
dC5zdGFydFRpbWUoKTsKLSAgICAgICAgbGFzdC5zZXRTdGFydFRpbWUoTkFOKTsKLSAgICAgICAg
bGFzdC5zZXRFbGFwc2VkVGltZShwcmV2aW91c0VsYXBzZWRUaW1lICsgYWRkaXRpb25hbEVsYXBz
ZWRUaW1lKTsKLSAgICB9Ci19Ci0KLXZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6ZGlkQ29udGludWUo
UGFzc1JlZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4sIGNvbnN0IENhbGxJZGVudGlmaWVyJikKLXsK
LSAgICBBU1NFUlQoIWlzbmFuKG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXApKTsKLQotICAgIGZv
ciAoUHJvZmlsZU5vZGUqIG5vZGUgPSBtX2N1cnJlbnROb2RlLmdldCgpOyBub2RlICE9IG1fcHJv
ZmlsZS0+cm9vdE5vZGUoKTsgbm9kZSA9IG5vZGUtPnBhcmVudCgpKQotICAgICAgICBub2RlLT5s
YXN0Q2FsbCgpLnNldFN0YXJ0VGltZShtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wKTsKLQotICAg
IG1fZGVidWdnZXJQYXVzZWRUaW1lc3RhbXAgPSBOQU47Ci19Ci0KIHZvaWQgUHJvZmlsZUdlbmVy
YXRvcjo6c3RvcFByb2ZpbGluZygpCiB7CiAgICAgZm9yIChQcm9maWxlTm9kZSogbm9kZSA9IG1f
Y3VycmVudE5vZGUuZ2V0KCk7IG5vZGUgIT0gbV9wcm9maWxlLT5yb290Tm9kZSgpOyBub2RlID0g
bm9kZS0+cGFyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVHZW5lcmF0b3IuaAppbmRleCA5ZjUxYTNkYzg2Y2QzM2Y0MWE0ZTRiZWFmZTlmNTBjM2Nj
Yzk0MWYyLi5jNTc0NmQzOWRmNTAwNjM0MDMyMGI5OTgwM2U1YWRmNjFiMTUwNjk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmgKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9T
dG9wd2F0Y2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC00Miw3ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJv
ZmlsZUdlbmVyYXRvciA6IHB1YmxpYyBSZWZDb3VudGVkPFByb2ZpbGVHZW5lcmF0b3I+ICB7CiAg
ICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9maWxlR2VuZXJhdG9yPiBj
cmVhdGUoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQp
OworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9maWxlR2VuZXJhdG9yPiBjcmVhdGUoRXhl
Y1N0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQsIFBhc3NSZWZQ
dHI8U3RvcHdhdGNoPik7CiAKICAgICAgICAgLy8gTWVtYmVycwogICAgICAgICBjb25zdCBXVEY6
OlN0cmluZyYgdGl0bGUoKSBjb25zdDsKQEAgLTU0LDI4ICs1NSwyNCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBkaWRFeGVjdXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZyYW1lLCBj
b25zdCBDYWxsSWRlbnRpZmllciYpOwogICAgICAgICB2b2lkIGV4Y2VwdGlvblVud2luZChFeGVj
U3RhdGUqIGhhbmRsZXJDYWxsRnJhbWUsIGNvbnN0IENhbGxJZGVudGlmaWVyJik7CiAKLSAgICAg
ICAgdm9pZCBkaWRQYXVzZShQYXNzUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiwgY29uc3QgQ2Fs
bElkZW50aWZpZXImKTsKLSAgICAgICAgdm9pZCBkaWRDb250aW51ZShQYXNzUmVmUHRyPERlYnVn
Z2VyQ2FsbEZyYW1lPiwgY29uc3QgQ2FsbElkZW50aWZpZXImKTsKLQogICAgICAgICB2b2lkIHNl
dElzU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKSB7IEFTU0VSVChtX3N1c3BlbmRlZCAhPSBzdXNw
ZW5kZWQpOyBtX3N1c3BlbmRlZCA9IHN1c3BlbmRlZDsgfQogCiAgICAgICAgIHZvaWQgc3RvcFBy
b2ZpbGluZygpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUHJvZmlsZUdlbmVyYXRvcihFeGVj
U3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7CisgICAgICAg
IFByb2ZpbGVHZW5lcmF0b3IoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCB1
bnNpZ25lZCB1aWQsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPik7CiAgICAgICAgIHZvaWQgYWRkUGFy
ZW50Rm9yQ29uc29sZVN0YXJ0KEV4ZWNTdGF0ZSopOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlUHJv
ZmlsZVN0YXJ0KCk7CiAgICAgICAgIHZvaWQgcmVtb3ZlUHJvZmlsZUVuZCgpOwogCi0gICAgICAg
IHZvaWQgYmVnaW5DYWxsRW50cnkoUHJvZmlsZU5vZGUqLCBkb3VibGUgc3RhcnRUaW1lID0gTkFO
KTsKKyAgICAgICAgdm9pZCBiZWdpbkNhbGxFbnRyeShQcm9maWxlTm9kZSosIGRvdWJsZSBzdGFy
dFRpbWUpOwogICAgICAgICB2b2lkIGVuZENhbGxFbnRyeShQcm9maWxlTm9kZSopOwogCiAgICAg
ICAgIFJlZlB0cjxQcm9maWxlPiBtX3Byb2ZpbGU7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBt
X29yaWdpbjsKICAgICAgICAgdW5zaWduZWQgbV9wcm9maWxlR3JvdXA7Ci0gICAgICAgIC8vIFRp
bWVzdGFtcCBpcyBzZXQgdG8gTkFOIHdoZW4gdGhlIGRlYnVnZ2VyIGlzIG5vdCBjdXJyZW50bHkg
cGF1c2VkLgotICAgICAgICBkb3VibGUgbV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcDsKKyAgICAg
ICAgUmVmUHRyPFN0b3B3YXRjaD4gbV9zdG9wd2F0Y2g7CiAgICAgICAgIFJlZlB0cjxQcm9maWxl
Tm9kZT4gbV9yb290Tm9kZTsKICAgICAgICAgUmVmUHRyPFByb2ZpbGVOb2RlPiBtX2N1cnJlbnRO
b2RlOwogICAgICAgICBib29sIG1fZm91bmRDb25zb2xlU3RhcnRQYXJlbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qIGIvU291cmNlL1dURi9XVEYudmN4
cHJvai9XVEYudmN4cHJvagppbmRleCAwZjgzYmFlOWI1ODdlZTlkMzhkMWI5MDYwZGM0ZWM2YzRl
NmYxMDQyLi4yZjNhYzIwOWM1MjZjMDM0ZmY0MGFlNWUzNjQ0NDI2ZjZiYWI2Yjk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCisrKyBiL1NvdXJjZS9XVEYv
V1RGLnZjeHByb2ovV1RGLnZjeHByb2oKQEAgLTI3MCw2ICsyNzAsNyBAQCDvu788P3htbCB2ZXJz
aW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXFN0YWNrQm91bmRzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3Rh
dGljQ29uc3RydWN0b3JzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3Rk
TGliRXh0cmFzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3RvcHdhdGNo
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3RyaW5nRXh0cmFzLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3RyaW5nSGFzaGVyLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcU3RyaW5nUHJpbnRTdHJlYW0uaCIgLz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwppbmRleCA2YTBlOWExNjJkOTU3
NTUyYzhmNzdlMjExMzU2ZWJmM2E0YzU0Y2EzLi41OTUzYTBmNDJhZmQ3NTA3NmJmOTg1ZDU5ODMw
ZDliZWM4NjM1Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0
ZXJzCkBAIC02MTQsNiArNjE0LDkgQEAg77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
dXRmLTgiPz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdGRMaWJFeHRyYXMuaCI+
CiAgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0b3B3YXRjaC5oIj4KKyAgICAgIDxGaWx0ZXI+d3RmPC9G
aWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZc
U3RyaW5nRXh0cmFzLmgiPgogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUxMmUw
ZTIxZTliNGQ1Mjc4MDU0YTg5ZWZjNmMxMTAxODQ3OTVhY2YuLmZmNDhkYTBjYzUzMTI4MmExMmQw
ZDUxMDZjNjYwMzVmMTU1ZDkxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjczLDYgKzI3Myw3IEBACiAJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAv
KiBXVEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEE0NzM3QjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovOyB9
OwogCQlBOEE0NzQ4QzE1MUE4MjY0MDA0MTIzRkYgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzQ4QjE1MUE4MjY0MDA0MTIzRkYg
LyogY29uZmlnLmggKi87IH07CiAJCUIzOEZEN0JEMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJl
RGVmaW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggKi87IH07CisJCUM0
RjhBOTM3MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0Y2guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0RjhBOTM2MTlDNjVFQjQwMEIyQjE1RCAvKiBT
dG9wd2F0Y2guaCAqLzsgfTsKIAkJQ0Q1NDk3QUMxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGlt
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0
OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLzsgfTsKIAkJQ0Q1NDk3QUQx
NTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGlt
ZS5oICovOyB9OwogCQlDRTQ2NTE2RTE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0NjUxNkQx
OURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCAqLzsgfTsKQEAgLTU2Niw2ICs1Njcs
NyBAQAogCQlBOEE0NzM3QjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXVEZUaHJlYWREYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3NDhCMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIzOEZEN0JDMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVmaW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZWF0dXJlRGVmaW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNEY4QTkzNjE5QzY1RUI0MDBCMkIxNUQgLyog
U3RvcHdhdGNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3B3YXRjaC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAg
LyogTWVkaWFUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1l
ZGlhVGltZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5N0FCMTU4NTdE
MDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVkaWFUaW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDY1MTZEMTlE
QjFGQjQwMDNFQ0EwNSAvKiBOU01hcFRhYmxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5TTWFwVGFibGVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTg1OCw2ICs4NjAsNyBAQAogCQkJCUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0
YXRzLmggKi8sCiAJCQkJQThBNDczMTAxNTFBODI1QjAwNDEyM0ZGIC8qIFN0YXRpY0NvbnN0cnVj
dG9ycy5oICovLAogCQkJCUE4QTQ3MzExMTUxQTgyNUIwMDQxMjNGRiAvKiBTdGRMaWJFeHRyYXMu
aCAqLywKKwkJCQlDNEY4QTkzNjE5QzY1RUI0MDBCMkIxNUQgLyogU3RvcHdhdGNoLmggKi8sCiAJ
CQkJMUE2QkI3NjgxNjJGMzAwNTAwREQxNkRCIC8qIFN0cmVhbUJ1ZmZlci5oICovLAogCQkJCUE4
QTQ3MzEzMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdFeHRyYXMuaCAqLywKIAkJCQlBNzQ4NzQ1
MTE3QTBCREFFMDBGQTA0Q0IgLyogU3RyaW5nSGFzaER1bXBDb250ZXh0LmggKi8sCkBAIC0xMDc4
LDYgKzEwODEsNyBAQAogCQkJCUE4QTQ3M0EzMTUxQTgyNUIwMDQxMjNGRiAvKiBEZWNpbWFsTnVt
YmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBNjE3QjZCNEZCMDBBN0FFM0YgLyogRGVm
ZXJyYWJsZVJlZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0E1MTUxQTgyNUIw
MDQxMjNGRiAvKiBEZXF1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzRGOEE5MzcxOUM2NUVCNDAw
QjJCMTVEIC8qIFN0b3B3YXRjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQTYxNTFBODI1
QjAwNDEyM0ZGIC8qIERpc2FsbG93Q1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0FG
MTUxQTgyNUIwMDQxMjNGRiAvKiBkaXktZnAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0Ix
MTUxQTgyNUIwMDQxMjNGRiAvKiBkb3VibGUtY29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CmluZGV4IDJhYWQ3OTNjODE3MGIxMWRmMmUxMDhlYjEzNDcxNjA3YWIw
YTVlMmQuLmJjMjZhYzQxZDI1YzdiMzcxMDAwZjRlZGJkMGUyNzc3MmEwNDU1NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CkBAIC05Miw2ICs5Miw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFN0YWNr
U3RhdHMuaAogICAgIFN0YXRpY0NvbnN0cnVjdG9ycy5oCiAgICAgU3RkTGliRXh0cmFzLmgKKyAg
ICBTdG9wd2F0Y2guaAogICAgIFN0cmluZ0V4dHJhcy5oCiAgICAgU3RyaW5nSGFzaGVyLmgKICAg
ICBTdHJpbmdQcmludFN0cmVhbS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdG9wd2F0
Y2guaCBiL1NvdXJjZS9XVEYvd3RmL1N0b3B3YXRjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZTVkYjEyM2M1
MzJhMzRhMDU1MmY5MGQwMGQ4ZjlmNTI3YmZlNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9TdG9wd2F0Y2guaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFN0b3B3YXRjaF9oCisjZGVmaW5lIFN0b3B3YXRjaF9oCisKKyNpbmNsdWRlIDxjbWF0aD4KKyNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgU3RvcHdhdGNoIDogcHVibGljIFJlZkNvdW50ZWQ8
U3RvcHdhdGNoPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RvcHdhdGNoPiBj
cmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9wd2F0Y2goKSk7
CisgICAgfQorCisgICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lk
IHN0b3AoKTsKKworICAgIGRvdWJsZSBlbGFwc2VkVGltZSgpOworCitwcml2YXRlOgorICAgIFN0
b3B3YXRjaCgpCisgICAgICAgIDogbV9lbGFwc2VkVGltZSgwLjApCisgICAgICAgICwgbV9sYXN0
U3RhcnRUaW1lKE5BTikKKyAgICB7CisgICAgfQorCisgICAgZG91YmxlIG1fZWxhcHNlZFRpbWU7
CisgICAgZG91YmxlIG1fbGFzdFN0YXJ0VGltZTsKK307CisKK2lubGluZSB2b2lkIFN0b3B3YXRj
aDo6cmVzZXQoKQoreworICAgIG1fZWxhcHNlZFRpbWUgPSAwLjA7CisgICAgbV9sYXN0U3RhcnRU
aW1lID0gTkFOOworfQorCitpbmxpbmUgdm9pZCBTdG9wd2F0Y2g6OnN0YXJ0KCkKK3sKKyAgICBB
U1NFUlQoaXNuYW4obV9sYXN0U3RhcnRUaW1lKSk7CisKKyAgICBtX2xhc3RTdGFydFRpbWUgPSBt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKK30KKworaW5saW5lIHZvaWQgU3RvcHdhdGNo
OjpzdG9wKCkKK3sKKyAgICBBU1NFUlQoIWlzbmFuKG1fbGFzdFN0YXJ0VGltZSkpOworCisgICAg
bV9lbGFwc2VkVGltZSArPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fbGFzdFN0
YXJ0VGltZTsKKyAgICBtX2xhc3RTdGFydFRpbWUgPSBOQU47Cit9CisKK2lubGluZSBkb3VibGUg
U3RvcHdhdGNoOjplbGFwc2VkVGltZSgpCit7CisgICAgYm9vbCBzaG91bGRTdXNwZW5kID0gIWlz
bmFuKG1fbGFzdFN0YXJ0VGltZSk7CisgICAgaWYgKHNob3VsZFN1c3BlbmQpCisgICAgICAgIHN0
b3AoKTsKKworICAgIGRvdWJsZSBlbGFwc2VkVGltZSA9IG1fZWxhcHNlZFRpbWU7CisKKyAgICBp
ZiAoc2hvdWxkU3VzcGVuZCkKKyAgICAgICAgc3RhcnQoKTsKKyAgICByZXR1cm4gZWxhcHNlZFRp
bWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlN0b3B3YXRjaDsKKwor
I2VuZGlmIC8vIFN0b3B3YXRjaF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmNwcAppbmRleCBjNTNlN2M1NjQyYzcyNmMxYjI2YTFkYzg1MDBmNWUyNzM5
NGI4Yzg5Li4wY2E3ZDBkNTYxNWRiYzEyMzQ0MDhiZDMwZDE1YzdmYzVhNDE0MmY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTU3LDcg
KzU3LDYgQEAKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgogI2luY2x1ZGUgIldlYktpdE5h
bWVkRmxvdy5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KLSNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggODIwMDQ4MTgyMjgz
NWFiYTFhYTJiNDVmYjMyMzQ1ZDBjNjdjNjYxMy4uMGI3ZmEyY2I4YmM5MmMyOTczY2ZiOTc5ZTI3
ZDY3OWFhNGMwMmIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcApAQCAtNzQsNiArNzQsNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuaD4KICNpbmNsdWRlIDxwcm9maWxlci9MZWdhY3lQcm9maWxl
ci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVkZSA8d3RmL1N0b3B3YXRj
aC5oPgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaW5jbHVkZSAiUGFnZURlYnVn
Z2FibGUuaCIKQEAgLTg5LDYgKzkwLDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9y
Q29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICAs
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAg
LCBtX292ZXJsYXkoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JPdmVybGF5PihwYWdlLCBpbnNw
ZWN0b3JDbGllbnQpKQogICAgICwgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwobnVsbHB0cikK
KyAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBt
X3BhZ2UocGFnZSkKICAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKICAg
ICAsIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobnVsbHB0cikKQEAgLTQ1Myw2ICs0NTUsMTEg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpmcm9udGVuZEluaXRpYWxpemVkKCkKICNlbmRp
ZgogfQogCitQYXNzUmVmUHRyPFN0b3B3YXRjaD4gSW5zcGVjdG9yQ29udHJvbGxlcjo6ZXhlY3V0
aW9uU3RvcHdhdGNoKCkKK3sKKyAgICByZXR1cm4gbV9leGVjdXRpb25TdG9wd2F0Y2g7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA5
NDc1YmMyNTA3ODYyMjEyZTE1OTQyMTBhZTZjYzQ5OGJmZTkxODU1Li45NmY0MWY1MmRiNGI5ZWEx
NGMwZGY3Yjc3OWJlMWNjYjIxYjAxNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxDYWxsSW5qZWN0ZWRTY3JpcHRGdW5jdGlvbihKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDYWxsSW5qZWN0ZWRTY3JpcHRGdW5jdGlvbihKU0M6OkV4ZWNT
dGF0ZSopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBmcm9udGVuZEluaXRpYWxpemVkKCkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdURjo6U3RvcHdhdGNoPiBleGVjdXRp
b25TdG9wd2F0Y2goKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGF0aW9uRm9yUGFnZShQYWdlKik7CkBAIC0xNDgsNiArMTQ5
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyPiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogICAgIEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKKyAg
ICBSZWZQdHI8V1RGOjpTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIFBhZ2Um
IG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwogICAgIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBmYzNi
YzI3ZDE5NDVmMGFiNjgyZWRhZWRjOTM3MDlmYjQ1NTFiMTk2Li43Yzc1MWQyYmJjMmVkZTRiMGIy
MzU3M2ZhN2JhYTBhOTE5NDcwM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIkluc3Bl
Y3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5l
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmgiCiAj
aW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgpA
QCAtNzMsNyArNzQsNiBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0
aWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CkBAIC0zNjEsNiArMzYxLDExIEBAIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JEaXNjb25uZWN0UmVhc29uCiAjZW5kaWYKIH0KIAorZG91YmxlIEluc3BlY3RvclBhZ2VB
Z2VudDo6dGltZXN0YW1wKCkKK3sKKyAgICByZXR1cm4gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2VkVGltZSgp
OworfQorCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJikKIHsK
ICAgICBtX2VuYWJsZWQgPSB0cnVlOwpAQCAtNzUyLDEyICs3NTcsMTIgQEAgdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERP
TVdyYXBwZXJXb3IKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpkb21Db250ZW50RXZlbnRGaXJl
ZCgpCiB7CiAgICAgbV9pc0ZpcnN0TGF5b3V0QWZ0ZXJPbkxvYWQgPSB0cnVlOwotICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5kb21Db250ZW50RXZlbnRGaXJlZChjdXJyZW50VGltZSgpKTsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZG9tQ29udGVudEV2ZW50RmlyZWQodGltZXN0YW1wKCkp
OwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bG9hZEV2ZW50RmlyZWQoKQogewotICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sb2FkRXZlbnRGaXJlZChjdXJyZW50VGltZSgpKTsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9hZEV2ZW50RmlyZWQodGltZXN0YW1wKCkpOwogfQog
CiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
aAppbmRleCAxOGRjYzNmYTE5MGE3NWEyZDhjNTU1NWQzNDAzNWRmMThjMWI5MjhkLi4wNjYzN2Uy
ZDU1MDUwYWIyZGUzNTdmN2M0YWRhMjcxZWQ2NWE2OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC0xNjcsNiArMTY3LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHVwZGF0ZVRvdWNoRXZlbnRFbXVsYXRpb25JblBhZ2UoYm9vbCk7CiAjZW5k
aWYKIAorICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKKwogICAgIHN0YXRpYyBib29sIG1haW5SZXNv
dXJjZUNvbnRlbnQoRnJhbWUqLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0
KTsKICAgICBzdGF0aWMgYm9vbCBkYXRhQ29udGVudChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVu
Y29kZSwgU3RyaW5nKiByZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggNjFiYmQ4ZjE0ODEyMmRhOGU0MzJm
ZThhMWFiZmJkNTgzYjNjZjhkOC4uZGIxNTQ4MjdmZjA3NDEyZjMzMjhmYjA0ZmU5NDZlZjA3NjM1
YzNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkljb25Db250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFn
ZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50
aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCkBAIC02OSw3
ICs3MCw2IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1
ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKQEAgLTI3Niw2ICsyNzYsMTEgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fkluc3BlY3Rv
clJlc291cmNlQWdlbnQoKQogICAgIEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KCkpOwogfQogCitkb3VibGUgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6dGltZXN0YW1wKCkKK3sKKyAgICByZXR1cm4gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5lbGFwc2VkVGltZSgpOwor
fQorCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsK
ICAgICBpZiAocmVxdWVzdC5oaWRkZW5Gcm9tSW5zcGVjdG9yKCkpIHsKQEAgLTMyMCw3ICszMjUs
NyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TAogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBh
Z2U6OlJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291
cmNlVHlwZUpzb24odHlwZSk7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0
d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChs
b2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiBudWxscHRyKTsK
LSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBt
X3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVy
SWQobG9hZGVyKSwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgYnVpbGRPYmplY3RGb3JSZXNvdXJj
ZVJlcXVlc3QocmVxdWVzdCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRP
YmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UsIGxvYWRlciksIHR5cGUg
IT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlID8gJnJlc291cmNlVHlwZSA6IG51
bGxwdHIpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1
ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50
LT5sb2FkZXJJZChsb2FkZXIpLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBidWlsZE9iamVjdEZv
clJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgdGltZXN0YW1wKCksIGluaXRpYXRvck9iamVjdCwg
YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UsIGxvYWRlciks
IHR5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlID8gJnJlc291cmNlVHlw
ZSA6IG51bGxwdHIpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1hcmtSZXNv
dXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTM2NSw3ICszNzAsNyBA
QCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZQogICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVzcG9uc2VS
ZWNlaXZlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSks
IHJlc3BvbnNlKTsKICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlVHlwZShyZXF1ZXN0
SWQsIHR5cGUpOwogCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3BvbnNlUmVjZWl2ZWQo
cmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VB
Z2VudC0+bG9hZGVySWQobG9hZGVyKSwgY3VycmVudFRpbWUoKSwgSW5zcGVjdG9yUGFnZUFnZW50
OjpyZXNvdXJjZVR5cGVKc29uKHR5cGUpLCByZXNvdXJjZVJlc3BvbnNlKTsKKyAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+cmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5m
cmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpLCB0
aW1lc3RhbXAoKSwgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKHR5cGUpLCBy
ZXNvdXJjZVJlc3BvbnNlKTsKIAogICAgIC8vIElmIHdlIHJldmFsaWRhdGVkIHRoZSByZXNvdXJj
ZSBhbmQgZ290IE5vdCBtb2RpZmllZCwgc2VuZCBjb250ZW50IGxlbmd0aCBmb2xsb3dpbmcgZGlk
UmVjZWl2ZVJlc3BvbnNlCiAgICAgLy8gYXMgdGhlcmUgd2lsbCBiZSBubyBjYWxscyB0byBkaWRS
ZWNlaXZlRGF0YSBmcm9tIHRoZSBuZXR3b3JrIHN0YWNrLgpAQCAtMzkxLDcgKzM5Niw3IEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBjaGFyCiAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPm1heWJl
QWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgZGF0YSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCi0g
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIGN1cnJlbnRU
aW1lKCksIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+ZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wKCksIGRhdGFMZW5ndGgs
IGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpk
aWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgZG91YmxlIGZpbmlzaFRpbWUpCkBAIC00MTEsNyArNDE2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnQKICAgICAvLyBIb3dldmVyLCBhbGwgb3RoZXIgdGltZXMgcGFzc2VkIHRv
IHRoZSBJbnNwZWN0b3IgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4gTWl4aW5n
CiAgICAgLy8gdGltZXMgZnJvbSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGNhbiBjYXVzZSB0aGUgZmlu
aXNoIHRpbWUgdG8gYmUgZWFybGllciB0aGFuIHRoZSByZXNwb25zZQogICAgIC8vIHJlY2VpdmVk
IHRpbWUgZHVlIHRvIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBsYWcuCi0gICAgZmluaXNo
VGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgZmluaXNoVGltZSA9IHRpbWVzdGFtcCgpOwogCiAg
ICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkw7CiAgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5kYXRhKHJl
cXVlc3RJZCk7CkBAIC00MzcsNyArNDQyLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG8KICAg
ICB9CiAKICAgICBib29sIGNhbmNlbGVkID0gZXJyb3IuaXNDYW5jZWxsYXRpb24oKTsKLSAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9hZGluZ0ZhaWxlZChyZXF1ZXN0SWQsIGN1cnJlbnRUaW1l
KCksIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCksIGNhbmNlbGVkID8gJmNhbmNlbGVkIDog
bnVsbHB0cik7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmxvYWRpbmdGYWlsZWQocmVxdWVz
dElkLCB0aW1lc3RhbXAoKSwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSwgY2FuY2VsZWQg
PyAmY2FuY2VsZWQgOiBudWxscHRyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQpAQCAtNDU1LDcgKzQ2MCw3IEBAIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50
TG9hZGVyKiBsb2FkCiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6
SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXIt
PmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiBudWxscHRyKTsKIAotICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0U2VydmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVl
c3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGN1cnJlbnRU
aW1lKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShyZXNv
dXJjZSwgbG9hZGVyKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RTZXJ2ZWRG
cm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51cmwo
KS5zdHJpbmcoKSwgdGltZXN0YW1wKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JD
YWNoZWRSZXNvdXJjZShyZXNvdXJjZSwgbG9hZGVyKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6c2V0SW5pdGlhbFNjcmlwdENvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKQEAgLTU4Nyw3ICs1OTIsNyBAQCB2b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZQogewogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpXZWJTb2NrZXRSZXF1ZXN0PiByZXF1ZXN0T2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6TmV0d29yazo6V2ViU29ja2V0UmVxdWVzdDo6Y3JlYXRlKCkKICAgICAgICAgLnNldEhl
YWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKSk7
Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldFdpbGxTZW5kSGFuZHNoYWtlUmVx
dWVzdChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgY3VycmVudFRp
bWUoKSwgcmVxdWVzdE9iamVjdCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tl
dFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChp
ZGVudGlmaWVyKSwgdGltZXN0YW1wKCksIHJlcXVlc3RPYmplY3QpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQpAQCAtNTk2LDEyICs2MDEsMTIgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRS
ZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZwogICAgICAgICAu
c2V0U3RhdHVzKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpCiAgICAgICAgIC5zZXRTdGF0dXNU
ZXh0KHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpCiAgICAgICAgIC5zZXRIZWFkZXJzKGJ1aWxk
T2JqZWN0Rm9ySGVhZGVycyhyZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpKTsKLSAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VSZWNlaXZlZChJZGVu
dGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgcmVz
cG9uc2VPYmplY3QpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZVJlY2VpdmVkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZp
ZXIpLCB0aW1lc3RhbXAoKSwgcmVzcG9uc2VPYmplY3QpOwogfQogCiB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmRpZENsb3NlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikK
IHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0Q2xvc2VkKElkZW50aWZpZXJz
RmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpKTsKKyAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0Q2xvc2VkKElkZW50aWZpZXJzRmFjdG9yeTo6cmVx
dWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUmIGZyYW1lKQpAQCAtNjEwLDcgKzYxNSw3IEBAIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwKICAgICAgICAgLnNldE9wY29kZShmcmFtZS5vcENvZGUpCiAg
ICAgICAgIC5zZXRNYXNrKGZyYW1lLm1hc2tlZCkKICAgICAgICAgLnNldFBheWxvYWREYXRhKFN0
cmluZyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSk7Ci0gICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPndlYlNvY2tldEZyYW1lUmVjZWl2ZWQoSWRlbnRpZmllcnNGYWN0b3J5Ojpy
ZXF1ZXN0SWQoaWRlbnRpZmllciksIGN1cnJlbnRUaW1lKCksIGZyYW1lT2JqZWN0KTsKKyAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0RnJhbWVSZWNlaXZlZChJZGVudGlmaWVyc0Zh
Y3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgdGltZXN0YW1wKCksIGZyYW1lT2JqZWN0KTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRTZW5kV2ViU29ja2V0RnJhbWUo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCkBA
IC02MTksMTIgKzYyNCwxMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFNlbmRX
ZWJTb2NrZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbgogICAgICAgICAuc2V0
T3Bjb2RlKGZyYW1lLm9wQ29kZSkKICAgICAgICAgLnNldE1hc2soZnJhbWUubWFza2VkKQogICAg
ICAgICAuc2V0UGF5bG9hZERhdGEoU3RyaW5nKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRM
ZW5ndGgpKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0RnJhbWVTZW50KElk
ZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCBm
cmFtZU9iamVjdCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEZyYW1lU2Vu
dChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgdGltZXN0YW1wKCks
IGZyYW1lT2JqZWN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNl
aXZlV2ViU29ja2V0RnJhbWVFcnJvcih1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2Nr
ZXRGcmFtZUVycm9yKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBj
dXJyZW50VGltZSgpLCBlcnJvck1lc3NhZ2UpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53
ZWJTb2NrZXRGcmFtZUVycm9yKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZp
ZXIpLCB0aW1lc3RhbXAoKSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oCmluZGV4IDI4MzkyMGRmZTU2MzA3OTIxZDQ2NzQ5ZTYxMzQwMzA0Y2NmNWM2
YzIuLmI5NjQ0YWZjODBkY2VhN2ZhODMwODEyMmMwZmFhMTAzYTk5Yjc0N2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtMTM4
LDYgKzEzOCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbmFibGUoKTsKIAorICAg
IGRvdWJsZSB0aW1lc3RhbXAoKTsKKwogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdl
bnQ7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5k
RGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcAppbmRleCBhODZjYTg5OTA0NzlkM2U2NWRmN2ZiMDUyNTRkMGNkMjZj
NjJjYjhkLi5lMjg3MDA2NTQzZTM5NDM4NGVlYWQ1NjcyZjgxOTE3YTA3MTc4MWZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CkBAIC02MSwxMSArNjEsNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXZvaWQgVGltZWxpbmVUaW1lQ29udmVydGVyOjpyZXNldCgpCi17Ci0g
ICAgbV9zdGFydE9mZnNldCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gY3VycmVu
dFRpbWUoKTsKLX0KLQogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6fkluc3BlY3RvclRpbWVsaW5l
QWdlbnQoKQogewogfQpAQCAtMTE4LDcgKzExMyw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogICAgIGVs
c2UKICAgICAgICAgbV9tYXhDYWxsU3RhY2tEZXB0aCA9IDU7CiAKLSAgICBtX3RpbWVDb252ZXJ0
ZXIucmVzZXQoKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckVudmlyb25t
ZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCktPnN0YXJ0KCk7CiAKICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMtPnNldEluc3BlY3RvclRpbWVsaW5lQWdlbnQodGhpcyk7CiAKQEAgLTEzNiw2ICsx
MzEsOCBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RvcCgpCiAgICAg
aWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2goKS0+c3RvcCgp
OworCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50
KG51bGxwdHIpOwogCiAgICAgaWYgKG1fc2NyaXB0RGVidWdTZXJ2ZXIpCkBAIC0xNDksNiArMTQ2
LDExIEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdG9wKCkKICAgICAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlY29yZGluZ1N0b3BwZWQoKTsKIH0KIAorZG91Ymxl
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRpbWVzdGFtcCgpCit7CisgICAgcmV0dXJuIG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0
Y2goKS0+ZWxhcHNlZFRpbWUoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpz
ZXRQYWdlU2NyaXB0RGVidWdTZXJ2ZXIoUGFnZVNjcmlwdERlYnVnU2VydmVyKiBzY3JpcHREZWJ1
Z1NlcnZlcikKIHsKICAgICBBU1NFUlQoIW1fZW5hYmxlZCk7CkBAIC0xNTcsOSArMTU5LDkgQEAg
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRQYWdlU2NyaXB0RGVidWdTZXJ2ZXIoUGFn
ZVNjcmlwdERlYnVnU2VydmVyKiBzY3IKICAgICBtX3NjcmlwdERlYnVnU2VydmVyID0gc2NyaXB0
RGVidWdTZXJ2ZXI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFydFByb2ZpbGluZyhKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3N0YXRpYyBpbmxpbmUgdm9p
ZCBzdGFydFByb2ZpbGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRs
ZSwgUGFzc1JlZlB0cjxTdG9wd2F0Y2g+IHN0b3B3YXRjaCkKIHsKLSAgICBKU0M6OkxlZ2FjeVBy
b2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2ZpbGluZyhleGVjLCB0aXRsZSk7CisgICAgSlND
OjpMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmcoZXhlYywgdGl0bGUs
IHN0b3B3YXRjaCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+
IHN0b3BQcm9maWxpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUp
CkBAIC0xNjcsOSArMTY5LDkgQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEpTQzo6UHJvZmls
ZT4gc3RvcFByb2ZpbGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QKICAgICByZXR1cm4g
SlNDOjpMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RvcFByb2ZpbGluZyhleGVjLCB0aXRs
ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzdGFydFByb2ZpbGluZyhGcmFtZSogZnJhbWUs
IGNvbnN0IFN0cmluZyYgdGl0bGUpCitzdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRQcm9maWxpbmco
RnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFN0b3B3YXRjaD4g
c3RvcHdhdGNoKQogewotICAgIHN0YXJ0UHJvZmlsaW5nKHRvSlNET01XaW5kb3coZnJhbWUsIGRl
YnVnZ2VyV29ybGQoKSktPmdsb2JhbEV4ZWMoKSwgdGl0bGUpOworICAgIHN0YXJ0UHJvZmlsaW5n
KHRvSlNET01XaW5kb3coZnJhbWUsIGRlYnVnZ2VyV29ybGQoKSktPmdsb2JhbEV4ZWMoKSwgdGl0
bGUsIHN0b3B3YXRjaCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxKU0M6OlByb2Zp
bGU+IHN0b3BQcm9maWxpbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlKQpAQCAt
MTkzLDcgKzE5NSwxMSBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNv
bnNvbGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZwogICAgIGlmICghbV9lbmFi
bGVkICYmIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5pc0VtcHR5KCkpCiAgICAgICAg
IGludGVybmFsU3RhcnQoKTsKIAotICAgIHN0YXJ0UHJvZmlsaW5nKGV4ZWMsIHRpdGxlKTsKKyAg
ICAvLyBVc2UgYW4gaW5kZXBlbmRlbnQgc3RvcHdhdGNoIGZvciBjb25zb2xlLWluaXRpYXRlZCBw
cm9maWxpbmcsIHNpbmNlIHRoZSB1c2VyIHdpbGwgZXhwZWN0IGl0CisgICAgLy8gdG8gYmUgcmVs
YXRpdmUgdG8gd2hlbiB0aGVpciBjb21tYW5kIHdhcyBpc3N1ZWQuCisgICAgUmVmUHRyPFN0b3B3
YXRjaD4gcHJvZmlsZXJTdG9wd2F0Y2ggPSBTdG9wd2F0Y2g6OmNyZWF0ZSgpOworICAgIHByb2Zp
bGVyU3RvcHdhdGNoLT5zdGFydCgpOworICAgIHN0YXJ0UHJvZmlsaW5nKGV4ZWMsIHRpdGxlLCBw
cm9maWxlclN0b3B3YXRjaC5yZWxlYXNlKCkpOwogCiAgICAgbV9wZW5kaW5nQ29uc29sZVByb2Zp
bGVSZWNvcmRzLmFwcGVuZChjcmVhdGVSZWNvcmRFbnRyeShUaW1lbGluZVJlY29yZEZhY3Rvcnk6
OmNyZWF0ZUNvbnNvbGVQcm9maWxlRGF0YSh0aXRsZSksIFRpbWVsaW5lUmVjb3JkVHlwZTo6Q29u
c29sZVByb2ZpbGUsIHRydWUsIGZyYW1lRnJvbUV4ZWNTdGF0ZShleGVjKSkpOwogfQpAQCAtMjMy
LDcgKzIzOCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbENhbGxGdW5jdGlv
bihjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpCiAgICAgcHVzaEN1cnJlbnRSZWNv
cmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVGdW5jdGlvbkNhbGxEYXRhKHNjcmlwdE5h
bWUsIHNjcmlwdExpbmUpLCBUaW1lbGluZVJlY29yZFR5cGU6OkZ1bmN0aW9uQ2FsbCwgdHJ1ZSwg
ZnJhbWUpOwogCiAgICAgaWYgKGZyYW1lICYmICFtX2NhbGxTdGFja0RlcHRoKQotICAgICAgICBz
dGFydFByb2ZpbGluZyhmcmFtZSwgQVNDSUlMaXRlcmFsKCJUaW1lbGluZSBGdW5jdGlvbkNhbGwi
KSk7CisgICAgICAgIHN0YXJ0UHJvZmlsaW5nKGZyYW1lLCBBU0NJSUxpdGVyYWwoIlRpbWVsaW5l
IEZ1bmN0aW9uQ2FsbCIpLCBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckVudmlyb25t
ZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCkpOwogCiAgICAgKyttX2NhbGxTdGFja0RlcHRoOwog
fQpAQCAtNDA3LDcgKzQxMyw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbEV2
YWx1YXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlCiAKICAgICBpZiAo
ZnJhbWUgJiYgIW1fY2FsbFN0YWNrRGVwdGgpIHsKICAgICAgICAgKyttX2NhbGxTdGFja0RlcHRo
OwotICAgICAgICBzdGFydFByb2ZpbGluZyhmcmFtZSwgQVNDSUlMaXRlcmFsKCJUaW1lbGluZSBF
dmFsdWF0ZVNjcmlwdCIpKTsKKyAgICAgICAgc3RhcnRQcm9maWxpbmcoZnJhbWUsIEFTQ0lJTGl0
ZXJhbCgiVGltZWxpbmUgRXZhbHVhdGVTY3JpcHQiKSwgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpKTsKICAgICB9CiB9CiAK
QEAgLTc0NiwxMSArNzUyLDYgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpsb2NhbFRv
UGFnZVF1YWQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QKICAgICBxdWFkLT5z
ZXRQNChmcmFtZVZpZXcuY29udGVudHNUb1Jvb3RWaWV3KHJvdW5kZWRJbnRQb2ludChhYnNvbHV0
ZS5wNCgpKSkpOwogfQogCi1kb3VibGUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dGltZXN0YW1w
KCkKLXsKLSAgICByZXR1cm4gbV90aW1lQ29udmVydGVyLmZyb21Nb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOwotfQotCiBQYWdlKiBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpwYWdlKCkKIHsKICAgICByZXR1cm4gbV9wYWdlQWdlbnQgPyBt
X3BhZ2VBZ2VudC0+cGFnZSgpIDogbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IGE0Y2I0YzRlMmVmMjNlY2QzN2Qw
ZWYwNGRjMTUzYTk4NmM2NWY0YmUuLmI3Y2IyYWIxNTYxNTI3NjAwZWUyZjI5ZTg4MDYyNGFhZTRj
N2I5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9y
L1NjcmlwdERlYnVnTGlzdGVuZXIuaD4KKyNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTExMywx
OSArMTE0LDYgQEAgZW51bSBjbGFzcyBUaW1lbGluZVJlY29yZFR5cGUgewogICAgIFdlYlNvY2tl
dERlc3Ryb3kKIH07CiAKLWNsYXNzIFRpbWVsaW5lVGltZUNvbnZlcnRlciB7Ci1wdWJsaWM6Ci0g
ICAgVGltZWxpbmVUaW1lQ29udmVydGVyKCkKLSAgICAgICAgOiBtX3N0YXJ0T2Zmc2V0KDApCi0g
ICAgewotICAgIH0KLSAgICBkb3VibGUgZnJvbU1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZShk
b3VibGUgdGltZSkgY29uc3QgIHsgcmV0dXJuICh0aW1lIC0gbV9zdGFydE9mZnNldCkgKiAxMDAw
LjA7IH0KLSAgICB2b2lkIHJlc2V0KCk7Ci0KLXByaXZhdGU6Ci0gICAgZG91YmxlIG1fc3RhcnRP
ZmZzZXQ7Ci19OwotCiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50CiAgICAgOiBwdWJsaWMg
SW5zcGVjdG9yQWdlbnRCYXNlCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JUaW1l
bGluZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgpAQCAtMjE4LDcgKzIwNiw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgLy8gU2NyaXB0RGVidWdMaXN0ZW5lci4gVGhpcyBp
cyBvbmx5IHVzZWQgdG8gY3JlYXRlIHJlY29yZHMgZm9yIHByb2JlIHNhbXBsZXMuCisgICAgLy8g
U2NyaXB0RGVidWdMaXN0ZW5lcgogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShKU0M6
OlNvdXJjZUlELCBjb25zdCBTY3JpcHQmKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBpbnQsIGlu
dCwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNl
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpIG92ZXJyaWRlIHsgfQpAQCAtMjQ3LDYgKzIzNSw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhDYWxsU3Rh
Y2tEZXB0aCA9IG51bGxwdHIpOwogICAgIHZvaWQgaW50ZXJuYWxTdG9wKCk7CisgICAgZG91Ymxl
IHRpbWVzdGFtcCgpOwogCiAgICAgdm9pZCBzZW5kRXZlbnQoUGFzc1JlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4pOwogICAgIHZvaWQgYXBwZW5kUmVjb3JkKFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlwZSwgYm9vbCBj
YXB0dXJlQ2FsbFN0YWNrLCBGcmFtZSopOwpAQCAtMjY0LDE3ICsyNTMsMTMgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNsZWFyUmVjb3JkU3RhY2soKTsKIAogICAgIHZvaWQgbG9jYWxUb1BhZ2VRdWFk
KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IExheW91dFJlY3QmLCBGbG9hdFF1YWQqKTsKLSAg
ICBjb25zdCBUaW1lbGluZVRpbWVDb252ZXJ0ZXImIHRpbWVDb252ZXJ0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX3RpbWVDb252ZXJ0ZXI7IH0KLSAgICBkb3VibGUgdGltZXN0YW1wKCk7CiAgICAgUGFn
ZSogcGFnZSgpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXIqIG1fc2NyaXB0RGVidWdTZXJ2ZXI7Ci0gICAgVGltZWxpbmVU
aW1lQ29udmVydGVyIG1fdGltZUNvbnZlcnRlcjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3I6Okluc3BlY3RvclRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlz
cGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JUaW1lbGluZUJhY2tlbmRE
aXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAgIGRvdWJsZSBtX3RpbWVzdGFtcE9m
ZnNldDsKIAogICAgIFZlY3RvcjxUaW1lbGluZVJlY29yZEVudHJ5PiBtX3JlY29yZFN0YWNrOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rvcnku
Y3BwCmluZGV4IDNmZWM0MDBhYjEyMjQyNThkNzg4ZDI5ZDNlNjViOTVjMTZiYzIzMGMuLjE2Y2Iz
ODhkZjI4N2FmNDRhYTAwY2YzZGQ2ODczNzk4ZTYwOTMwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCkBAIC00Nyw3ICs0Nyw2
IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGlu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvUHJv
ZmlsZS5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNjAwZWE4M2NjNWYwODliODQxYjAxOTk3Yjg0
Yjc2YTUzMTY1NWNlZC4uOTAyYmE4MzVmNmJmZDA0N2RkNjcwNDVkN2Q5ZmZjNzU2YTc5YTdhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIldvcmtlclJ1bnRpbWVB
Z2VudC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4K
IAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIApAQCAtODEsNiArODIsNyBAQCBXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2Jh
bFNjb3BlJiB3b3JrZXJHbAogICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRp
bmdBZ2VudHM6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihz
dGQ6Om1ha2VfdW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVj
dGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9ydW50aW1lQWdlbnQobnVsbHB0cikK
KyAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiB7CiAgICAg
YXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4o
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksICZ3b3JrZXJHbG9iYWxTY29wZSk7CiAgICAg
bV9ydW50aW1lQWdlbnQgPSBydW50aW1lQWdlbnQuZ2V0KCk7CkBAIC0xNzEsNiArMTczLDExIEBA
IHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2FsbEluamVjdGVkU2NyaXB0RnVu
Y3Rpb24oSlNDOjpFeGVjU3RhdGUqIHNjCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDYWxsRnVuY3Rpb24oY29va2llLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KIAorUGFz
c1JlZlB0cjxTdG9wd2F0Y2g+IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmV4ZWN1dGlvblN0
b3B3YXRjaCgpCit7CisgICAgcmV0dXJuIG1fZXhlY3V0aW9uU3RvcHdhdGNoOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgK
aW5kZXggN2EyMWQ1N2VkZmRhNDJhOGNmMGRhY2YzNzJlNWIyNzQwZGY3NjEzOC4uMTE4OWQzN2Qx
ZmU2ZDc0MzE1ZjFkNzI2OTk5MDc3OGQzZjY4YzAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC03NCw2ICs3NCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbGxJbmplY3RlZFNjcmlwdEZ1bmN0
aW9uKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0
TGluZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbGxJbmplY3RlZFNjcmlwdEZ1
bmN0aW9uKEpTQzo6RXhlY1N0YXRlKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGZyb250
ZW5kSW5pdGlhbGl6ZWQoKSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V1RG
OjpTdG9wd2F0Y2g+IGV4ZWN1dGlvblN0b3B3YXRjaCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50YXRpb25Gb3JXb3JrZXJH
bG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSopOwpAQCAtODQsNiArODUsNyBAQCBwcml2YXRl
OgogICAgIFdvcmtlclJ1bnRpbWVBZ2VudCogbV9ydW50aW1lQWdlbnQ7CiAgICAgSW5zcGVjdG9y
OjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWw+IG1fZnJvbnRlbmRDaGFubmVsOworICAgIFJlZlB0cjxX
VEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7CiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAg
VmVjdG9yPEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSwgMj4gbV9pbmplY3RlZFNjcmlw
dEluc3RydW1lbnRhdGlvbkNvb2tpZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJl
c291cmNlTWFuYWdlci5qcwppbmRleCBiZDZiMGE4MWQ2MTY1NzgwODViMDllMTI0NTIxN2I5MTQx
ZTNlNTc5Li44ZjNmYTFkY2NiMWEwNDEyNWQwOTNmMWJkMTg4MWIzZTNmNDJkODFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFt
ZVJlc291cmNlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcwpAQCAtMTg0LDE4ICsxODQs
MTkgQEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgaWYgKHRoaXMuX3dhaXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKQog
ICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIHZhciBlbGFwc2VkVGltZSA9IFdlYkluc3Bl
Y3Rvci50aW1lbGluZU1hbmFnZXIuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7CiAgICAg
ICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJNYXBbcmVx
dWVzdElkZW50aWZpZXJdOwogICAgICAgICBpZiAocmVzb3VyY2UpIHsKICAgICAgICAgICAgIC8v
IFRoaXMgaXMgYW4gZXhpc3RpbmcgcmVxdWVzdCB3aGljaCBpcyBiZWluZyByZWRpcmVjdGVkLCB1
cGRhdGUgdGhlIHJlc291cmNlLgogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocmVkaXJlY3RS
ZXNwb25zZSk7Ci0gICAgICAgICAgICByZXNvdXJjZS51cGRhdGVGb3JSZWRpcmVjdFJlc3BvbnNl
KHJlcXVlc3QudXJsLCByZXF1ZXN0LmhlYWRlcnMsIHRpbWVzdGFtcCk7CisgICAgICAgICAgICBy
ZXNvdXJjZS51cGRhdGVGb3JSZWRpcmVjdFJlc3BvbnNlKHJlcXVlc3QudXJsLCByZXF1ZXN0Lmhl
YWRlcnMsIGVsYXBzZWRUaW1lKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIHZhciBpbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24gPSB0aGlzLl9pbml0aWF0b3JT
b3VyY2VDb2RlTG9jYXRpb25Gcm9tUGF5bG9hZChpbml0aWF0b3IpOwogCiAgICAgICAgIC8vIFRo
aXMgaXMgYSBuZXcgcmVxdWVzdCwgbWFrZSBhIG5ldyByZXNvdXJjZSBhbmQgYWRkIGl0IHRvIHRo
ZSByaWdodCBmcmFtZS4KLSAgICAgICAgcmVzb3VyY2UgPSB0aGlzLl9hZGROZXdSZXNvdXJjZVRv
RnJhbWUocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmll
ciwgcmVxdWVzdC51cmwsIHR5cGUsIHJlcXVlc3QubWV0aG9kLCByZXF1ZXN0LmhlYWRlcnMsIHJl
cXVlc3QucG9zdERhdGEsIHRpbWVzdGFtcCwgbnVsbCwgbnVsbCwgaW5pdGlhdG9yU291cmNlQ29k
ZUxvY2F0aW9uKTsKKyAgICAgICAgcmVzb3VyY2UgPSB0aGlzLl9hZGROZXdSZXNvdXJjZVRvRnJh
bWUocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmllciwg
cmVxdWVzdC51cmwsIHR5cGUsIHJlcXVlc3QubWV0aG9kLCByZXF1ZXN0LmhlYWRlcnMsIHJlcXVl
c3QucG9zdERhdGEsIGVsYXBzZWRUaW1lLCBudWxsLCBudWxsLCBpbml0aWF0b3JTb3VyY2VDb2Rl
TG9jYXRpb24pOwogCiAgICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgcmVzb3VyY2Ugd2l0aCB0aGUg
cmVxdWVzdElkZW50aWZpZXIgc28gaXQgY2FuIGJlIGZvdW5kIGluIGZ1dHVyZSBsb2FkaW5nIGV2
ZW50cy4KICAgICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcFtyZXF1ZXN0
SWRlbnRpZmllcl0gPSByZXNvdXJjZTsKQEAgLTIzMCwxMyArMjMxLDEzIEBAIFdlYkluc3BlY3Rv
ci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgY29uc29sZS5h
c3NlcnQoIShyZXF1ZXN0SWRlbnRpZmllciBpbiB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlm
aWVyTWFwKSk7CiAKKyAgICAgICAgdmFyIGVsYXBzZWRUaW1lID0gV2ViSW5zcGVjdG9yLnRpbWVs
aW5lTWFuYWdlci5jb21wdXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKICAgICAgICAgdmFyIGlu
aXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX2luaXRpYXRvclNvdXJjZUNvZGVMb2Nh
dGlvbkZyb21QYXlsb2FkKGluaXRpYXRvcik7Ci0KICAgICAgICAgdmFyIHJlc3BvbnNlID0gY2Fj
aGVkUmVzb3VyY2VQYXlsb2FkLnJlc3BvbnNlOwotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlz
Ll9hZGROZXdSZXNvdXJjZVRvRnJhbWUocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmll
ciwgbG9hZGVySWRlbnRpZmllciwgY2FjaGVkUmVzb3VyY2VQYXlsb2FkLnVybCwgY2FjaGVkUmVz
b3VyY2VQYXlsb2FkLnR5cGUsIG51bGwsIG51bGwsIHRpbWVzdGFtcCwgbnVsbCwgbnVsbCwgaW5p
dGlhdG9yU291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5f
YWRkTmV3UmVzb3VyY2VUb0ZyYW1lKHJlcXVlc3RJZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIs
IGxvYWRlcklkZW50aWZpZXIsIGNhY2hlZFJlc291cmNlUGF5bG9hZC51cmwsIGNhY2hlZFJlc291
cmNlUGF5bG9hZC50eXBlLCBudWxsLCBudWxsLCBlbGFwc2VkVGltZSwgbnVsbCwgbnVsbCwgaW5p
dGlhdG9yU291cmNlQ29kZUxvY2F0aW9uKTsKICAgICAgICAgcmVzb3VyY2UubWFya0FzQ2FjaGVk
KCk7Ci0gICAgICAgIHJlc291cmNlLnVwZGF0ZUZvclJlc3BvbnNlKGNhY2hlZFJlc291cmNlUGF5
bG9hZC51cmwsIHJlc3BvbnNlLm1pbWVUeXBlLCBjYWNoZWRSZXNvdXJjZVBheWxvYWQudHlwZSwg
cmVzcG9uc2UuaGVhZGVycywgcmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5zdGF0dXNUZXh0LCB0
aW1lc3RhbXApOwotICAgICAgICByZXNvdXJjZS5tYXJrQXNGaW5pc2hlZCh0aW1lc3RhbXApOwor
ICAgICAgICByZXNvdXJjZS51cGRhdGVGb3JSZXNwb25zZShjYWNoZWRSZXNvdXJjZVBheWxvYWQu
dXJsLCByZXNwb25zZS5taW1lVHlwZSwgY2FjaGVkUmVzb3VyY2VQYXlsb2FkLnR5cGUsIHJlc3Bv
bnNlLmhlYWRlcnMsIHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCwgZWxhcHNl
ZFRpbWUpOworICAgICAgICByZXNvdXJjZS5tYXJrQXNGaW5pc2hlZChlbGFwc2VkVGltZSk7CiAK
ICAgICAgICAgaWYgKGNhY2hlZFJlc291cmNlUGF5bG9hZC5zb3VyY2VNYXBVUkwpCiAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3Iuc291cmNlTWFwTWFuYWdlci5kb3dubG9hZFNvdXJjZU1hcChjYWNo
ZWRSZXNvdXJjZVBheWxvYWQuc291cmNlTWFwVVJMLCByZXNvdXJjZS51cmwsIHJlc291cmNlKTsK
QEAgLTI1Myw2ICsyNTQsNyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIucHJv
dG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291cmNl
VHJlZVBheWxvYWQpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgdmFyIGVsYXBzZWRU
aW1lID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5jb21wdXRlRWxhcHNlZFRpbWUodGlt
ZXN0YW1wKTsKICAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRl
bnRpZmllck1hcFtyZXF1ZXN0SWRlbnRpZmllcl07CiAKICAgICAgICAgLy8gV2UgbWlnaHQgbm90
IGhhdmUgYSByZXNvdXJjZSBpZiB0aGUgaW5zcGVjdG9yIHdhcyBvcGVuZWQgZHVyaW5nIHRoZSBw
YWdlIGxvYWQgKGFmdGVyIHJlc291cmNlUmVxdWVzdFdpbGxCZVNlbnQgaXMgY2FsbGVkKS4KQEAg
LTI3NSw3ICsyNzcsNyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIucHJvdG90
eXBlID0gewogICAgICAgICAvLyBJZiB3ZSBoYXZlbid0IGZvdW5kIGFuIGV4aXN0aW5nIFJlc291
cmNlIGJ5IG5vdywgdGhlbiBpdCBpcyBhIHJlc291cmNlIHRoYXQgd2FzIGxvYWRpbmcgd2hlbiB0
aGUgaW5zcGVjdG9yCiAgICAgICAgIC8vIG9wZW5lZCBhbmQgd2UganVzdCBtaXNzZWQgdGhlIHJl
c291cmNlUmVxdWVzdFdpbGxCZVNlbnQgZm9yIGl0LiBTbyBtYWtlIGEgbmV3IHJlc291cmNlIGFu
ZCBhZGQgaXQuCiAgICAgICAgIGlmICghcmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHJlc291cmNl
ID0gdGhpcy5fYWRkTmV3UmVzb3VyY2VUb0ZyYW1lKHJlcXVlc3RJZGVudGlmaWVyLCBmcmFtZUlk
ZW50aWZpZXIsIGxvYWRlcklkZW50aWZpZXIsIHJlc3BvbnNlLnVybCwgdHlwZSwgbnVsbCwgcmVz
cG9uc2UucmVxdWVzdEhlYWRlcnMsIHRpbWVzdGFtcCwgbnVsbCwgbnVsbCk7CisgICAgICAgICAg
ICByZXNvdXJjZSA9IHRoaXMuX2FkZE5ld1Jlc291cmNlVG9GcmFtZShyZXF1ZXN0SWRlbnRpZmll
ciwgZnJhbWVJZGVudGlmaWVyLCBsb2FkZXJJZGVudGlmaWVyLCByZXNwb25zZS51cmwsIHR5cGUs
IG51bGwsIHJlc3BvbnNlLnJlcXVlc3RIZWFkZXJzLCBlbGFwc2VkVGltZSwgbnVsbCwgbnVsbCk7
CiAKICAgICAgICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgcmVzb3VyY2Ugd2l0aCB0aGUgcmVxdWVz
dElkZW50aWZpZXIgc28gaXQgY2FuIGJlIGZvdW5kIGluIGZ1dHVyZSBsb2FkaW5nIGV2ZW50cy4K
ICAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJNYXBbcmVxdWVzdElk
ZW50aWZpZXJdID0gcmVzb3VyY2U7CkBAIC0yODQsNyArMjg2LDcgQEAgV2ViSW5zcGVjdG9yLkZy
YW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHJlc3BvbnNlLmZy
b21EaXNrQ2FjaGUpCiAgICAgICAgICAgICByZXNvdXJjZS5tYXJrQXNDYWNoZWQoKTsKIAotICAg
ICAgICByZXNvdXJjZS51cGRhdGVGb3JSZXNwb25zZShyZXNwb25zZS51cmwsIHJlc3BvbnNlLm1p
bWVUeXBlLCB0eXBlLCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNl
LnN0YXR1c1RleHQsIHRpbWVzdGFtcCk7CisgICAgICAgIHJlc291cmNlLnVwZGF0ZUZvclJlc3Bv
bnNlKHJlc3BvbnNlLnVybCwgcmVzcG9uc2UubWltZVR5cGUsIHR5cGUsIHJlc3BvbnNlLmhlYWRl
cnMsIHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCwgZWxhcHNlZFRpbWUpOwog
ICAgIH0sCiAKICAgICByZXNvdXJjZVJlcXVlc3REaWRSZWNlaXZlRGF0YTogZnVuY3Rpb24ocmVx
dWVzdElkZW50aWZpZXIsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoLCB0aW1lc3RhbXAp
CkBAIC0yOTYsNiArMjk4LDcgQEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB2YXIgcmVzb3VyY2Ug
PSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwW3JlcXVlc3RJZGVudGlmaWVyXTsK
KyAgICAgICAgdmFyIGVsYXBzZWRUaW1lID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5j
b21wdXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKIAogICAgICAgICAvLyBXZSBtaWdodCBub3Qg
aGF2ZSBhIHJlc291cmNlIGlmIHRoZSBpbnNwZWN0b3Igd2FzIG9wZW5lZCBkdXJpbmcgdGhlIHBh
Z2UgbG9hZCAoYWZ0ZXIgcmVzb3VyY2VSZXF1ZXN0V2lsbEJlU2VudCBpcyBjYWxsZWQpLgogICAg
ICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGFzc2VydCBpbiB0aGlzIGNhc2Ugc2luY2Ugd2UgZG8g
bGlrZWx5IGhhdmUgdGhlIHJlc291cmNlLCB2aWEgUGFnZUFnZW50LmdldFJlc291cmNlVHJlZS4g
VGhlIFJlc291cmNlCkBAIC0zMDMsNyArMzA2LDcgQEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3Vy
Y2VNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICByZXNvdXJjZS5pbmNyZWFzZVNpemUoZGF0YUxlbmd0aCwg
dGltZXN0YW1wKTsKKyAgICAgICAgcmVzb3VyY2UuaW5jcmVhc2VTaXplKGRhdGFMZW5ndGgsIGVs
YXBzZWRUaW1lKTsKIAogICAgICAgICBpZiAoZW5jb2RlZERhdGFMZW5ndGggIT09IC0xKQogICAg
ICAgICAgICAgcmVzb3VyY2UuaW5jcmVhc2VUcmFuc2ZlclNpemUoZW5jb2RlZERhdGFMZW5ndGgp
OwpAQCAtMzI0LDcgKzMyNyw4IEBAIFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgcmVzb3VyY2UubWFya0FzRmluaXNoZWQodGltZXN0YW1wKTsKKyAgICAgICAg
dmFyIGVsYXBzZWRUaW1lID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5jb21wdXRlRWxh
cHNlZFRpbWUodGltZXN0YW1wKTsKKyAgICAgICAgcmVzb3VyY2UubWFya0FzRmluaXNoZWQoZWxh
cHNlZFRpbWUpOwogCiAgICAgICAgIGlmIChzb3VyY2VNYXBVUkwpCiAgICAgICAgICAgICBXZWJJ
bnNwZWN0b3Iuc291cmNlTWFwTWFuYWdlci5kb3dubG9hZFNvdXJjZU1hcChzb3VyY2VNYXBVUkws
IHJlc291cmNlLnVybCwgcmVzb3VyY2UpOwpAQCAtMzQ3LDcgKzM1MSw4IEBAIFdlYkluc3BlY3Rv
ci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghcmVzb3Vy
Y2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgcmVzb3VyY2UubWFya0FzRmFpbGVk
KGNhbmNlbGVkLCB0aW1lc3RhbXApOworICAgICAgICB2YXIgZWxhcHNlZFRpbWUgPSBXZWJJbnNw
ZWN0b3IudGltZWxpbmVNYW5hZ2VyLmNvbXB1dGVFbGFwc2VkVGltZSh0aW1lc3RhbXApOworICAg
ICAgICByZXNvdXJjZS5tYXJrQXNGYWlsZWQoY2FuY2VsZWQsIGVsYXBzZWRUaW1lKTsKIAogICAg
ICAgICBpZiAocmVzb3VyY2UgPT09IHJlc291cmNlLnBhcmVudEZyYW1lLnByb3Zpc2lvbmFsTWFp
blJlc291cmNlKQogICAgICAgICAgICAgcmVzb3VyY2UucGFyZW50RnJhbWUuY2xlYXJQcm92aXNp
b25hbExvYWQoKTsKQEAgLTM4Miw3ICszODcsNyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJj
ZU1hbmFnZXIucHJvdG90eXBlID0gewogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2FkZE5ld1Jl
c291cmNlVG9GcmFtZTogZnVuY3Rpb24ocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmll
ciwgbG9hZGVySWRlbnRpZmllciwgdXJsLCB0eXBlLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVh
ZGVycywgcmVxdWVzdERhdGEsIHRpbWVzdGFtcCwgZnJhbWVOYW1lLCBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBpbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24pCisgICAgX2FkZE5ld1Jlc291cmNlVG9G
cmFtZTogZnVuY3Rpb24ocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVy
SWRlbnRpZmllciwgdXJsLCB0eXBlLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVx
dWVzdERhdGEsIGVsYXBzZWRUaW1lLCBmcmFtZU5hbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGlu
aXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCF0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCk7CiAKQEAgLTM5
NiwxMiArNDAxLDEyIEBAIFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBlbHNlIGlmIChmcmFtZS5wcm92aXNpb25hbE1haW5SZXNvdXJj
ZSAmJiBmcmFtZS5wcm92aXNpb25hbE1haW5SZXNvdXJjZS51cmwgPT09IHVybCAmJiBmcmFtZS5w
cm92aXNpb25hbExvYWRlcklkZW50aWZpZXIgPT09IGxvYWRlcklkZW50aWZpZXIpCiAgICAgICAg
ICAgICAgICAgcmVzb3VyY2UgPSBmcmFtZS5wcm92aXNpb25hbE1haW5SZXNvdXJjZTsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZSh1cmwsIG51bGwsIHR5cGUsIGxvYWRlcklkZW50aWZpZXIsIHJlcXVlc3RJZGVu
dGlmaWVyLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdERhdGEsIHRpbWVz
dGFtcCwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICByZXNv
dXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UodXJsLCBudWxsLCB0eXBlLCBsb2FkZXJJ
ZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEhlYWRl
cnMsIHJlcXVlc3REYXRhLCBlbGFwc2VkVGltZSwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9u
KTsKICAgICAgICAgICAgICAgICB0aGlzLl9hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWUsIHJlc291
cmNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRo
aXMgaXMgYSBuZXcgcmVxdWVzdCBmb3IgYSBuZXcgZnJhbWUsIHdoaWNoIGlzIGFsd2F5cyB0aGUg
bWFpbiByZXNvdXJjZS4KLSAgICAgICAgICAgIHJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZSh1cmwsIG51bGwsIHR5cGUsIGxvYWRlcklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlm
aWVyLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdERhdGEsIHRpbWVzdGFt
cCwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgICAgIHJlc291cmNlID0g
bmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZSh1cmwsIG51bGwsIHR5cGUsIGxvYWRlcklkZW50aWZp
ZXIsIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVx
dWVzdERhdGEsIGVsYXBzZWRUaW1lLCBpbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24pOwogICAg
ICAgICAgICAgZnJhbWUgPSBuZXcgV2ViSW5zcGVjdG9yLkZyYW1lKGZyYW1lSWRlbnRpZmllciwg
ZnJhbWVOYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBsb2FkZXJJZGVudGlmaWVyLCByZXNvdXJj
ZSk7CiAgICAgICAgICAgICB0aGlzLl9mcmFtZUlkZW50aWZpZXJNYXBbZnJhbWUuaWRdID0gZnJh
bWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL1Byb2JlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL1Byb2JlTWFuYWdlci5qcwppbmRleCA3ZTI4OWMxZDhjNGNiMGVj
ZWY2ZTg2MTdkY2E0NTQyZjY4MDcyODgwLi5lNjdjZTU5YWZmNmQ2ODMyYTU2NzgyNmM2NmI5MWIy
NmRjZjA2ODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9Qcm9iZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUHJvYmVNYW5hZ2VyLmpzCkBAIC03NSw3ICs3NSw4
IEBAIFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fcHJvYmVzQnlJZGVudGlmaWVyLmhhcyhzYW1wbGUucHJv
YmVJZCksICJVbmtub3duIHByb2JlIGlkZW50aWZpZXIgc3BlY2lmaWVkIGZvciBzYW1wbGU6ICIs
IHNhbXBsZSk7CiAgICAgICAgIHZhciBwcm9iZSA9IHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmllci5n
ZXQoc2FtcGxlLnByb2JlSWQpOwotICAgICAgICBwcm9iZS5hZGRTYW1wbGUobmV3IFdlYkluc3Bl
Y3Rvci5Qcm9iZVNhbXBsZShzYW1wbGUuc2FtcGxlSWQsIHNhbXBsZS5iYXRjaElkLCBzYW1wbGUu
dGltZXN0YW1wLCBzYW1wbGUucGF5bG9hZCkpOworICAgICAgICB2YXIgZWxhcHNlZFRpbWUgPSBX
ZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmNvbXB1dGVFbGFwc2VkVGltZShzYW1wbGUudGlt
ZXN0YW1wKTsKKyAgICAgICAgcHJvYmUuYWRkU2FtcGxlKG5ldyBXZWJJbnNwZWN0b3IuUHJvYmVT
YW1wbGUoc2FtcGxlLnNhbXBsZUlkLCBzYW1wbGUuYmF0Y2hJZCwgZWxhcHNlZFRpbWUsIHNhbXBs
ZS5wYXlsb2FkKSk7CiAgICAgfSwKIAogICAgIC8vIFByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Rp
bWVsaW5lTWFuYWdlci5qcwppbmRleCA5MDIxMmUxNDI1NjhjYjZiM2JhYTQxOWIxYmY3MDNhYzg1
ZGVlODg2Li4xOTQ2MGNiZWFlYTNjMmVlOTlhYzQ0MzRiYjQxMmFlZTI4NGUwNDE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1l
bGluZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCkBAIC0zNSw2ICszNSw4IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1hbmFnZXIgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fYWN0aXZlUmVjb3Jk
aW5nID0gbnVsbDsKICAgICB0aGlzLl9pc0NhcHR1cmluZyA9IGZhbHNlOwogCisgICAgLy8gRm9y
IGxlZ2FjeSBiYWNrZW5kcywgd2UgY29tcHV0ZSB0aGUgZWxhcHNlZCB0aW1lIG9mIHJlY29yZHMg
cmVsYXRpdmUgdG8gdGhpcyB0aW1lc3RhbXAuCisgICAgdGhpcy5fbGVnYWN5Rmlyc3RSZWNvcmRl
ZFRpbWVzdGFtcCA9IE5hTjsKICAgICB0aGlzLl9uZXh0UmVjb3JkaW5nSWRlbnRpZmllciA9IDE7
CiAKICAgICB0aGlzLl9ib3VuZFN0b3BDYXB0dXJpbmcgPSB0aGlzLnN0b3BDYXB0dXJpbmcuYmlu
ZCh0aGlzKTsKQEAgLTU1LDYgKzU3LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5F
dmVudCA9IHsKICAgICBDYXB0dXJpbmdTdG9wcGVkOiAidGltZWxpbmUtbWFuYWdlci1jYXB0dXJp
bmctc3RvcHBlZCIKIH07CiAKK1dlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuVGltZXN0YW1w
VGhyZXNob2xkRm9yTGVnYWN5UmVjb3JkQ29udmVyc2lvbiA9IDI4ODAwMDAwOyAvLyBEYXRlLnBh
cnNlKCJKYW4gMSwgMTk3MCIpCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLk1heGltdW1B
dXRvUmVjb3JkRHVyYXRpb24gPSA5MDAwMDsgLy8gOTAgc2Vjb25kcwogV2ViSW5zcGVjdG9yLlRp
bWVsaW5lTWFuYWdlci5NYXhpbXVtQXV0b1JlY29yZER1cmF0aW9uQWZ0ZXJMb2FkRXZlbnQgPSAx
MDAwMDsgLy8gMTAgc2Vjb25kcwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5EZWFkVGlt
ZVJlcXVpcmVkVG9TdG9wQXV0b1JlY29yZGluZ0Vhcmx5ID0gMjAwMDsgLy8gMiBzZWNvbmRzCkBA
IC0xMjEsNiArMTI0LDI0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl9hY3RpdmVSZWNvcmRpbmcgPSBudWxsOwogICAgIH0sCiAKKyAg
ICBjb21wdXRlRWxhcHNlZFRpbWU6IGZ1bmN0aW9uKHRpbWVzdGFtcCkKKyAgICB7CisgICAgICAg
IGlmICghdGltZXN0YW1wIHx8IGlzTmFOKHRpbWVzdGFtcCkpCisgICAgICAgICAgICByZXR1cm4g
TmFOOworCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUzgpOiBvbGQgYmFja2VuZHMgc2Vu
ZCB0aW1lc3RhbXBzIChtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoKSwgcmF0aGVyCisgICAg
ICAgIC8vIHRoYW4gc2Vjb25kcyBlbGFwc2VkIHNpbmNlIHRpbWVsaW5lIGNhcHR1cmluZyBzdGFy
dGVkLiBXZSBhcHByb3hpbWF0ZSB0aGUgbGF0dGVyIGJ5CisgICAgICAgIC8vIHN1YnRyYWN0aW5n
IHRoZSBzdGFydCB0aW1lc3RhbXAsIGFzIG9sZCB2ZXJzaW9ucyBkaWQgbm90IHVzZSBtb25vdG9u
aWMgdGltZXMuCisgICAgICAgIGlmIChpc05hTih0aGlzLl9sZWdhY3lGaXJzdFJlY29yZGVkVGlt
ZXN0YW1wKSkKKyAgICAgICAgICAgIHRoaXMuX2xlZ2FjeUZpcnN0UmVjb3JkZWRUaW1lc3RhbXAg
PSB0aW1lc3RhbXA7CisKKyAgICAgICAgLy8gSWYgdGhlIHJlY29yZCdzIHN0YXJ0IHRpbWUgc2Vt
cyB1bnJlYXNvbmFibHkgbGFyZ2UsIHRyZWF0IGl0IGFzIGEgbGVnYWN5IHRpbWVzdGFtcC4KKyAg
ICAgICAgaWYgKHRpbWVzdGFtcCA+IFdlYkluc3BlY3Rvci5UaW1lc3RhbXBUaHJlc2hvbGRGb3JM
ZWdhY3lSZWNvcmRDb252ZXJzaW9uKQorICAgICAgICAgICAgcmV0dXJuICh0aW1lc3RhbXAgLSB0
aGlzLl9sZWdhY3lGaXJzdFJlY29yZGVkVGltZXN0YW1wKSAvIDEwMDA7CisKKyAgICAgICAgcmV0
dXJuIHRpbWVzdGFtcDsKKyAgICB9LAorCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBjYXB0dXJp
bmdTdGFydGVkOiBmdW5jdGlvbigpCkBAIC0xNjMsMTAgKzE4NCw4IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZU1hbmFnZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NS
ZWNvcmQocmVjb3JkUGF5bG9hZCwgcGFyZW50UmVjb3JkUGF5bG9hZCkKICAgICAgICAgewotICAg
ICAgICAgICAgLy8gQ29udmVydCB0aGUgdGltZXN0YW1wcyB0byBzZWNvbmRzIHRvIG1hdGNoIHRo
ZSByZXNvdXJjZSB0aW1lc3RhbXBzLgotICAgICAgICAgICAgdmFyIHN0YXJ0VGltZSA9IHJlY29y
ZFBheWxvYWQuc3RhcnRUaW1lIC8gMTAwMDsKLSAgICAgICAgICAgIHZhciBlbmRUaW1lID0gcmVj
b3JkUGF5bG9hZC5lbmRUaW1lIC8gMTAwMDsKLQorICAgICAgICAgICAgdmFyIHN0YXJ0VGltZSA9
IHRoaXMuY29tcHV0ZUVsYXBzZWRUaW1lKHJlY29yZFBheWxvYWQuc3RhcnRUaW1lKTsKKyAgICAg
ICAgICAgIHZhciBlbmRUaW1lID0gdGhpcy5jb21wdXRlRWxhcHNlZFRpbWUocmVjb3JkUGF5bG9h
ZC5lbmRUaW1lKTsKICAgICAgICAgICAgIHZhciBjYWxsRnJhbWVzID0gdGhpcy5fY2FsbEZyYW1l
c0Zyb21QYXlsb2FkKHJlY29yZFBheWxvYWQuc3RhY2tUcmFjZSk7CiAKICAgICAgICAgICAgIHZh
ciBzaWduaWZpY2FudENhbGxGcmFtZSA9IG51bGw7CkBAIC0zOTMsNyArNDEyLDcgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgcGFnZURpZExvYWQ6IGZ1
bmN0aW9uKHRpbWVzdGFtcCkKICAgICB7CiAgICAgICAgIGlmIChpc05hTihXZWJJbnNwZWN0b3Iu
ZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLmxvYWRFdmVudFRpbWVzdGFtcCkpCi0gICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLm1hcmtM
b2FkRXZlbnQodGltZXN0YW1wKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291
cmNlTWFuYWdlci5tYWluRnJhbWUubWFya0xvYWRFdmVudCh0aGlzLmNvbXB1dGVFbGFwc2VkVGlt
ZSh0aW1lc3RhbXApKTsKICAgICB9LAogCiAgICAgLy8gUHJpdmF0ZQpAQCAtNDE3LDYgKzQzNiw3
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAob2xkUmVjb3JkaW5nKQogICAgICAgICAgICAgb2xkUmVjb3JkaW5nLnVubG9hZGVkKCk7CiAK
KyAgICAgICAgdGhpcy5fbGVnYWN5Rmlyc3RSZWNvcmRlZFRpbWVzdGFtcCA9IE5hTjsKICAgICAg
ICAgdGhpcy5fYWN0aXZlUmVjb3JkaW5nID0gbmV3UmVjb3JkaW5nOwogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50
LlJlY29yZGluZ0xvYWRlZCwge29sZFJlY29yZGluZzogb2xkUmVjb3JkaW5nfSk7CiAgICAgfSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Q
cm9iZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9i
ZS5qcwppbmRleCAyN2IwOWIwNjg5OTczYjUzZDQwNzFhYTI4MjMxYjM1MDE4YTMyMzIxLi5iNzhi
NjBhYTBmZTk4NjY3ZjhlMmQ3ZGVhNjhjNmM0MDMyMzQ3MzJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmUuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlLmpzCkBAIC0yNCwxMSAr
MjQsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlByb2JlU2FtcGxl
ID0gZnVuY3Rpb24oc2FtcGxlSWQsIGJhdGNoSWQsIHRpbWVzdGFtcCwgcGF5bG9hZCkKK1dlYklu
c3BlY3Rvci5Qcm9iZVNhbXBsZSA9IGZ1bmN0aW9uKHNhbXBsZUlkLCBiYXRjaElkLCBlbGFwc2Vk
VGltZSwgcGF5bG9hZCkKIHsKICAgICB0aGlzLnNhbXBsZUlkID0gc2FtcGxlSWQ7CiAgICAgdGhp
cy5iYXRjaElkID0gYmF0Y2hJZDsKLSAgICB0aGlzLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKKyAg
ICB0aGlzLnRpbWVzdGFtcCA9IGVsYXBzZWRUaW1lOwogICAgIHRoaXMub2JqZWN0ID0gV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwYXlsb2FkKTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5q
cwppbmRleCA3YTI0NWMzOWRjNmMwMTk3MGFlNTQ0MTYxN2ZiZThmMGQ5OGEwZDEzLi5hMDU0NjBl
YzM4NGRiNDFhMDQwODAzZDE2NGM0ZTgzZmQyNzZhOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCkBAIC00NTks
NyArNDU5LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
cmV0dXJuIG51bGw7CiAgICAgfSwKIAotICAgIHVwZGF0ZUZvclJlZGlyZWN0UmVzcG9uc2U6IGZ1
bmN0aW9uKHVybCwgcmVxdWVzdEhlYWRlcnMsIHRpbWVzdGFtcCkKKyAgICB1cGRhdGVGb3JSZWRp
cmVjdFJlc3BvbnNlOiBmdW5jdGlvbih1cmwsIHJlcXVlc3RIZWFkZXJzLCBlbGFwc2VkVGltZSkK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9maW5pc2hlZCk7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9mYWlsZWQpOwpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fdXJsID0gdXJs
OwogICAgICAgICB0aGlzLl9yZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3RIZWFkZXJzIHx8IHt9Owot
ICAgICAgICB0aGlzLl9sYXN0UmVkaXJlY3RSZWNlaXZlZFRpbWVzdGFtcCA9IHRpbWVzdGFtcCB8
fCBOYU47CisgICAgICAgIHRoaXMuX2xhc3RSZWRpcmVjdFJlY2VpdmVkVGltZXN0YW1wID0gZWxh
cHNlZFRpbWUgfHwgTmFOOwogCiAgICAgICAgIGlmIChvbGRVUkwgIT09IHVybCkgewogICAgICAg
ICAgICAgLy8gRGVsZXRlIHRoZSBVUkwgY29tcG9uZW50cyBzbyB0aGUgVVJMIGlzIHJlLXBhcnNl
ZCB0aGUgbmV4dCB0aW1lIGl0IGlzIHJlcXVlc3RlZC4KQEAgLTQ4Miw3ICs0ODIsNyBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVGltZXN0YW1wc0RpZENo
YW5nZSk7CiAgICAgfSwKIAotICAgIHVwZGF0ZUZvclJlc3BvbnNlOiBmdW5jdGlvbih1cmwsIG1p
bWVUeXBlLCB0eXBlLCByZXNwb25zZUhlYWRlcnMsIHN0YXR1c0NvZGUsIHN0YXR1c1RleHQsIHRp
bWVzdGFtcCkKKyAgICB1cGRhdGVGb3JSZXNwb25zZTogZnVuY3Rpb24odXJsLCBtaW1lVHlwZSwg
dHlwZSwgcmVzcG9uc2VIZWFkZXJzLCBzdGF0dXNDb2RlLCBzdGF0dXNUZXh0LCBlbGFwc2VkVGlt
ZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9maW5pc2hlZCk7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9mYWlsZWQpOwpAQCAtNTAxLDcgKzUwMSw3IEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3N0YXR1c0Nv
ZGUgPSBzdGF0dXNDb2RlOwogICAgICAgICB0aGlzLl9zdGF0dXNUZXh0ID0gc3RhdHVzVGV4dDsK
ICAgICAgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzID0gcmVzcG9uc2VIZWFkZXJzIHx8IHt9Owot
ICAgICAgICB0aGlzLl9yZXNwb25zZVJlY2VpdmVkVGltZXN0YW1wID0gdGltZXN0YW1wIHx8IE5h
TjsKKyAgICAgICAgdGhpcy5fcmVzcG9uc2VSZWNlaXZlZFRpbWVzdGFtcCA9IGVsYXBzZWRUaW1l
IHx8IE5hTjsKIAogICAgICAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnNTaXplID0gU3RyaW5nKHRo
aXMuX3N0YXR1c0NvZGUpLmxlbmd0aCArIHRoaXMuX3N0YXR1c1RleHQubGVuZ3RoICsgMTI7IC8v
IEV4dHJhIGxlbmd0aCBpcyBmb3IgIkhUVFAvMS4xICIsICIgIiwgYW5kICJcclxuIi4KICAgICAg
ICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLl9yZXNwb25zZUhlYWRlcnMpCkBAIC01NjMsNyArNTYz
LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0sCiAKLSAgICBpbmNyZWFzZVNpemU6IGZ1bmN0aW9uKGRhdGFMZW5ndGgs
IHRpbWVzdGFtcCkKKyAgICBpbmNyZWFzZVNpemU6IGZ1bmN0aW9uKGRhdGFMZW5ndGgsIGVsYXBz
ZWRUaW1lKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YUxlbmd0aCA+PSAwKTsK
IApAQCAtNTc0LDcgKzU3NCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgdGhpcy5fc2l6ZSArPSBkYXRhTGVuZ3RoOwogCi0gICAgICAgIHRoaXMuX2xh
c3REYXRhUmVjZWl2ZWRUaW1lc3RhbXAgPSB0aW1lc3RhbXAgfHwgTmFOOworICAgICAgICB0aGlz
Ll9sYXN0RGF0YVJlY2VpdmVkVGltZXN0YW1wID0gZWxhcHNlZFRpbWUgfHwgTmFOOwogCiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5F
dmVudC5TaXplRGlkQ2hhbmdlLCB7cHJldmlvdXNTaXplOiBwcmV2aW91c1NpemV9KTsKIApAQCAt
NjA1LDEzICs2MDUsMTMgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5FdmVudC5UcmFuc2ZlclNpemVEaWRDaGFuZ2UpOwogICAgIH0sCiAKLSAgICBtYXJrQXNG
aW5pc2hlZDogZnVuY3Rpb24odGltZXN0YW1wKQorICAgIG1hcmtBc0ZpbmlzaGVkOiBmdW5jdGlv
bihlbGFwc2VkVGltZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9mYWls
ZWQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fY2FuY2VsZWQpOwogCiAgICAgICAg
IHRoaXMuX2ZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5fZmluaXNoZWRPckZhaWxlZFRp
bWVzdGFtcCA9IHRpbWVzdGFtcCB8fCBOYU47CisgICAgICAgIHRoaXMuX2ZpbmlzaGVkT3JGYWls
ZWRUaW1lc3RhbXAgPSBlbGFwc2VkVGltZSB8fCBOYU47CiAKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LkxvYWRpbmdEaWRG
aW5pc2gpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuRXZlbnQuVGltZXN0YW1wc0RpZENoYW5nZSk7CkBAIC02MjAsMTMgKzYyMCwx
MyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhp
cy5yZXF1ZXN0Q29udGVudEZyb21CYWNrZW5kSWZOZWVkZWQoKTsKICAgICB9LAogCi0gICAgbWFy
a0FzRmFpbGVkOiBmdW5jdGlvbihjYW5jZWxlZCwgdGltZXN0YW1wKQorICAgIG1hcmtBc0ZhaWxl
ZDogZnVuY3Rpb24oY2FuY2VsZWQsIGVsYXBzZWRUaW1lKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoIXRoaXMuX2ZpbmlzaGVkKTsKIAogICAgICAgICB0aGlzLl9mYWlsZWQgPSB0cnVl
OwogICAgICAgICB0aGlzLl9jYW5jZWxlZCA9IGNhbmNlbGVkOwotICAgICAgICB0aGlzLl9maW5p
c2hlZE9yRmFpbGVkVGltZXN0YW1wID0gdGltZXN0YW1wIHx8IE5hTjsKKyAgICAgICAgdGhpcy5f
ZmluaXNoZWRPckZhaWxlZFRpbWVzdGFtcCA9IGVsYXBzZWRUaW1lIHx8IE5hTjsKIAogICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZl
bnQuTG9hZGluZ0RpZEZhaWwpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVGltZXN0YW1wc0RpZENoYW5nZSk7CkBAIC02
MzUsNyArNjM1LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5zZXJ2aWNlUGVuZGluZ0NvbnRlbnRSZXF1ZXN0cyh0cnVlKTsKICAgICB9LAogCi0g
ICAgcmV2ZXJ0TWFya0FzRmluaXNoZWQ6IGZ1bmN0aW9uKHRpbWVzdGFtcCkKKyAgICByZXZlcnRN
YXJrQXNGaW5pc2hlZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
IXRoaXMuX2ZhaWxlZCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9jYW5jZWxlZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
aW1lbGluZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVGltZWxpbmVDb250ZW50Vmlldy5qcwppbmRleCBiZTRhNGU3YTg4NDEyYmM0MDcz
MzhlNTE5YjA1YmZjOTI1YjRlMjBkLi5hMjAzZjJlMzFmYjM5OWNlYjdlZDA5NGEwOWYzYjM1ZWMw
YzlmMDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UaW1lbGluZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lQ29udGVudFZpZXcuanMKQEAgLTk4LDYgKzk4LDkg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZWNvcmRpbmcp
CiAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RhcnRlZCwgdGhpcy5fY2Fw
dHVyaW5nU3RhcnRlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVy
aW5nU3RvcHBlZCwgdGhpcy5fY2FwdHVyaW5nU3RvcHBlZCwgdGhpcyk7CiAKKyAgICBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHRoaXMuX2RlYnVnZ2VyUGF1c2VkLCB0aGlzKTsKKyAg
ICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5SZXN1bWVkLCB0aGlzLl9kZWJ1Z2dlclJlc3VtZWQs
IHRoaXMpOworCiAgICAgdGhpcy5zaG93T3ZlcnZpZXdUaW1lbGluZVZpZXcoKTsKIH07CiAKQEAg
LTQwNyw2ICs0MTAsMjIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZpZXcucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9zdG9wVXBkYXRpbmdDdXJyZW50VGltZSgpOwogICAgIH0s
CiAKKyAgICBfZGVidWdnZXJQYXVzZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Npb25TdGF0ZSA9PT0gV2ViSW5zcGVj
dG9yLlJlcGxheU1hbmFnZXIuU2Vzc2lvblN0YXRlLlJlcGxheWluZykKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLl9zdG9wVXBkYXRpbmdDdXJyZW50VGltZSgpOworICAgIH0s
CisKKyAgICBfZGVidWdnZXJSZXN1bWVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IGlmIChXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZXNzaW9uU3RhdGUgPT09IFdlYkluc3Bl
Y3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25TdGF0ZS5SZXBsYXlpbmcpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGhpcy5fc3RhcnRVcGRhdGluZ0N1cnJlbnRUaW1lKCk7CisgICAg
fSwKKwogICAgIF9yZWNvcmRpbmdUaW1lc1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl93YWl0aW5nVG9SZXNldEN1cnJlbnRUaW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240077</attachid>
            <date>2014-10-18 17:34:27 -0700</date>
            <delta_ts>2014-10-20 11:56:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136351-20141018173248.patch</filename>
            <type>text/plain</type>
            <size>89090</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YTAxOGE0YWU5ODdlYmQ1OGIxNTIzZTZiYTA0NDhjOTQ3NTc3ODZjLi4yNTM4OGYxY2YwOTg0OTJh
ZTE1NTA1OWYwYzY0NTRmMmE5NDQ0YWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1NCBAQAogMjAxNC0xMC0xOCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291
bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBOb3cgdGhhdCB3ZSBoYXZlIGEg
c3RvcHdhdGNoIHRvIHByb3ZpZGUgcGF1c2UtYXdhcmUgdGltaW5nIGRhdGEsIHdlIGNhbiByZW1v
dmUgdGhlCisgICAgICAgIHByb2ZpbGVyJ3MgaGFuZGxpbmcgb2YgZGVidWdnZXIgcGF1c2UvY29u
dGludWUgY2FsbGJhY2tzLiBUaGUgZGVidWdnZXIgYWdlbnQgYWNjb3VudHMKKyAgICAgICAgZm9y
IHN1c3BlbmRlZCBleGVjdXRpb24gYnkgcGF1c2luZyBhbmQgcmVzdW1pbmcgdGhlIHN0b3B3YXRj
aC4KKworICAgICAgICAqIEFQSS9KU1Byb2ZpbGVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChKU1N0
YXJ0UHJvZmlsaW5nKTogVXNlIGEgZnJlc2ggc3RvcHdhdGNoIHdoZW4gcHJvZmlsaW5nIGZyb20g
dGhlIEpTQyBBUEkuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpleGVjdXRpb25TdG9wd2F0Y2gp
OgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAo
SW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlUGF1c2UpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ29udGludWUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAg
ICAgICAqIHByb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGVnYWN5
UHJvZmlsZXI6OnByb2ZpbGVyKTogVXNlIG51bGxwdHIuCisgICAgICAgIChKU0M6OkxlZ2FjeVBy
b2ZpbGVyOjpzdGFydFByb2ZpbGluZyk6IEhhbmQgb2ZmIGEgc3RvcHdhdGNoIHRvIHRoZSBwcm9m
aWxlIGdlbmVyYXRvci4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OnN0b3BQcm9maWxp
bmcpOiBVc2UgbnVsbHB0ci4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OmRpZFBhdXNl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TGVnYWN5UHJvZmlsZXI6OmRpZENvbnRpbnVlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwcm9maWxlci9MZWdhY3lQcm9maWxlci5oOgorICAgICAgICAq
IHByb2ZpbGVyL1Byb2ZpbGUuY3BwOiBUaGUgcm9vdCBub2RlIHNob3VsZCBhbHdheXMgaGF2ZSBh
IHN0YXJ0IHRpbWUgb2YgMC4wLgorICAgICAgICAoSlNDOjpQcm9maWxlOjpQcm9maWxlKToKKyAg
ICAgICAgKiBwcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNwcDogUmVtb3ZlIGRlYnVnZ2VyIHBh
dXNlL2NvbnRpbnVlIGNhbGxiYWNrcyBhbmQgdGhlCisgICAgICAgIHRpbWVzdGFtcCBtZW1iZXIg
dGhhdCB3YXMgdXNlZCB0byB0cmFjayB0aW1lIGVsYXBzZWQgYnkgdGhlIGRlYnVnZ2VyLiBKdXN0
IHVzZSB0aGUKKyAgICAgICAgc3RvcHdhdGNoJ3MgZWxhcHNlZCB0aW1lcyB0byBnZW5lcmF0ZSBz
dGFydC9lbGFwc2VkIHRpbWVzIGZvciBmdW5jdGlvbiBjYWxscy4KKworICAgICAgICAoSlNDOjpQ
cm9maWxlR2VuZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQcm9maWxlR2VuZXJhdG9y
OjpQcm9maWxlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6QWRkUGFyZW50Rm9yQ29uc29sZVN0
YXJ0RnVuY3Rvcjo6b3BlcmF0b3IoKSk6IFRoZSBwYXJlbnQgbm9kZSBvZiB8Y29uc29sZS5wcm9m
aWxlfAorICAgICAgICBzaG91bGQgaGF2ZSBhIHN0YXJ0IHRpbWUgb2YgMC4wLCBzaW5jZSBpdCBy
ZXByZXNlbnRzIHRoZSBzdGFydGluZyBub2RlIG9mIHByb2ZpbGluZy4KKworICAgICAgICAoSlND
OjpQcm9maWxlR2VuZXJhdG9yOjpiZWdpbkNhbGxFbnRyeSk6CisgICAgICAgIChKU0M6OlByb2Zp
bGVHZW5lcmF0b3I6OmVuZENhbGxFbnRyeSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVHZW5lcmF0
b3I6OmRpZFBhdXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UHJvZmlsZUdlbmVyYXRvcjo6
ZGlkQ29udGludWUpOiBEZWxldGVkLgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0
b3IuaDoKKworMjAxNC0xMC0xOCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5l
ZHU+CisKICAgICAgICAgV2ViIFJlcGxheTogY29kZSBnZW5lcmF0b3Igc2hvdWxkbid0IGNvbXBs
YWluIGFib3V0IGVudW1zIHdpdGhvdXQgYSBzdG9yYWdlIHR5cGUgaWYgdGhleSBhcmUgaW4gYW4g
ZW5jbG9zaW5nIHNjb3BlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzcwODQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCBmODNmOTU3ZWI2NDA0NmZlNmIzMDVhNmRiMGY3MzAzNGQz
M2QwNTFkLi45ZTMwMGIwZTdlNDMyY2NkYTlmODc5NGM1MDc2NDY1MzE3MDQwMTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIyIEBACisyMDE0LTEwLTE4ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5n
dG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aW1lbGluZXMgc2hvdWxkIG5vdCBj
b3VudCB0aW1lIGVsYXBzZWQgd2hpbGUgcGF1c2VkIGluIHRoZSBkZWJ1Z2dlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgICogV1RGLnZjeHByb2ovV1RG
LnZjeHByb2o6CisgICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVyczoKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1N0b3B3YXRjaC5oOiBBZGRlZC4gVGhpcyBpbXBs
ZW1lbnRzIGEgcmVmY291bnRlZCBtb25vdG9uaWMgc3RvcHdhdGNoLgorICAgICAgICAoV1RGOjpT
dG9wd2F0Y2g6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlN0b3B3YXRjaDo6U3RvcHdhdGNoKToK
KyAgICAgICAgKFdURjo6U3RvcHdhdGNoOjpyZXNldCk6CisgICAgICAgIChXVEY6OlN0b3B3YXRj
aDo6c3RhcnQpOgorICAgICAgICAoV1RGOjpTdG9wd2F0Y2g6OnN0b3ApOgorICAgICAgICAoV1RG
OjpTdG9wd2F0Y2g6OmVsYXBzZWRUaW1lKToKKwogMjAxNC0xMC0xNyAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIEFkZCBBUEkgdG8g
R01haW5Mb29wU291cmNlIHRvIHNjaGVkdWxlIHNvdXJjZXMgYWZ0ZXIgYSBkZWxheSBpbiBtaWNy
b3NlY29uZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNzEzMTVkOTlkMTdlYjFiNmYxNWVmMWJjZmUyNDZkY2Q3
YmU3NzZmLi5mNTg1ZGVkZjkzM2M1OWY0MGMxN2ExOGQ5YjIzMmQ2ODc3ZGJmZmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTQtMTAtMTggIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNz
Lndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRpbWVsaW5lcyBzaG91
bGQgbm90IGNvdW50IHRpbWUgZWxhcHNlZCB3aGlsZSBwYXVzZWQgaW4gdGhlIGRlYnVnZ2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYzNTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgVG8gYXZvaWQg
Y291bnRpbmcgdGltZSBlbGFwc2VkIHdoaWxlIHRoZSBkZWJ1Z2dlciBpcyBwYXVzZWQsIHRpbWVs
aW5lIHJlY29yZHMgc2hvdWxkCisgICAgICAgIGtlZXAgdHJhY2sgb2YgdGltZSBlbGFwc2VkIHNp
bmNlIHRoZSBzdGFydCBvZiB0aW1lbGluZSBjYXB0dXJpbmcsIHJhdGhlciB0aGFuIHdhbGwgY2xv
Y2sKKyAgICAgICAgdGltZXN0YW1wcy4gV2UgY2FuIGVhc2lseSBjb21wdXRlIGVsYXBzZWQgdGlt
ZSBieSBzaGFyaW5nIGEgU3RvcHdhdGNoIGluc3RhbmNlIHRocm91Z2ggdGhlCisgICAgICAgIGlu
c3BlY3RvciBlbnZpcm9ubWVudC4gVGhlIHN0b3B3YXRjaCBydW5zIHdpdGggdGltZWxpbmVzIGFu
ZCBpcyBwYXVzZWQgd2l0aCB0aGUgZGVidWdnZXIsCisgICAgICAgIHNvIHN1YnNlcXVlbnQgdGlt
ZSBtZWFzdXJlbWVudHMgd2lsbCBub3QgaW5jbHVkZSB0aW1lIGVsYXBzZWQgd2hpbGUgdGhlIGRl
YnVnZ2VyIGlzIHBhdXNlZC4KKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIGlzIHNhZmUgYmVj
YXVzZSBzdGFydCBhbmQgZW5kIHRpbWVzIGFyZSBvbmx5IHVzZWQgdG8gZ3JhcGggcmVjb3Jkczsg
dGhlCisgICAgICAgIHRpbWVzdGFtcCdzIGFjdHVhbCB2YWx1ZSBpcyBpcnJlbGV2YW50IGFuZCBp
cyBub3QgZGlzcGxheWVkIGluIHRoZSB1c2VyIGludGVyZmFjZS4gRGF0ZQorICAgICAgICB0aW1l
c3RhbXBzIGFyZSBzdGlsbCBpbmNsdWRlZCB3aXRoIG5ldHdvcmstcmVsYXRlZCByZWNvcmRzIGFz
IHBhcnQgb2YgdGhlaXIgaGVhZGVyIGRhdGEuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWNh
dXNlIHdlIGNhbm5vdCByZWxpYWJseSB0ZXN0IHRpbWluZyBjaGFuZ2VzIGluZHVjZWQgYnkgZGVi
dWdnZXIgcGF1c2VzLgorICAgICAgICBJdCBpcyBwb3NzaWJsZSBmb3IgcmVjb3JkcyB0byBhY2Ny
dWUgdGltZSBiZWZvcmUgdGhlIGRlYnVnZ2VyIHBhdXNlcyBvciBhZnRlciBpdCByZXN1bWVzLgor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDogUmVtb3ZlIHVubmVj
ZXNzYXJ5IGluY2x1ZGUuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpleGVjdXRp
b25TdG9wd2F0Y2gpOiBBZGQgYSBzaGFyZWQgc3RvcHdhdGNoLgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnRpbWVz
dGFtcCk6IFJlZGlyZWN0IHRvIHRoZSBzaGFyZWQgc3RvcHdhdGNoLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpkb21Db250ZW50RXZlbnRGaXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmxvYWRFdmVudEZpcmVkKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6dGltZXN0YW1wKTogUmVkaXJlY3QgdG8gdGhlIHNoYXJlZCBzdG9wd2F0Y2guCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZl
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkQ2xvc2VXZWJTb2NrZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFNlbmRXZWJTb2NrZXRGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2Vi
U29ja2V0RnJhbWVFcnJvcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0
KTogU3RhcnQgYW5kIHN0b3AgdGhlIHN0b3B3YXRjaCB3aXRoIHRpbWVsaW5lcy4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RvcCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0aW1lc3RhbXApOiBSZWRpcmVjdCB0
byB0aGUgc2hhcmVkIHN0b3B3YXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0UHJvZmlsaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNv
bnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbENh
bGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3
aWxsRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVUaW1lQ29udmVy
dGVyOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lVGltZUNvbnZlcnRlcjo6VGlt
ZWxpbmVUaW1lQ29udmVydGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5l
VGltZUNvbnZlcnRlcjo6ZnJvbU1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0aW1lQ29udmVydGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXI6OmV4ZWN1dGlvblN0b3B3YXRjaCk6IEFkZCBhIHNoYXJlZCBzdG9wd2F0Y2guCisgICAgICAg
ICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDoKKwogMjAxNC0xMC0xOCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFVzZSBGYXN0
IGVudW1lcmF0aW9uIGNvbnNpc3RlbnRseSBpbiBXZWJGb250Q2FjaGUubW0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCmluZGV4IGY3NzVlNTQyYWFmYzhkNDI4ZDEyNzYzMGM3MWQzMWVlYTUwNTQ4MDUu
LjBmZGZmMzUxMmJiMTYzODM1M2VhNDc2ZWVjODI4OTY1OTU4MWE5OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE0LTEwLTEwIEJyaWFuIEouIEJ1cmcgIDxi
dXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRpbWVsaW5l
cyBzaG91bGQgbm90IGNvdW50IHRpbWUgZWxhcHNlZCB3aGlsZSBwYXVzZWQgaW4gdGhlIGRlYnVn
Z2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYz
NTEKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgRG9u
J3QgdXBkYXRlIHRoZSB0aW1lbGluZSdzIGN1cnJlbnQgdGltZSB3aGVuIHRoZSBkZWJ1Z2dlciBp
cyBwYXVzZWQuCisKKyAgICAgICAgU3RhcnQgYW5kIGVuZCB0aW1lcyBmb3IgdGltZWxpbmUgcmVj
b3JkcyBhcmUgbm93IGluIHNlY29uZHMgZWxhcHNlZCBzaW5jZSB0aW1lbGluZQorICAgICAgICBy
ZWNvcmRpbmcgc3RhcnRlZCwgcmF0aGVyIHRoYW4gbWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBlcG9j
aC4gQWxzbyBjb252ZXJ0IGNvZGUgdGhhdAorICAgICAgICB0cmFja3MgcGFnZS9yZXNvdXJjZSBs
b2FkIHRpbWluZ3MgdG8gdXNlIGVsYXBzZWQgdGltZXMgcmF0aGVyIHRoYW4gdGltZXN0YW1wcy4K
KworICAgICAgICBBZGQgYSB3b3JrYXJvdW5kIHRvIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgd2l0
aCBvbGQgYmFja2VuZHMuIENvbnZlcnQgbGVnYWN5IHRpbWVzdGFtcHMKKyAgICAgICAgaW4gbXVs
dGlwbGUgYWdlbnRzIHRvIGVsYXBzZWQgdGltZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZS5yZXNvdXJjZVJlcXVlc3RXaWxsQmVT
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5
cGUucmVzb3VyY2VSZXF1ZXN0V2FzU2VydmVkRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUucmVzb3VyY2VSZXF1ZXN0
RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNl
TWFuYWdlci5wcm90b3R5cGUucmVzb3VyY2VSZXF1ZXN0RGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZS5yZXNvdXJjZVJl
cXVlc3REaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVJlc291
cmNlTWFuYWdlci5wcm90b3R5cGUucmVzb3VyY2VSZXF1ZXN0RGlkRmFpbExvYWRpbmcpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZS5fYWRkTmV3
UmVzb3VyY2VUb0ZyYW1lKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1By
b2JlTWFuYWdlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVs
aW5lTWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJv
dG90eXBlLmNvbXB1dGVFbGFwc2VkVGltZSk6IEZvcndhcmQgdG8gdGhlIGFjdGl2ZSBUaW1lbGlu
ZVJlY29yZGluZy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90
eXBlLmV2ZW50UmVjb3JkZWQucHJvY2Vzc1JlY29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5ldmVudFJlY29yZGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLnBhZ2VEaWRMb2FkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLl9sb2FkTmV3UmVjb3JkaW5n
KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZS5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Qcm9iZVNhbXBsZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMv
UmVzb3VyY2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLnVw
ZGF0ZUZvclJlZGlyZWN0UmVzcG9uc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
LnByb3RvdHlwZS51cGRhdGVGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2UucHJvdG90eXBlLmluY3JlYXNlU2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2UucHJvdG90eXBlLm1hcmtBc0ZpbmlzaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5wcm90b3R5cGUubWFya0FzRmFpbGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5wcm90b3R5cGUucmV2ZXJ0TWFya0FzRmluaXNoZWQpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lUmVjb3JkaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkaW5nLnByb3RvdHlwZS5jb21wdXRlRWxhcHNlZFRpbWUpOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVDb250ZW50Vmlldy5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fZGVidWdnZXJQ
YXVzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZpZXcucHJvdG90
eXBlLl9kZWJ1Z2dlclJlc3VtZWQpOgorCisKIDIwMTQtMTAtMTcgIEpvbm8gV2VsbHMgIDxqb25v
d2VsbHNAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBFU0xpbnQgb3Bl
biBzb3VyY2UgbGlicmFyeSB0byB0aGUgaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNQcm9maWxlclByaXZhdGUuY3BwCmluZGV4IDJhNWVjMmM4MjM5MDFlZDllMWJi
ZDgyNGNmYTljNjNmOGE4MjM2ODYuLmFjMTEyYWU2ZWZmY2M1NjYyYWVjMjBmNGM4ZjQwMGQ0NjQ3
ZDMwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNQcm9maWxlclBy
aXZhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNQcm9maWxlclByaXZh
dGUuY3BwCkBAIC0zNCw3ICszNCwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiB2b2lkIEpT
U3RhcnRQcm9maWxpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgdGl0bGUpCiB7Ci0g
ICAgTGVnYWN5UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0YXJ0UHJvZmlsaW5nKHRvSlMoY3R4KSwg
dGl0bGUtPnN0cmluZygpKTsKKyAgICAvLyBVc2UgYW4gaW5kZXBlbmRlbnQgc3RvcHdhdGNoIGZv
ciBBUEktaW5pdGlhdGVkIHByb2ZpbGluZywgc2luY2UgdGhlIHVzZXIgd2lsbCBleHBlY3QgaXQK
KyAgICAvLyB0byBiZSByZWxhdGl2ZSB0byB3aGVuIHRoZWlyIGNvbW1hbmQgd2FzIGlzc3VlZC4K
KyAgICBSZWZQdHI8U3RvcHdhdGNoPiBzdG9wd2F0Y2ggPSBTdG9wd2F0Y2g6OmNyZWF0ZSgpOwor
ICAgIHN0b3B3YXRjaC0+c3RhcnQoKTsKKyAgICBMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+
c3RhcnRQcm9maWxpbmcodG9KUyhjdHgpLCB0aXRsZS0+c3RyaW5nKCksIHN0b3B3YXRjaC5yZWxl
YXNlKCkpOwogfQogCiB2b2lkIEpTRW5kUHJvZmlsaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3Ry
aW5nUmVmIHRpdGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JFbnZpcm9ubWVudC5oCmluZGV4IDZlNDMzMzJkYzUwY2ViOTY0MzU0Mzk1M2Rh
N2YzYTc5YWM4NzUzMDUuLmFlMmE3Y2Q5MjMwYmJkY2IyNzg1ODFkOWYzYTkwYTdjNjU3MjVmYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRW52
aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckVudmlyb25tZW50LmgKQEAgLTI4LDYgKzI4LDEwIEBACiAKICNpbmNsdWRlICJDYWxsRGF0YS5o
IgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0b3B3YXRjaDsKK30KKwogbmFtZXNwYWNlIEpT
QyB7CiBjbGFzcyBTb3VyY2VDb2RlOwogfQpAQCAtNDcsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxDYWxsSW5qZWN0ZWRTY3JpcHRGdW5jdGlvbihKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2FsbEluamVjdGVkU2NyaXB0RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUq
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZyb250ZW5kSW5pdGlhbGl6ZWQoKSA9IDA7CisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdURjo6U3RvcHdhdGNoPiBleGVjdXRpb25TdG9wd2F0Y2goKSA9
IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAzNDNmNjRhNDFhMTlhNmY1NDg5M2ZlMzdiMWY5OTg4
NmY5NGM4NTA4Li44NWVmN2ZmYTFmMTk2MzFhNTVkMGE3MzEwNzU2YTBiYzU4OGQyNWY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00Myw2ICs0Myw4IEBA
CiAjaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNr
LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIgorI2luY2x1ZGUgPHd0Zi9T
dG9wd2F0Y2guaD4KKwogI2luY2x1ZGUgPGN4eGFiaS5oPgogI2luY2x1ZGUgPGRsZmNuLmg+CiAj
aW5jbHVkZSA8ZXhlY2luZm8uaD4KQEAgLTU5LDYgKzYxLDcgQEAgSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9i
YWxPYmoKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKICAgICAsIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigq
dGhpcywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbChudWxscHRyKQorICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdh
dGNoOjpjcmVhdGUoKSkKICAgICAsIG1faW5jbHVkZU5hdGl2ZUNhbGxTdGFja1dpdGhFeGNlcHRp
b25zKHRydWUpCiAgICAgLCBtX2lzQXV0b21hdGljSW5zcGVjdGlvbihmYWxzZSkKIHsKQEAgLTc2
LDYgKzc5LDggQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmoKICAgICBtX2FnZW50cy5hcHBlbmQo
V1RGOjptb3ZlKHJ1bnRpbWVBZ2VudCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUo
Y29uc29sZUFnZW50KSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShkZWJ1Z2dlckFn
ZW50KSk7CisKKyAgICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+c3RhcnQoKTsKIH0KIAogSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjp+SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyKCkKQEAgLTIwMCw2ICsyMDUsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmZyb250ZW5kSW5pdGlhbGl6ZWQoKQogI2VuZGlmCiB9CiAKK1Bhc3NSZWZQ
dHI8U3RvcHdhdGNoPiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmV4ZWN1dGlv
blN0b3B3YXRjaCgpCit7CisgICAgcmV0dXJuIG1fZXhlY3V0aW9uU3RvcHdhdGNoOworfQorCiB9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA1ZDljZjhjNDQ0NGM1OTk3
MGQ4ODVmMjc2ZmJkOGIzMTViNmQ1M2ExLi4wZGFlNGFjZTViZTNiZTM2ZThiNTIxZTFjZmYzZDY5
ZDhkNDBhOGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTM0
LDYgKzM0LDEwIEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RvcHdhdGNoOwor
fQorCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIENvbnNvbGVDbGllbnQ7CiBjbGFzcyBFeGVjU3Rh
dGU7CkBAIC03OSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbGxJ
bmplY3RlZFNjcmlwdEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiwgaW50
KSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FsbEluamVjdGVkU2NyaXB0RnVu
Y3Rpb24oSlNDOjpFeGVjU3RhdGUqKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZnJv
bnRlbmRJbml0aWFsaXplZCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXVEY6
OlN0b3B3YXRjaD4gZXhlY3V0aW9uU3RvcHdhdGNoKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBhcHBlbmRBUElCYWNrdHJhY2UoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spOwpA
QCAtOTEsNiArOTYsNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9h
Z2VudHM7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5k
Q2hhbm5lbDsKICAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1
dGlvblN0b3B3YXRjaDsKICAgICBib29sIG1faW5jbHVkZU5hdGl2ZUNhbGxTdGFja1dpdGhFeGNl
cHRpb25zOwogICAgIGJvb2wgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb247CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcApp
bmRleCAyYzc4M2FmNDc3NmQ2MTU0ZjBmZjMyMzQ2MDc1ZjcxODRiMmUwYjQ5Li4zYTYxNjYzZTM2
YzQ3N2MxMTczYjJjYzM4ODc5M2QxNTJjYmYzOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzgsNyArMzgs
NiBAQAogI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkpTTG9j
ay5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJMZWdhY3lQ
cm9maWxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU291cmNlUHJv
dmlkZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTMwNywxNCArMzA2
LDEyIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZUV4Y2VwdGlvbkluQnJlYWtwb2lu
dENvbmRpdGlvbihKU0M6OkV4ZWNTdGF0ZSogZXhlCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpo
YW5kbGVQYXVzZShEZWJ1Z2dlcjo6UmVhc29uRm9yUGF1c2UsIEpTR2xvYmFsT2JqZWN0KiB2bUVu
dHJ5R2xvYmFsT2JqZWN0KQogewogICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmU2Ny
aXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1c2UpOwotICAgIExlZ2FjeVByb2ZpbGVyOjpw
cm9maWxlcigpLT5kaWRQYXVzZShjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKSk7CiAgICAgZGlk
UGF1c2Uodm1FbnRyeUdsb2JhbE9iamVjdCk7CiAKICAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdn
ZXJFdmVudHMgPSBmYWxzZTsKICAgICBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpOwogCiAgICAg
ZGlkQ29udGludWUodm1FbnRyeUdsb2JhbE9iamVjdCk7Ci0gICAgTGVnYWN5UHJvZmlsZXI6OnBy
b2ZpbGVyKCktPmRpZENvbnRpbnVlKGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpKTsKICAgICBk
aXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoJlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERp
ZENvbnRpbnVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCAx
NjkwYTM3MzkzZTc2ZDBmMTdlNmYwZmI0ZjQwODBlNjRmYTFlZDlhLi40YTJhOTMwYTUwMTE3MGVi
NDg4YjNmMjIzYzFmMjBjYjRmM2I4ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNs
dWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtNjUyLDYgKzY1Myw4IEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25z
dCBEZXByZWNhCiAKICAgICBpZiAobV9saXN0ZW5lcikKICAgICAgICAgbV9saXN0ZW5lci0+ZGlk
UGF1c2UoKTsKKyAgICAKKyAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52
aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2goKS0+c3RvcCgpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Tb3VuZChpbnQgYnJlYWtwb2ludEFj
dGlvbklkZW50aWZpZXIpCkBAIC02NjksNyArNjcyLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRl
LAogICAgICAgICAuc2V0UHJvYmVJZChhY3Rpb24uaWRlbnRpZmllcikKICAgICAgICAgLnNldFNh
bXBsZUlkKHNhbXBsZUlkKQogICAgICAgICAuc2V0QmF0Y2hJZChoaXRDb3VudCkKLSAgICAgICAg
LnNldFRpbWVzdGFtcChtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSkKKyAgICAgICAgLnNl
dFRpbWVzdGFtcChtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQo
KS5leGVjdXRpb25TdG9wd2F0Y2goKS0+ZWxhcHNlZFRpbWUoKSkKICAgICAgICAgLnNldFBheWxv
YWQocGF5bG9hZC5yZWxlYXNlKCkpOwogCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRpZFNh
bXBsZVByb2JlKHJlc3VsdC5yZWxlYXNlKCkpOwpAQCAtNjc5LDYgKzY4Miw3IEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ29udGludWUoKQogewogICAgIG1fcGF1c2VkU2NyaXB0
U3RhdGUgPSBudWxscHRyOwogICAgIG1fY3VycmVudENhbGxTdGFjayA9IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlKCk7CisgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVudmly
b25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCktPnN0YXJ0KCk7CiAgICAgY2xlYXJCcmVha0Rl
dGFpbHMoKTsKIAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXN1bWVkKCk7CkBAIC03NDUs
NyArNzQ5LDYgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckJyZWFrRGV0YWls
cygpCiAgICAgbV9icmVha0F1eERhdGEgPSBudWxscHRyOwogfQogCi0KIH0gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaAppbmRleCA4YjNmYjY2NDFkMjMyNzM3YWVjZmU2OGYxZjgwN2MxZWE5MzYy
MmRiLi4wMGQ0Nzk0NGMyZGRjZjhiMjRiZjQxZTg1MGE4ZGJiNzA1NmE1ZWYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC00Nyw2ICs0NywxMCBAQAogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKK25hbWVzcGFjZSBX
VEYgeworY2xhc3MgU3RvcHdhdGNoOworfQorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xh
c3MgSW5qZWN0ZWRTY3JpcHQ7CkBAIC0xNjMsNiArMTY3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBtX2JyZWFrQXV4RGF0YTsKICAgICBib29sIG1fZW5hYmxlZDsK
ICAgICBib29sIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkOworICAgIFJlZlB0cjxXVEY6OlN0
b3B3YXRjaD4gbV9zdG9wd2F0Y2g7CiAgICAgaW50IG1fbmV4dFByb2JlU2FtcGxlSWQ7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmls
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNw
cAppbmRleCA0ZmUyYmE2YjFjZTQyYjY5MmE2YzQ4NTcwMzY4NmZhOWU0ZjdmN2ZmLi5lMGNhMjY4
MGJkYjk1NDc1MTQ4ZmU0YzQxOTM2ZGM2ZTk2ZmMzYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5jcHAKQEAgLTMyLDcgKzMyLDYgQEAK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJDb21tb25JZGVudGlmaWVycy5oIgotI2luY2x1ZGUgIkRlYnVnZ2VyQ2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtNTAsMTYgKzQ5LDE2IEBAIHN0YXRpYyB1bnNp
Z25lZCBQcm9maWxlc1VJRCA9IDA7CiAKIHN0YXRpYyBDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxs
SWRlbnRpZmllckZyb21GdW5jdGlvbkltcChFeGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IFN0
cmluZyYgZGVmYXVsdFNvdXJjZVVSTCwgdW5zaWduZWQgZGVmYXVsdExpbmVOdW1iZXIsIHVuc2ln
bmVkIGRlZmF1bHRDb2x1bW5OdW1iZXIpOwogCi1MZWdhY3lQcm9maWxlciogTGVnYWN5UHJvZmls
ZXI6OnNfc2hhcmVkTGVnYWN5UHJvZmlsZXIgPSAwOworTGVnYWN5UHJvZmlsZXIqIExlZ2FjeVBy
b2ZpbGVyOjpzX3NoYXJlZExlZ2FjeVByb2ZpbGVyID0gbnVsbHB0cjsKIAogTGVnYWN5UHJvZmls
ZXIqIExlZ2FjeVByb2ZpbGVyOjpwcm9maWxlcigpCiB7CiAgICAgaWYgKCFzX3NoYXJlZExlZ2Fj
eVByb2ZpbGVyKQogICAgICAgICBzX3NoYXJlZExlZ2FjeVByb2ZpbGVyID0gbmV3IExlZ2FjeVBy
b2ZpbGVyKCk7CiAgICAgcmV0dXJuIHNfc2hhcmVkTGVnYWN5UHJvZmlsZXI7Ci19ICAgCit9CiAK
LXZvaWQgTGVnYWN5UHJvZmlsZXI6OnN0YXJ0UHJvZmlsaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgTGVnYWN5UHJvZmlsZXI6OnN0YXJ0UHJvZmlsaW5nKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzc1JlZlB0cjxTdG9wd2F0Y2g+
IHN0b3B3YXRjaCkKIHsKICAgICBpZiAoIWV4ZWMpCiAgICAgICAgIHJldHVybjsKQEAgLTc1LDE0
ICs3NCwxNCBAQCB2b2lkIExlZ2FjeVByb2ZpbGVyOjpzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgfQogCiAgICAgZXhlYy0+dm0oKS5zZXRF
bmFibGVkUHJvZmlsZXIodGhpcyk7Ci0gICAgUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IHByb2Zp
bGVHZW5lcmF0b3IgPSBQcm9maWxlR2VuZXJhdG9yOjpjcmVhdGUoZXhlYywgdGl0bGUsICsrUHJv
ZmlsZXNVSUQpOworICAgIFJlZlB0cjxQcm9maWxlR2VuZXJhdG9yPiBwcm9maWxlR2VuZXJhdG9y
ID0gUHJvZmlsZUdlbmVyYXRvcjo6Y3JlYXRlKGV4ZWMsIHRpdGxlLCArK1Byb2ZpbGVzVUlELCBz
dG9wd2F0Y2gpOwogICAgIG1fY3VycmVudFByb2ZpbGVzLmFwcGVuZChwcm9maWxlR2VuZXJhdG9y
KTsKIH0KIAogUGFzc1JlZlB0cjxQcm9maWxlPiBMZWdhY3lQcm9maWxlcjo6c3RvcFByb2ZpbGlu
ZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgaWYgKCFleGVj
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBKU0ds
b2JhbE9iamVjdCogb3JpZ2luID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGZv
ciAocHRyZGlmZl90IGkgPSBtX2N1cnJlbnRQcm9maWxlcy5zaXplKCkgLSAxOyBpID49IDA7IC0t
aSkgewpAQCAtOTQsMTIgKzkzLDEyIEBAIFBhc3NSZWZQdHI8UHJvZmlsZT4gTGVnYWN5UHJvZmls
ZXI6OnN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmCiAgICAgICAg
ICAgICBtX2N1cnJlbnRQcm9maWxlcy5yZW1vdmUoaSk7CiAgICAgICAgICAgICBpZiAoIW1fY3Vy
cmVudFByb2ZpbGVzLnNpemUoKSkKICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnNldEVuYWJs
ZWRQcm9maWxlcihudWxscHRyKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICByZXR1cm4g
cmV0dXJuUHJvZmlsZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCiB2b2lkIExlZ2FjeVByb2ZpbGVyOjpzdG9wUHJvZmlsaW5nKEpT
R2xvYmFsT2JqZWN0KiBvcmlnaW4pCkBAIC0xODQsMjggKzE4Myw2IEBAIHZvaWQgTGVnYWN5UHJv
ZmlsZXI6OmV4Y2VwdGlvblVud2luZChFeGVjU3RhdGUqIGhhbmRsZXJDYWxsRnJhbWUpCiAgICAg
Y2FsbEZ1bmN0aW9uRm9yUHJvZmlsZXNXaXRoR3JvdXAoc3RkOjpiaW5kKCZQcm9maWxlR2VuZXJh
dG9yOjpleGNlcHRpb25VbndpbmQsIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMSwgaGFuZGxlckNhbGxG
cmFtZSwgY2FsbElkZW50aWZpZXIpLCBtX2N1cnJlbnRQcm9maWxlcywgaGFuZGxlckNhbGxGcmFt
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9maWxlR3JvdXAoKSk7CiB9CiAKLXZvaWQgTGVn
YWN5UHJvZmlsZXI6OmRpZFBhdXNlKFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+IHBycENh
bGxGcmFtZSkKLXsKLSAgICBpZiAobV9jdXJyZW50UHJvZmlsZXMuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+IGNhbGxGcmFtZSA9IHBy
cENhbGxGcmFtZTsKLSAgICBDYWxsSWRlbnRpZmllciBjYWxsSWRlbnRpZmllciA9IGNyZWF0ZUNh
bGxJZGVudGlmaWVyKGNhbGxGcmFtZS0+ZXhlYygpLCBKU1ZhbHVlKCksIFN0cmluZ0ltcGw6OmVt
cHR5KCksIDAsIDApOwotCi0gICAgY2FsbEZ1bmN0aW9uRm9yUHJvZmlsZXNXaXRoR3JvdXAoc3Rk
OjpiaW5kKCZQcm9maWxlR2VuZXJhdG9yOjpkaWRQYXVzZSwgc3RkOjpwbGFjZWhvbGRlcnM6Ol8x
LCBjYWxsRnJhbWUsIGNhbGxJZGVudGlmaWVyKSwgbV9jdXJyZW50UHJvZmlsZXMsIGNhbGxGcmFt
ZS0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5wcm9maWxlR3JvdXAoKSk7Ci19Ci0KLXZvaWQgTGVn
YWN5UHJvZmlsZXI6OmRpZENvbnRpbnVlKFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+IHBy
cENhbGxGcmFtZSkKLXsKLSAgICBpZiAobV9jdXJyZW50UHJvZmlsZXMuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+IGNhbGxGcmFtZSA9
IHBycENhbGxGcmFtZTsKLSAgICBDYWxsSWRlbnRpZmllciBjYWxsSWRlbnRpZmllciA9IGNyZWF0
ZUNhbGxJZGVudGlmaWVyKGNhbGxGcmFtZS0+ZXhlYygpLCBKU1ZhbHVlKCksIFN0cmluZ0ltcGw6
OmVtcHR5KCksIDAsIDApOwotCi0gICAgY2FsbEZ1bmN0aW9uRm9yUHJvZmlsZXNXaXRoR3JvdXAo
c3RkOjpiaW5kKCZQcm9maWxlR2VuZXJhdG9yOjpkaWRDb250aW51ZSwgc3RkOjpwbGFjZWhvbGRl
cnM6Ol8xLCBjYWxsRnJhbWUsIGNhbGxJZGVudGlmaWVyKSwgbV9jdXJyZW50UHJvZmlsZXMsIGNh
bGxGcmFtZS0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5wcm9maWxlR3JvdXAoKSk7Ci19Ci0KIENh
bGxJZGVudGlmaWVyIExlZ2FjeVByb2ZpbGVyOjpjcmVhdGVDYWxsSWRlbnRpZmllcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0U291
cmNlVVJMLCB1bnNpZ25lZCBkZWZhdWx0TGluZU51bWJlciwgdW5zaWduZWQgZGVmYXVsdENvbHVt
bk51bWJlcikKIHsKICAgICBpZiAoIWZ1bmN0aW9uVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5oCmluZGV4IDFkNmNiMjZmODNmZjAyZjhj
YWQzMjcwZDE0ZTAxNDM2NjBhYjc2YWYuLjhmNmFmNDBlZTk5ZWE0YTkwNTAxZTdlZWVhN2I5MDI3
NWNlZTNlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdh
Y3lQcm9maWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQ
cm9maWxlci5oCkBAIC0zMiwxMyArMzIsMTIgQEAKICNpbmNsdWRlICJQcm9maWxlLmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWNsYXNzIERlYnVnZ2VyQ2FsbEZyYW1lOwogY2xhc3MgRXhlY1N0YXRlOwotY2xh
c3MgVk07CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNW
YWx1ZTsKQEAgLTQ4LDEwICs0NywxMCBAQCBzdHJ1Y3QgQ2FsbElkZW50aWZpZXI7CiBjbGFzcyBM
ZWdhY3lQcm9maWxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlcigpOyAK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyKCk7
CiAgICAgc3RhdGljIENhbGxJZGVudGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyKEV4ZWNTdGF0
ZSosIEpTVmFsdWUsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGRlZmF1
bHRMaW5lTnVtYmVyLCB1bnNpZ25lZCBkZWZhdWx0Q29sdW1uTnVtYmVyKTsKIAotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgc3RhcnRQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpT
dHJpbmcmIHRpdGxlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0UHJvZmlsaW5n
KEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgUGFzc1JlZlB0cjxTdG9wd2F0
Y2g+KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFByb2ZpbGU+IHN0b3BQcm9m
aWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlKTsKICAgICB2b2lkIHN0
b3BQcm9maWxpbmcoSlNHbG9iYWxPYmplY3QqKTsKIApAQCAtNjYsOSArNjUsNiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGV4Y2VwdGlvblVud2luZChFeGVjU3RhdGUqIGhhbmRsZXJDYWxsRnJhbWUp
OwogCi0gICAgdm9pZCBkaWRQYXVzZShQYXNzUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPik7Ci0g
ICAgdm9pZCBkaWRDb250aW51ZShQYXNzUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPik7Ci0KICAg
ICBjb25zdCBWZWN0b3I8UmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+PiYgY3VycmVudFByb2ZpbGVz
KCkgeyByZXR1cm4gbV9jdXJyZW50UHJvZmlsZXM7IH07CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5jcHAKaW5kZXggNzUyYjZjYzJkZTIzMzgwZjVh
Mjc0MmNlNDgzMGMxNTgwNWY4MzdiYS4uNmQ2MjQyMWZiZDJmNDQxNzU0OWExZWVkMGUxN2UwNDlh
Yjk4ZDhlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcApA
QCAtNDQsNyArNDQsNyBAQCBQcm9maWxlOjpQcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVu
c2lnbmVkIHVpZCkKICAgICAvLyBGSVhNRTogV2hlbiBtdWx0aS10aHJlYWRpbmcgaXMgc3VwcG9y
dGVkIHRoaXMgd2lsbCBiZSBhIHZlY3RvciBhbmQgY2FsbHMKICAgICAvLyBpbnRvIHRoZSBwcm9m
aWxlciB3aWxsIG5lZWQgdG8ga25vdyB3aGljaCB0aHJlYWQgaXQgaXMgZXhlY3V0aW5nIG9uLgog
ICAgIG1fcm9vdE5vZGUgPSBQcm9maWxlTm9kZTo6Y3JlYXRlKG51bGxwdHIsIENhbGxJZGVudGlm
aWVyKEFTQ0lJTGl0ZXJhbCgiVGhyZWFkXzEiKSwgU3RyaW5nKCksIDAsIDApLCBudWxscHRyKTsK
LSAgICBtX3Jvb3ROb2RlLT5hcHBlbmRDYWxsKFByb2ZpbGVOb2RlOjpDYWxsKGN1cnJlbnRUaW1l
KCkpKTsKKyAgICBtX3Jvb3ROb2RlLT5hcHBlbmRDYWxsKFByb2ZpbGVOb2RlOjpDYWxsKDAuMCkp
OwogfQogCiBQcm9maWxlOjp+UHJvZmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAKaW5kZXggNzYzYjgyY2VkODA3NjIzOTE0
YmZiNjc2Nzc5YmY1MzE2OTk1YzYwZi4uMTU0MjFiYmU4MThlNzZkMTRlNjhjNTM1N2YxNmZlNTEx
ZjAyMzIwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlR2VuZXJhdG9yLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nUmVmLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgpAQCAtNDAsMjEgKzM5LDE4IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1QYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IFByb2ZpbGVHZW5lcmF0b3I6OmNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCkKK1Bhc3NS
ZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4gUHJvZmlsZUdlbmVyYXRvcjo6Y3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkLCBQYXNzUmVmUHRyPFN0
b3B3YXRjaD4gc3RvcHdhdGNoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHJvZmlsZUdl
bmVyYXRvcihleGVjLCB0aXRsZSwgdWlkKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcm9m
aWxlR2VuZXJhdG9yKGV4ZWMsIHRpdGxlLCB1aWQsIHN0b3B3YXRjaCkpOwogfQogCi1Qcm9maWxl
R2VuZXJhdG9yOjpQcm9maWxlR2VuZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiB0aXRsZSwgdW5zaWduZWQgdWlkKQorUHJvZmlsZUdlbmVyYXRvcjo6UHJvZmlsZUdlbmVyYXRv
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCwgUGFz
c1JlZlB0cjxTdG9wd2F0Y2g+IHN0b3B3YXRjaCkKICAgICA6IG1fb3JpZ2luKGV4ZWMgPyBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkgOiBudWxscHRyKQogICAgICwgbV9wcm9maWxlR3JvdXAo
ZXhlYyA/IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvZmlsZUdyb3VwKCkgOiAwKQot
ICAgICwgbV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcChOQU4pCisgICAgLCBtX3N0b3B3YXRjaChz
dG9wd2F0Y2gpCiAgICAgLCBtX2ZvdW5kQ29uc29sZVN0YXJ0UGFyZW50KGZhbHNlKQogICAgICwg
bV9zdXNwZW5kZWQoZmFsc2UpCiB7Ci0gICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkKLSAgICAgICAgbV9kZWJ1Z2dlclBh
dXNlZFRpbWVzdGFtcCA9IGRlYnVnZ2VyLT5pc1BhdXNlZCgpID8gY3VycmVudFRpbWUoKSA6IE5B
TjsKLQogICAgIG1fcHJvZmlsZSA9IFByb2ZpbGU6OmNyZWF0ZSh0aXRsZSwgdWlkKTsKICAgICBt
X2N1cnJlbnROb2RlID0gbV9yb290Tm9kZSA9IG1fcHJvZmlsZS0+cm9vdE5vZGUoKTsKICAgICBp
ZiAoZXhlYykKQEAgLTg1LDcgKzgxLDkgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBjb2x1
bW4gPSAwOwogICAgICAgICB2aXNpdG9yLT5jb21wdXRlTGluZUFuZENvbHVtbihsaW5lLCBjb2x1
bW4pOwogICAgICAgICBtX2N1cnJlbnROb2RlID0gUHJvZmlsZU5vZGU6OmNyZWF0ZShtX2V4ZWMs
IExlZ2FjeVByb2ZpbGVyOjpjcmVhdGVDYWxsSWRlbnRpZmllcihtX2V4ZWMsIHZpc2l0b3ItPmNh
bGxlZSgpLCB2aXNpdG9yLT5zb3VyY2VVUkwoKSwgbGluZSwgY29sdW1uKSwgbV9yb290Tm9kZS5n
ZXQoKSk7Ci0gICAgICAgIG1fY3VycmVudE5vZGUtPmFwcGVuZENhbGwoUHJvZmlsZU5vZGU6OkNh
bGwoY3VycmVudFRpbWUoKSkpOworICAgICAgICAvLyBBc3N1bWUgdGhhdCBwcm9maWxlIHRpbWVz
IGFyZSByZWxhdGl2ZSB0byB3aGVuIHRoZSB8Y29uc29sZS5wcm9maWxlfCBjb21tYW5kIGlzIGV2
YWx1YXRlZC4KKyAgICAgICAgLy8gVGhpcyBtYXRjaGVzIHRoZSBsb2dpYyBpbiBKU1N0YXJ0UHJv
ZmlsaW5nKCkgYW5kIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUoKS4K
KyAgICAgICAgbV9jdXJyZW50Tm9kZS0+YXBwZW5kQ2FsbChQcm9maWxlTm9kZTo6Q2FsbCgwLjAp
KTsKICAgICAgICAgbV9yb290Tm9kZS0+c3BsaWNlTm9kZShtX2N1cnJlbnROb2RlLmdldCgpKTsK
IAogICAgICAgICBtX2ZvdW5kUGFyZW50ID0gdHJ1ZTsKQEAgLTExOCwxMiArMTE2LDcgQEAgdm9p
ZCBQcm9maWxlR2VuZXJhdG9yOjpiZWdpbkNhbGxFbnRyeShQcm9maWxlTm9kZSogbm9kZSwgZG91
YmxlIHN0YXJ0VGltZSkKICAgICBBU1NFUlRfQVJHKG5vZGUsIG5vZGUpOwogCiAgICAgaWYgKHN0
ZDo6aXNuYW4oc3RhcnRUaW1lKSkKLSAgICAgICAgc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsK
LQotICAgIC8vIElmIHRoZSBkZWJ1Z2dlciBpcyBwYXVzZWQgd2hlbiBiZWdpbm5pbmcsIHRoZW4g
ZG9uJ3Qgc2V0IHRoZSBzdGFydCB0aW1lLiBJdAotICAgIC8vIHdpbGwgYmUgZml4ZWQgdXAgd2hl
biB0aGUgZGVidWdnZXIgdW5wYXVzZXMgb3IgdGhlIGNhbGwgZW50cnkgZW5kcy4KLSAgICBpZiAo
IXN0ZDo6aXNuYW4obV9kZWJ1Z2dlclBhdXNlZFRpbWVzdGFtcCkpCi0gICAgICAgIHN0YXJ0VGlt
ZSA9IE5BTjsKKyAgICAgICAgc3RhcnRUaW1lID0gbV9zdG9wd2F0Y2gtPmVsYXBzZWRUaW1lKCk7
CiAKICAgICBub2RlLT5hcHBlbmRDYWxsKFByb2ZpbGVOb2RlOjpDYWxsKHN0YXJ0VGltZSkpOwog
fQpAQCAtMTM0LDIxICsxMjcsOCBAQCB2b2lkIFByb2ZpbGVHZW5lcmF0b3I6OmVuZENhbGxFbnRy
eShQcm9maWxlTm9kZSogbm9kZSkKIAogICAgIFByb2ZpbGVOb2RlOjpDYWxsJiBsYXN0ID0gbm9k
ZS0+bGFzdENhbGwoKTsKIAotICAgIC8vIElmIHRoZSBkZWJ1Z2dlciBpcyBwYXVzZWQsIGlnbm9y
ZSB0aGUgaW50ZXJ2YWwgdGhhdCBlbmRzIG5vdy4KLSAgICBpZiAoIXN0ZDo6aXNuYW4obV9kZWJ1
Z2dlclBhdXNlZFRpbWVzdGFtcCkgJiYgIXN0ZDo6aXNuYW4obGFzdC5lbGFwc2VkVGltZSgpKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSWYgcGF1c2VkIGFuZCBubyB0aW1lIHdhcyBhY2Ny
dWVkIHRoZW4gdGhlIGRlYnVnZ2VyIHdhcyBuZXZlciB1bnBhdXNlZC4gVGhlIGNhbGwgd2lsbAot
ICAgIC8vIGhhdmUgbm8gdGltZSBhY2NydWVkIGFuZCBhcHBlYXIgdG8gaGF2ZSBzdGFydGVkIHdo
ZW4gdGhlIGRlYnVnZ2VyIHdhcyBwYXVzZWQuCi0gICAgaWYgKCFzdGQ6OmlzbmFuKG1fZGVidWdn
ZXJQYXVzZWRUaW1lc3RhbXApKSB7Ci0gICAgICAgIGxhc3Quc2V0U3RhcnRUaW1lKG1fZGVidWdn
ZXJQYXVzZWRUaW1lc3RhbXApOwotICAgICAgICBsYXN0LnNldEVsYXBzZWRUaW1lKDAuMCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBPdGhlcndpc2UsIGFkZCB0aGUgaW50ZXJ2
YWwgZW5kaW5nIG5vdyB0byBlbGFwc2VkIHRpbWUuCiAgICAgZG91YmxlIHByZXZpb3VzRWxhcHNl
ZFRpbWUgPSBzdGQ6OmlzbmFuKGxhc3QuZWxhcHNlZFRpbWUoKSkgPyAwLjAgOiBsYXN0LmVsYXBz
ZWRUaW1lKCk7Ci0gICAgZG91YmxlIG5ld2x5RWxhcHNlZFRpbWUgPSBjdXJyZW50VGltZSgpIC0g
bGFzdC5zdGFydFRpbWUoKTsKKyAgICBkb3VibGUgbmV3bHlFbGFwc2VkVGltZSA9IG1fc3RvcHdh
dGNoLT5lbGFwc2VkVGltZSgpIC0gbGFzdC5zdGFydFRpbWUoKTsKICAgICBsYXN0LnNldEVsYXBz
ZWRUaW1lKHByZXZpb3VzRWxhcHNlZFRpbWUgKyBuZXdseUVsYXBzZWRUaW1lKTsKIH0KIApAQCAt
MTgwLDcgKzE2MCw3IEBAIHZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6d2lsbEV4ZWN1dGUoRXhlY1N0
YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IENhbGxJZGVudGlmCiAgICAgfQogCiAgICAgbV9j
dXJyZW50Tm9kZSA9IGNhbGxlZU5vZGU7Ci0gICAgYmVnaW5DYWxsRW50cnkoY2FsbGVlTm9kZS5n
ZXQoKSk7CisgICAgYmVnaW5DYWxsRW50cnkoY2FsbGVlTm9kZS5nZXQoKSwgbV9zdG9wd2F0Y2gt
PmVsYXBzZWRUaW1lKCkpOwogfQogCiB2b2lkIFByb2ZpbGVHZW5lcmF0b3I6OmRpZEV4ZWN1dGUo
RXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IENhbGxJZGVudGlmaWVyJiBjYWxsSWRl
bnRpZmllcikKQEAgLTIyMywzMyArMjAzLDYgQEAgdm9pZCBQcm9maWxlR2VuZXJhdG9yOjpleGNl
cHRpb25VbndpbmQoRXhlY1N0YXRlKiBoYW5kbGVyQ2FsbEZyYW1lLCBjb25zdCBDYWxsSWQKICAg
ICB9CiB9CiAKLXZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6ZGlkUGF1c2UoUGFzc1JlZlB0cjxEZWJ1
Z2dlckNhbGxGcmFtZT4sIGNvbnN0IENhbGxJZGVudGlmaWVyJikKLXsKLSAgICBBU1NFUlQoc3Rk
Ojppc25hbihtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wKSk7Ci0KLSAgICBtX2RlYnVnZ2VyUGF1
c2VkVGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKLQotICAgIGZvciAoUHJvZmlsZU5vZGUqIG5v
ZGUgPSBtX2N1cnJlbnROb2RlLmdldCgpOyBub2RlICE9IG1fcHJvZmlsZS0+cm9vdE5vZGUoKTsg
bm9kZSA9IG5vZGUtPnBhcmVudCgpKSB7Ci0gICAgICAgIFByb2ZpbGVOb2RlOjpDYWxsJiBsYXN0
ID0gbm9kZS0+bGFzdENhbGwoKTsKLSAgICAgICAgQVNTRVJUKCFzdGQ6OmlzbmFuKGxhc3Quc3Rh
cnRUaW1lKCkpKTsKLQotICAgICAgICBkb3VibGUgcHJldmlvdXNFbGFwc2VkVGltZSA9IHN0ZDo6
aXNuYW4obGFzdC5lbGFwc2VkVGltZSgpKSA/IDAuMCA6IGxhc3QuZWxhcHNlZFRpbWUoKTsKLSAg
ICAgICAgZG91YmxlIGFkZGl0aW9uYWxFbGFwc2VkVGltZSA9IG1fZGVidWdnZXJQYXVzZWRUaW1l
c3RhbXAgLSBsYXN0LnN0YXJ0VGltZSgpOwotICAgICAgICBsYXN0LnNldFN0YXJ0VGltZShOQU4p
OwotICAgICAgICBsYXN0LnNldEVsYXBzZWRUaW1lKHByZXZpb3VzRWxhcHNlZFRpbWUgKyBhZGRp
dGlvbmFsRWxhcHNlZFRpbWUpOwotICAgIH0KLX0KLQotdm9pZCBQcm9maWxlR2VuZXJhdG9yOjpk
aWRDb250aW51ZShQYXNzUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiwgY29uc3QgQ2FsbElkZW50
aWZpZXImKQotewotICAgIEFTU0VSVCghc3RkOjppc25hbihtX2RlYnVnZ2VyUGF1c2VkVGltZXN0
YW1wKSk7Ci0KLSAgICBmb3IgKFByb2ZpbGVOb2RlKiBub2RlID0gbV9jdXJyZW50Tm9kZS5nZXQo
KTsgbm9kZSAhPSBtX3Byb2ZpbGUtPnJvb3ROb2RlKCk7IG5vZGUgPSBub2RlLT5wYXJlbnQoKSkK
LSAgICAgICAgbm9kZS0+bGFzdENhbGwoKS5zZXRTdGFydFRpbWUobV9kZWJ1Z2dlclBhdXNlZFRp
bWVzdGFtcCk7Ci0KLSAgICBtX2RlYnVnZ2VyUGF1c2VkVGltZXN0YW1wID0gTkFOOwotfQotCiB2
b2lkIFByb2ZpbGVHZW5lcmF0b3I6OnN0b3BQcm9maWxpbmcoKQogewogICAgIGZvciAoUHJvZmls
ZU5vZGUqIG5vZGUgPSBtX2N1cnJlbnROb2RlLmdldCgpOyBub2RlICE9IG1fcHJvZmlsZS0+cm9v
dE5vZGUoKTsgbm9kZSA9IG5vZGUtPnBhcmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmgKaW5kZXggOWY1MWEzZGM4NmNkMzNmNDFh
NGU0YmVhZmU5ZjUwYzNjY2M5NDFmMi4uYzU3NDZkMzlkZjUwMDYzNDAzMjBiOTk4MDNlNWFkZjYx
YjE1MDY5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZUdlbmVyYXRvci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDIsNyArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFByb2ZpbGVHZW5lcmF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxQcm9maWxl
R2VuZXJhdG9yPiAgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJv
ZmlsZUdlbmVyYXRvcj4gY3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRs
ZSwgdW5zaWduZWQgdWlkKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZmlsZUdlbmVy
YXRvcj4gY3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiB0aXRsZSwgdW5zaWdu
ZWQgdWlkLCBQYXNzUmVmUHRyPFN0b3B3YXRjaD4pOwogCiAgICAgICAgIC8vIE1lbWJlcnMKICAg
ICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlKCkgY29uc3Q7CkBAIC01NCwyOCArNTUsMjQg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZGlkRXhlY3V0ZShFeGVjU3RhdGUqIGNh
bGxlckNhbGxGcmFtZSwgY29uc3QgQ2FsbElkZW50aWZpZXImKTsKICAgICAgICAgdm9pZCBleGNl
cHRpb25VbndpbmQoRXhlY1N0YXRlKiBoYW5kbGVyQ2FsbEZyYW1lLCBjb25zdCBDYWxsSWRlbnRp
ZmllciYpOwogCi0gICAgICAgIHZvaWQgZGlkUGF1c2UoUGFzc1JlZlB0cjxEZWJ1Z2dlckNhbGxG
cmFtZT4sIGNvbnN0IENhbGxJZGVudGlmaWVyJik7Ci0gICAgICAgIHZvaWQgZGlkQ29udGludWUo
UGFzc1JlZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4sIGNvbnN0IENhbGxJZGVudGlmaWVyJik7Ci0K
ICAgICAgICAgdm9pZCBzZXRJc1N1c3BlbmRlZChib29sIHN1c3BlbmRlZCkgeyBBU1NFUlQobV9z
dXNwZW5kZWQgIT0gc3VzcGVuZGVkKTsgbV9zdXNwZW5kZWQgPSBzdXNwZW5kZWQ7IH0KIAogICAg
ICAgICB2b2lkIHN0b3BQcm9maWxpbmcoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFByb2Zp
bGVHZW5lcmF0b3IoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCB1bnNpZ25l
ZCB1aWQpOworICAgICAgICBQcm9maWxlR2VuZXJhdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6
U3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkLCBQYXNzUmVmUHRyPFN0b3B3YXRjaD4pOwogICAg
ICAgICB2b2lkIGFkZFBhcmVudEZvckNvbnNvbGVTdGFydChFeGVjU3RhdGUqKTsKIAogICAgICAg
ICB2b2lkIHJlbW92ZVByb2ZpbGVTdGFydCgpOwogICAgICAgICB2b2lkIHJlbW92ZVByb2ZpbGVF
bmQoKTsKIAotICAgICAgICB2b2lkIGJlZ2luQ2FsbEVudHJ5KFByb2ZpbGVOb2RlKiwgZG91Ymxl
IHN0YXJ0VGltZSA9IE5BTik7CisgICAgICAgIHZvaWQgYmVnaW5DYWxsRW50cnkoUHJvZmlsZU5v
ZGUqLCBkb3VibGUgc3RhcnRUaW1lKTsKICAgICAgICAgdm9pZCBlbmRDYWxsRW50cnkoUHJvZmls
ZU5vZGUqKTsKIAogICAgICAgICBSZWZQdHI8UHJvZmlsZT4gbV9wcm9maWxlOwogICAgICAgICBK
U0dsb2JhbE9iamVjdCogbV9vcmlnaW47CiAgICAgICAgIHVuc2lnbmVkIG1fcHJvZmlsZUdyb3Vw
OwotICAgICAgICAvLyBUaW1lc3RhbXAgaXMgc2V0IHRvIE5BTiB3aGVuIHRoZSBkZWJ1Z2dlciBp
cyBub3QgY3VycmVudGx5IHBhdXNlZC4KLSAgICAgICAgZG91YmxlIG1fZGVidWdnZXJQYXVzZWRU
aW1lc3RhbXA7CisgICAgICAgIFJlZlB0cjxTdG9wd2F0Y2g+IG1fc3RvcHdhdGNoOwogICAgICAg
ICBSZWZQdHI8UHJvZmlsZU5vZGU+IG1fcm9vdE5vZGU7CiAgICAgICAgIFJlZlB0cjxQcm9maWxl
Tm9kZT4gbV9jdXJyZW50Tm9kZTsKICAgICAgICAgYm9vbCBtX2ZvdW5kQ29uc29sZVN0YXJ0UGFy
ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvaiBiL1Nv
dXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKaW5kZXggMGY4M2JhZTliNTg3ZWU5ZDM4
ZDFiOTA2MGRjNGVjNmM0ZTZmMTA0Mi4uMmYzYWMyMDljNTI2YzAzNGZmNDBhZTVlMzY0NDQyNmY2
YmFiNmI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagor
KysgYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCkBAIC0yNzAsNiArMjcwLDcg
QEAg77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdGFja0JvdW5kcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cd3RmXFN0YXRpY0NvbnN0cnVjdG9ycy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cd3RmXFN0ZExpYkV4dHJhcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cd3RmXFN0b3B3YXRjaC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0
cmluZ0V4dHJhcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0cmluZ0hh
c2hlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFN0cmluZ1ByaW50U3Ry
ZWFtLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9q
LmZpbHRlcnMgYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMKaW5k
ZXggNmEwZTlhMTYyZDk1NzU1MmM4Zjc3ZTIxMTM1NmViZjNhNGM1NGNhMy4uNTk1M2EwZjQyYWZk
NzUwNzZiZjk4NWQ1OTgzMGQ5YmVjODYzNWY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYu
dmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ov
V1RGLnZjeHByb2ouZmlsdGVycwpAQCAtNjE0LDYgKzYxNCw5IEBAIO+7vzw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZc
U3RkTGliRXh0cmFzLmgiPgogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxTdG9wd2F0Y2guaCI+CisgICAg
ICA8RmlsdGVyPnd0ZjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cd3RmXFN0cmluZ0V4dHJhcy5oIj4KICAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1MTJlMGUyMWU5YjRkNTI3ODA1NGE4OWVmYzZjMTEwMTg0Nzk1YWNmLi5mZjQ4
ZGEwY2M1MzEyODJhMTJkMGQ1MTA2YzY2MDM1ZjE1NWQ5MTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3Myw2ICsyNzMsNyBAQAogCQlBOEE0NzQ4NzE1
MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRo
cmVhZERhdGEuaCAqLzsgfTsKIAkJQThBNDc0OEMxNTFBODI2NDAwNDEyM0ZGIC8qIGNvbmZpZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDc0OEIx
NTFBODI2NDAwNDEyM0ZGIC8qIGNvbmZpZy5oICovOyB9OwogCQlCMzhGRDdCRDE2ODk1M0U4MDA2
NUM5NjkgLyogRmVhdHVyZURlZmluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIzOEZEN0JDMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVmaW5l
cy5oICovOyB9OworCQlDNEY4QTkzNzE5QzY1RUI0MDBCMkIxNUQgLyogU3RvcHdhdGNoLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNEY4QTkzNjE5QzY1
RUI0MDBCMkIxNUQgLyogU3RvcHdhdGNoLmggKi87IH07CiAJCUNENTQ5N0FDMTU4NTdEMDMwMEI1
QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q1NDk3QUExNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi87
IH07CiAJCUNENTQ5N0FEMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0FCMTU4NTdEMDMwMEI1
QkMzMCAvKiBNZWRpYVRpbWUuaCAqLzsgfTsKIAkJQ0U0NjUxNkUxOURCMUZCNDAwM0VDQTA1IC8q
IE5TTWFwVGFibGVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENFNDY1MTZEMTlEQjFGQjQwMDNFQ0EwNSAvKiBOU01hcFRhYmxlU1BJLmggKi87IH07
CkBAIC01NjYsNiArNTY3LDcgQEAKIAkJQThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRo
cmVhZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV1RGVGhyZWFkRGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzQ4QjE1MUE4MjY0MDA0MTIz
RkYgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMzhGRDdCQzE2ODk1M0U4MDA2NUM5Njkg
LyogRmVhdHVyZURlZmluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmVh
dHVyZURlZmluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRGOEE5MzYxOUM2
NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdG9wd2F0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NDk3QUEx
NTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZWRpYVRpbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRDU0OTdBQjE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRTQ2NTE2RDE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU01hcFRhYmxlU1BJLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04NTgsNiArODYwLDcgQEAKIAkJCQlGRURBQ0QzQzE2MzBGODNGMDBD
Njk2MzQgLyogU3RhY2tTdGF0cy5oICovLAogCQkJCUE4QTQ3MzEwMTUxQTgyNUIwMDQxMjNGRiAv
KiBTdGF0aWNDb25zdHJ1Y3RvcnMuaCAqLywKIAkJCQlBOEE0NzMxMTE1MUE4MjVCMDA0MTIzRkYg
LyogU3RkTGliRXh0cmFzLmggKi8sCisJCQkJQzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0
b3B3YXRjaC5oICovLAogCQkJCTFBNkJCNzY4MTYyRjMwMDUwMEREMTZEQiAvKiBTdHJlYW1CdWZm
ZXIuaCAqLywKIAkJCQlBOEE0NzMxMzE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nRXh0cmFzLmgg
Ki8sCiAJCQkJQTc0ODc0NTExN0EwQkRBRTAwRkEwNENCIC8qIFN0cmluZ0hhc2hEdW1wQ29udGV4
dC5oICovLApAQCAtMTA3OCw2ICsxMDgxLDcgQEAKIAkJCQlBOEE0NzNBMzE1MUE4MjVCMDA0MTIz
RkYgLyogRGVjaW1hbE51bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QTYxN0I2QjRG
QjAwQTdBRTNGIC8qIERlZmVycmFibGVSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzNBNTE1MUE4MjVCMDA0MTIzRkYgLyogRGVxdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUM0
RjhBOTM3MTlDNjVFQjQwMEIyQjE1RCAvKiBTdG9wd2F0Y2guaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4QTQ3M0E2MTUxQTgyNUIwMDQxMjNGRiAvKiBEaXNhbGxvd0NUeXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzNBRjE1MUE4MjVCMDA0MTIzRkYgLyogZGl5LWZwLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzNCMTE1MUE4MjVCMDA0MTIzRkYgLyogZG91YmxlLWNvbnZlcnNpb24uaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCAyYWFkNzkzYzgxNzBiMTFkZjJl
MTA4ZWIxMzQ3MTYwN2FiMGE1ZTJkLi5iYzI2YWM0MWQyNWM3YjM3MTAwMGY0ZWRiZDBlMjc3NzJh
MDQ1NTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtOTIsNiArOTIsNyBAQCBzZXQoV1RGX0hF
QURFUlMKICAgICBTdGFja1N0YXRzLmgKICAgICBTdGF0aWNDb25zdHJ1Y3RvcnMuaAogICAgIFN0
ZExpYkV4dHJhcy5oCisgICAgU3RvcHdhdGNoLmgKICAgICBTdHJpbmdFeHRyYXMuaAogICAgIFN0
cmluZ0hhc2hlci5oCiAgICAgU3RyaW5nUHJpbnRTdHJlYW0uaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvU3RvcHdhdGNoLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdG9wd2F0Y2guaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kN2U1ZGIxMjNjNTMyYTM0YTA1NTJmOTBkMDBkOGY5ZjUyN2JmZTU5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvU3RvcHdhdGNoLmgKQEAgLTAsMCArMSw5NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBTdG9wd2F0Y2hfaAorI2RlZmluZSBTdG9wd2F0Y2hfaAorCisjaW5j
bHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFN0b3B3YXRjaCA6IHB1
YmxpYyBSZWZDb3VudGVkPFN0b3B3YXRjaD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0b3B3YXRjaD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU3RvcHdhdGNoKCkpOworICAgIH0KKworICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIHN0
YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisKKyAgICBkb3VibGUgZWxhcHNlZFRpbWUoKTsKKwor
cHJpdmF0ZToKKyAgICBTdG9wd2F0Y2goKQorICAgICAgICA6IG1fZWxhcHNlZFRpbWUoMC4wKQor
ICAgICAgICAsIG1fbGFzdFN0YXJ0VGltZShOQU4pCisgICAgeworICAgIH0KKworICAgIGRvdWJs
ZSBtX2VsYXBzZWRUaW1lOworICAgIGRvdWJsZSBtX2xhc3RTdGFydFRpbWU7Cit9OworCitpbmxp
bmUgdm9pZCBTdG9wd2F0Y2g6OnJlc2V0KCkKK3sKKyAgICBtX2VsYXBzZWRUaW1lID0gMC4wOwor
ICAgIG1fbGFzdFN0YXJ0VGltZSA9IE5BTjsKK30KKworaW5saW5lIHZvaWQgU3RvcHdhdGNoOjpz
dGFydCgpCit7CisgICAgQVNTRVJUKGlzbmFuKG1fbGFzdFN0YXJ0VGltZSkpOworCisgICAgbV9s
YXN0U3RhcnRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Cit9CisKK2lubGlu
ZSB2b2lkIFN0b3B3YXRjaDo6c3RvcCgpCit7CisgICAgQVNTRVJUKCFpc25hbihtX2xhc3RTdGFy
dFRpbWUpKTsKKworICAgIG1fZWxhcHNlZFRpbWUgKz0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCkgLSBtX2xhc3RTdGFydFRpbWU7CisgICAgbV9sYXN0U3RhcnRUaW1lID0gTkFOOworfQor
CitpbmxpbmUgZG91YmxlIFN0b3B3YXRjaDo6ZWxhcHNlZFRpbWUoKQoreworICAgIGJvb2wgc2hv
dWxkU3VzcGVuZCA9ICFpc25hbihtX2xhc3RTdGFydFRpbWUpOworICAgIGlmIChzaG91bGRTdXNw
ZW5kKQorICAgICAgICBzdG9wKCk7CisKKyAgICBkb3VibGUgZWxhcHNlZFRpbWUgPSBtX2VsYXBz
ZWRUaW1lOworCisgICAgaWYgKHNob3VsZFN1c3BlbmQpCisgICAgICAgIHN0YXJ0KCk7CisgICAg
cmV0dXJuIGVsYXBzZWRUaW1lOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RG
OjpTdG9wd2F0Y2g7CisKKyNlbmRpZiAvLyBTdG9wd2F0Y2hfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggYzUzZTdjNTY0MmM3MjZjMWIy
NmExZGM4NTAwZjVlMjczOTRiOGM4OS4uMGNhN2QwZDU2MTVkYmMxMjM0NDA4YmQzMGQxNWM3ZmM1
YTQxNDJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCkBAIC01Nyw3ICs1Nyw2IEBACiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKICNp
bmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDgyMDA0ODE4MjI4MzVhYmExYWEyYjQ1ZmIzMjM0NWQwYzY3YzY2MTMuLjBiN2ZhMmNiOGJj
OTJjMjk3M2NmYjk3OWUyN2Q2NzlhYTRjMDJiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTc0LDYgKzc0LDcgQEAKICNpbmNs
dWRlIDxpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50Lmg+CiAjaW5jbHVkZSA8cHJvZmls
ZXIvTGVnYWN5UHJvZmlsZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1
ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogI2lu
Y2x1ZGUgIlBhZ2VEZWJ1Z2dhYmxlLmgiCkBAIC04OSw2ICs5MCw3IEBAIEluc3BlY3RvckNvbnRy
b2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBp
bnNwZWN0b3JDCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVl
PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6
Y3JlYXRlKCkpKQogICAgICwgbV9vdmVybGF5KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yT3Zl
cmxheT4ocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKICAgICAsIG1faW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKG51bGxwdHIpCisgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNy
ZWF0ZSgpKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNw
ZWN0b3JDbGllbnQpCiAgICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50KG51bGxwdHIpCkBA
IC00NTMsNiArNDU1LDExIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZnJvbnRlbmRJbml0
aWFsaXplZCgpCiAjZW5kaWYKIH0KIAorUGFzc1JlZlB0cjxTdG9wd2F0Y2g+IEluc3BlY3RvckNv
bnRyb2xsZXI6OmV4ZWN1dGlvblN0b3B3YXRjaCgpCit7CisgICAgcmV0dXJuIG1fZXhlY3V0aW9u
U3RvcHdhdGNoOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmgKaW5kZXggOTQ3NWJjMjUwNzg2MjIxMmUxNTk0MjEwYWU2Y2M0OThiZmU5MTg1NS4u
OTZmNDFmNTJkYjRiOWVhMTRjMGRmN2I3NzliZTFjY2IyMWIwMTVlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMzAsNiArMTMwLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FsbEluamVjdGVkU2NyaXB0RnVuY3Rp
b24oSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRM
aW5lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FsbEluamVjdGVkU2NyaXB0RnVu
Y3Rpb24oSlNDOjpFeGVjU3RhdGUqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZnJvbnRl
bmRJbml0aWFsaXplZCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXVEY6OlN0
b3B3YXRjaD4gZXhlY3V0aW9uU3RvcHdhdGNoKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRhdGlvbkZvclBhZ2UoUGFnZSop
OwpAQCAtMTQ4LDYgKzE0OSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsK
ICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7CisgICAgUmVmUHRyPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3
YXRjaDsKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3Rv
ckNsaWVudDsKICAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9pbnNwZWN0b3JGcm9udGVu
ZENsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKaW5kZXggNDM5OWI2YWNiNWRkMDlhN2Q1MDIxMGJlMDEwMGU4NzY3NDM2NWY4NC4uODBm
ODcwZTg2MzUxYjI3ZTdjNDFmYTQ3MzAwNjQ0MTY5NDdjYzM2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTU3LDYgKzU3LDcgQEAK
ICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViRnJvbnRlbmRE
aXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRl
ICJNYWluRnJhbWUuaCIKQEAgLTczLDcgKzc0LDYgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxpdGllcy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JZGVudGlmaWVyc0Zh
Y3RvcnkuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+Ci0jaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtMzYx
LDYgKzM2MSwxMSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbgogI2VuZGlmCiB9CiAKK2RvdWJs
ZSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnRpbWVzdGFtcCgpCit7CisgICAgcmV0dXJuIG1faW5zdHJ1
bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2go
KS0+ZWxhcHNlZFRpbWUoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmVuYWJsZShF
cnJvclN0cmluZyYpCiB7CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKQEAgLTcxMSwxMiArNzE2LDEy
IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQo
RnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29yCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZG9t
Q29udGVudEV2ZW50RmlyZWQoKQogewogICAgIG1faXNGaXJzdExheW91dEFmdGVyT25Mb2FkID0g
dHJ1ZTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZG9tQ29udGVudEV2ZW50RmlyZWQoY3Vy
cmVudFRpbWUoKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRvbUNvbnRlbnRFdmVudEZp
cmVkKHRpbWVzdGFtcCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmxvYWRFdmVu
dEZpcmVkKCkKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9hZEV2ZW50RmlyZWQoY3Vy
cmVudFRpbWUoKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmxvYWRFdmVudEZpcmVkKHRp
bWVzdGFtcCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdhdGVk
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmgKaW5kZXggNTlkMDg0OGRlM2YyNDBiMjJkZjdhMGM1MWMwZTE4ZjVj
YmRjMjA3NC4uYTVjMzQ5YzZjMDVkZmI0MjA0ODk2NzQ3NGRkZGQ2YmQ3NjM3OWUyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtMTYxLDYg
KzE2MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVUb3VjaEV2ZW50RW11bGF0aW9uSW5Q
YWdlKGJvb2wpOwogI2VuZGlmCiAKKyAgICBkb3VibGUgdGltZXN0YW1wKCk7CisKICAgICBzdGF0
aWMgYm9vbCBtYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCk7CiAgICAgc3RhdGljIGJvb2wgZGF0YUNvbnRlbnQoY29uc3QgY2hh
ciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBi
b29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDYxYmJk
OGYxNDgxMjJkYThlNDMyZmU4YTFhYmZiZDU4M2IzY2Y4ZDguLmRiMTU0ODI3ZmYwNzQxMmYzMzI4
ZmIwNGZlOTQ2ZWYwNzYzNWMzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRl
ICJJY29uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmgiCiAjaW5j
bHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNT
dGF0ZS5oIgpAQCAtNjksNyArNzAsNiBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVk
ZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KLSNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCkBAIC0yNzYsNiArMjc2LDExIEBAIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6On5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkKICAgICBBU1NFUlQoIW1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKTsKIH0KIAorZG91YmxlIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OnRpbWVzdGFtcCgpCit7CisgICAgcmV0dXJuIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2goKS0+
ZWxhcHNlZFRpbWUoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2Vu
ZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVy
LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpCiB7CiAgICAgaWYgKHJlcXVlc3QuaGlkZGVuRnJvbUluc3BlY3RvcigpKSB7
CkBAIC0zMjAsNyArMzI1LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2Vu
ZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudEwKICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlID0gSW5zcGVjdG9y
UGFnZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKHR5cGUpOwogCiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJ
bml0aWF0b3JPYmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVu
dCgpIDogbnVsbHB0cik7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RXaWxsQmVT
ZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgbV9w
YWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciksIGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBjdXJyZW50VGltZSgpLCBpbml0aWF0
b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNl
LCBsb2FkZXIpLCB0eXBlICE9IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSA/ICZy
ZXNvdXJjZVR5cGUgOiBudWxscHRyKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVz
dFdpbGxCZVNlbnQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1l
KCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSwgbG9hZGVyLT51cmwoKS5zdHJpbmco
KSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIHRpbWVzdGFtcCgpLCBp
bml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZWRpcmVjdFJl
c3BvbnNlLCBsb2FkZXIpLCB0eXBlICE9IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJj
ZSA/ICZyZXNvdXJjZVR5cGUgOiBudWxscHRyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjptYXJrUmVzb3VyY2VBc0NhY2hlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCkBA
IC0zNjUsNyArMzcwLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWUKICAgICBtX3Jlc291cmNl
c0RhdGEtPnJlc3BvbnNlUmVjZWl2ZWQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChs
b2FkZXItPmZyYW1lKCkpLCByZXNwb25zZSk7CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNv
dXJjZVR5cGUocmVxdWVzdElkLCB0eXBlKTsKIAotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5y
ZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5m
cmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciksIGN1cnJlbnRUaW1lKCksIElu
c3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSnNvbih0eXBlKSwgcmVzb3VyY2VSZXNwb25z
ZSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3BvbnNlUmVjZWl2ZWQocmVxdWVzdElk
LCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9h
ZGVySWQobG9hZGVyKSwgdGltZXN0YW1wKCksIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VU
eXBlSnNvbih0eXBlKSwgcmVzb3VyY2VSZXNwb25zZSk7CiAKICAgICAvLyBJZiB3ZSByZXZhbGlk
YXRlZCB0aGUgcmVzb3VyY2UgYW5kIGdvdCBOb3QgbW9kaWZpZWQsIHNlbmQgY29udGVudCBsZW5n
dGggZm9sbG93aW5nIGRpZFJlY2VpdmVSZXNwb25zZQogICAgIC8vIGFzIHRoZXJlIHdpbGwgYmUg
bm8gY2FsbHMgdG8gZGlkUmVjZWl2ZURhdGEgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KQEAgLTM5
MSw3ICszOTYsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVEYXRh
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhcgogICAgICAgICAgICAgbV9yZXNv
dXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIGRhdGFMZW5n
dGgpOwogICAgIH0KIAotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kYXRhUmVjZWl2ZWQocmVx
dWVzdElkLCBjdXJyZW50VGltZSgpLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFt
cCgpLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQpAQCAtNDExLDcgKzQx
Niw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50CiAgICAgLy8gSG93ZXZlciwgYWxsIG90aGVy
IHRpbWVzIHBhc3NlZCB0byB0aGUgSW5zcGVjdG9yIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgd2Vi
IHByb2Nlc3MuIE1peGluZwogICAgIC8vIHRpbWVzIGZyb20gZGlmZmVyZW50IHByb2Nlc3NlcyBj
YW4gY2F1c2UgdGhlIGZpbmlzaCB0aW1lIHRvIGJlIGVhcmxpZXIgdGhhbiB0aGUgcmVzcG9uc2UK
ICAgICAvLyByZWNlaXZlZCB0aW1lIGR1ZSB0byBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24g
bGFnLgotICAgIGZpbmlzaFRpbWUgPSBjdXJyZW50VGltZSgpOworICAgIGZpbmlzaFRpbWUgPSB0
aW1lc3RhbXAoKTsKIAogICAgIFN0cmluZyBzb3VyY2VNYXBwaW5nVVJMOwogICAgIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1fcmVzb3Vy
Y2VzRGF0YS0+ZGF0YShyZXF1ZXN0SWQpOwpAQCAtNDM3LDcgKzQ0Miw3IEBAIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvCiAgICAgfQogCiAgICAgYm9vbCBjYW5jZWxlZCA9IGVycm9yLmlzQ2FuY2Vs
bGF0aW9uKCk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmxvYWRpbmdGYWlsZWQocmVxdWVz
dElkLCBjdXJyZW50VGltZSgpLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLCBjYW5jZWxl
ZCA/ICZjYW5jZWxlZCA6IG51bGxwdHIpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sb2Fk
aW5nRmFpbGVkKHJlcXVlc3RJZCwgdGltZXN0YW1wKCksIGVycm9yLmxvY2FsaXplZERlc2NyaXB0
aW9uKCksIGNhbmNlbGVkID8gJmNhbmNlbGVkIDogbnVsbHB0cik7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKQEAgLTQ1NSw3ICs0NjAs
NyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShEb2N1bWVudExvYWRlciogbG9hZAogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0
b3JPYmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDog
bnVsbHB0cik7CiAKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdFNlcnZlZEZyb21N
ZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBsb2FkZXItPnVybCgpLnN0
cmluZygpLCBjdXJyZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yQ2Fj
aGVkUmVzb3VyY2UocmVzb3VyY2UsIGxvYWRlcikpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5yZXF1ZXN0U2VydmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVy
SWQsIGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIHRpbWVzdGFtcCgpLCBpbml0aWF0b3JPYmplY3Qs
IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2UsIGxvYWRlcikpOwogfQogCiB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEluaXRpYWxTY3JpcHRDb250ZW50KHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCkBAIC01ODcs
NyArNTkyLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFdlYlNvY2tl
dEhhbmRzaGFrZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGUKIHsKICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6TmV0d29yazo6V2ViU29ja2V0UmVxdWVzdD4gcmVxdWVzdE9iamVjdCA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OldlYlNvY2tldFJlcXVlc3Q6OmNyZWF0ZSgp
CiAgICAgICAgIC5zZXRIZWFkZXJzKGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhyZXF1ZXN0Lmh0dHBI
ZWFkZXJGaWVsZHMoKSkpOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRXaWxs
U2VuZEhhbmRzaGFrZVJlcXVlc3QoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRp
ZmllciksIGN1cnJlbnRUaW1lKCksIHJlcXVlc3RPYmplY3QpOworICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT53ZWJTb2NrZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVlc3QoSWRlbnRpZmllcnNGYWN0
b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFtcCgpLCByZXF1ZXN0T2JqZWN0KTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKQEAgLTU5NiwxMiArNjAxLDEyIEBAIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcKICAgICAgICAgLnNldFN0YXR1cyhyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKQogICAg
ICAgICAuc2V0U3RhdHVzVGV4dChyZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKQogICAgICAgICAu
c2V0SGVhZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxk
cygpKSk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlUmVjZWl2ZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIGN1
cnJlbnRUaW1lKCksIHJlc3BvbnNlT2JqZWN0KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
d2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VSZWNlaXZlZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJl
cXVlc3RJZChpZGVudGlmaWVyKSwgdGltZXN0YW1wKCksIHJlc3BvbnNlT2JqZWN0KTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldENs
b3NlZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgY3VycmVudFRp
bWUoKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldENsb3NlZChJZGVudGlm
aWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgdGltZXN0YW1wKCkpOwogfQogCiB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKQEAgLTYx
MCw3ICs2MTUsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVXZWJT
b2NrZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCiAgICAgICAgIC5zZXRPcGNvZGUo
ZnJhbWUub3BDb2RlKQogICAgICAgICAuc2V0TWFzayhmcmFtZS5tYXNrZWQpCiAgICAgICAgIC5z
ZXRQYXlsb2FkRGF0YShTdHJpbmcoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkp
OwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRGcmFtZVJlY2VpdmVkKElkZW50
aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBjdXJyZW50VGltZSgpLCBmcmFt
ZU9iamVjdCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEZyYW1lUmVjZWl2
ZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFtcCgp
LCBmcmFtZU9iamVjdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkU2Vu
ZFdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0
RnJhbWUmIGZyYW1lKQpAQCAtNjE5LDEyICs2MjQsMTIgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaWRTZW5kV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b24KICAgICAgICAgLnNldE9wY29kZShmcmFtZS5vcENvZGUpCiAgICAgICAgIC5zZXRNYXNrKGZy
YW1lLm1hc2tlZCkKICAgICAgICAgLnNldFBheWxvYWREYXRhKFN0cmluZyhmcmFtZS5wYXlsb2Fk
LCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNv
Y2tldEZyYW1lU2VudChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwg
Y3VycmVudFRpbWUoKSwgZnJhbWVPYmplY3QpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53
ZWJTb2NrZXRGcmFtZVNlbnQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmll
ciksIHRpbWVzdGFtcCgpLCBmcmFtZU9iamVjdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+d2ViU29ja2V0RnJhbWVFcnJvcihJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJ
ZChpZGVudGlmaWVyKSwgY3VycmVudFRpbWUoKSwgZXJyb3JNZXNzYWdlKTsKKyAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0RnJhbWVFcnJvcihJZGVudGlmaWVyc0ZhY3Rvcnk6OnJl
cXVlc3RJZChpZGVudGlmaWVyKSwgdGltZXN0YW1wKCksIGVycm9yTWVzc2FnZSk7CiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCAyODM5MjBkZmU1NjMwNzkyMWQ0Njc0
OWU2MTM0MDMwNGNjZjVjNmMyLi5iOTY0NGFmYzgwZGNlYTdmYTgzMDgxMjJjMGZhYTEwM2E5OWI3
NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmgKQEAgLTEzOCw2ICsxMzgsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQg
ZW5hYmxlKCk7CiAKKyAgICBkb3VibGUgdGltZXN0YW1wKCk7CisKICAgICBJbnNwZWN0b3JQYWdl
QWdlbnQqIG1fcGFnZUFnZW50OwogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yTmV0d29ya0Zyb250ZW5kRGlzcGF0
Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggYTg2Y2E4OTkwNDc5ZDNlNjVk
ZjdmYjA1MjU0ZDBjZDI2YzYyY2I4ZC4uZTI4NzAwNjU0M2UzOTQzODRlZWFkNTY3MmY4MTkxN2Ew
NzE3ODFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcApAQCAtNjEsMTEgKzYxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFRpbWVsaW5lVGltZUNvbnZlcnRl
cjo6cmVzZXQoKQotewotICAgIG1fc3RhcnRPZmZzZXQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKSAtIGN1cnJlbnRUaW1lKCk7Ci19Ci0KIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6On5J
bnNwZWN0b3JUaW1lbGluZUFnZW50KCkKIHsKIH0KQEAgLTExOCw3ICsxMTMsNyBAQCB2b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhDYWxsU3Rh
Y2tEZXB0aCkKICAgICBlbHNlCiAgICAgICAgIG1fbWF4Q2FsbFN0YWNrRGVwdGggPSA1OwogCi0g
ICAgbV90aW1lQ29udmVydGVyLnJlc2V0KCk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpLT5zdGFydCgpOwogCiAg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMp
OwogCkBAIC0xMzYsNiArMTMxLDggQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRl
cm5hbFN0b3AoKQogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3Rv
cHdhdGNoKCktPnN0b3AoKTsKKwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVj
dG9yVGltZWxpbmVBZ2VudChudWxscHRyKTsKIAogICAgIGlmIChtX3NjcmlwdERlYnVnU2VydmVy
KQpAQCAtMTQ5LDYgKzE0NiwxMSBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVy
bmFsU3RvcCgpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZWNvcmRpbmdTdG9wcGVk
KCk7CiB9CiAKK2RvdWJsZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0aW1lc3RhbXAoKQorewor
ICAgIHJldHVybiBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckVudmlyb25tZW50KCku
ZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6c2V0UGFnZVNjcmlwdERlYnVnU2VydmVyKFBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlciogc2NyaXB0RGVidWdTZXJ2ZXIpCiB7CiAgICAgQVNTRVJUKCFtX2VuYWJsZWQpOwpAQCAt
MTU3LDkgKzE1OSw5IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0UGFnZVNjcmlw
dERlYnVnU2VydmVyKFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciogc2NyCiAgICAgbV9zY3JpcHREZWJ1
Z1NlcnZlciA9IHNjcmlwdERlYnVnU2VydmVyOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc3Rh
cnRQcm9maWxpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCitz
dGF0aWMgaW5saW5lIHZvaWQgc3RhcnRQcm9maWxpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgdGl0bGUsIFBhc3NSZWZQdHI8U3RvcHdhdGNoPiBzdG9wd2F0Y2gpCiB7Ci0g
ICAgSlNDOjpMZWdhY3lQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmcoZXhlYywg
dGl0bGUpOworICAgIEpTQzo6TGVnYWN5UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0YXJ0UHJvZmls
aW5nKGV4ZWMsIHRpdGxlLCBzdG9wd2F0Y2gpOwogfQogCiBzdGF0aWMgaW5saW5lIFBhc3NSZWZQ
dHI8SlNDOjpQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTdHJpbmcmIHRpdGxlKQpAQCAtMTY3LDkgKzE2OSw5IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxKU0M6OlByb2ZpbGU+IHN0b3BQcm9maWxpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0CiAgICAgcmV0dXJuIEpTQzo6TGVnYWN5UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0b3BQcm9m
aWxpbmcoZXhlYywgdGl0bGUpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRQcm9maWxp
bmcoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlKQorc3RhdGljIGlubGluZSB2b2lk
IHN0YXJ0UHJvZmlsaW5nKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzc1Jl
ZlB0cjxTdG9wd2F0Y2g+IHN0b3B3YXRjaCkKIHsKLSAgICBzdGFydFByb2ZpbGluZyh0b0pTRE9N
V2luZG93KGZyYW1lLCBkZWJ1Z2dlcldvcmxkKCkpLT5nbG9iYWxFeGVjKCksIHRpdGxlKTsKKyAg
ICBzdGFydFByb2ZpbGluZyh0b0pTRE9NV2luZG93KGZyYW1lLCBkZWJ1Z2dlcldvcmxkKCkpLT5n
bG9iYWxFeGVjKCksIHRpdGxlLCBzdG9wd2F0Y2gpOwogfQogCiBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8SlNDOjpQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEZyYW1lKiBmcmFtZSwgY29uc3QgU3Ry
aW5nJiB0aXRsZSkKQEAgLTE5Myw3ICsxOTUsMTEgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcK
ICAgICBpZiAoIW1fZW5hYmxlZCAmJiBtX3BlbmRpbmdDb25zb2xlUHJvZmlsZVJlY29yZHMuaXNF
bXB0eSgpKQogICAgICAgICBpbnRlcm5hbFN0YXJ0KCk7CiAKLSAgICBzdGFydFByb2ZpbGluZyhl
eGVjLCB0aXRsZSk7CisgICAgLy8gVXNlIGFuIGluZGVwZW5kZW50IHN0b3B3YXRjaCBmb3IgY29u
c29sZS1pbml0aWF0ZWQgcHJvZmlsaW5nLCBzaW5jZSB0aGUgdXNlciB3aWxsIGV4cGVjdCBpdAor
ICAgIC8vIHRvIGJlIHJlbGF0aXZlIHRvIHdoZW4gdGhlaXIgY29tbWFuZCB3YXMgaXNzdWVkLgor
ICAgIFJlZlB0cjxTdG9wd2F0Y2g+IHByb2ZpbGVyU3RvcHdhdGNoID0gU3RvcHdhdGNoOjpjcmVh
dGUoKTsKKyAgICBwcm9maWxlclN0b3B3YXRjaC0+c3RhcnQoKTsKKyAgICBzdGFydFByb2ZpbGlu
ZyhleGVjLCB0aXRsZSwgcHJvZmlsZXJTdG9wd2F0Y2gucmVsZWFzZSgpKTsKIAogICAgIG1fcGVu
ZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5hcHBlbmQoY3JlYXRlUmVjb3JkRW50cnkoVGltZWxp
bmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVDb25zb2xlUHJvZmlsZURhdGEodGl0bGUpLCBUaW1lbGlu
ZVJlY29yZFR5cGU6OkNvbnNvbGVQcm9maWxlLCB0cnVlLCBmcmFtZUZyb21FeGVjU3RhdGUoZXhl
YykpKTsKIH0KQEAgLTIzMiw3ICsyMzgsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OndpbGxDYWxsRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaQogICAg
IHB1c2hDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlRnVuY3Rpb25D
YWxsRGF0YShzY3JpcHROYW1lLCBzY3JpcHRMaW5lKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpGdW5j
dGlvbkNhbGwsIHRydWUsIGZyYW1lKTsKIAogICAgIGlmIChmcmFtZSAmJiAhbV9jYWxsU3RhY2tE
ZXB0aCkKLSAgICAgICAgc3RhcnRQcm9maWxpbmcoZnJhbWUsIEFTQ0lJTGl0ZXJhbCgiVGltZWxp
bmUgRnVuY3Rpb25DYWxsIikpOworICAgICAgICBzdGFydFByb2ZpbGluZyhmcmFtZSwgQVNDSUlM
aXRlcmFsKCJUaW1lbGluZSBGdW5jdGlvbkNhbGwiKSwgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpKTsKIAogICAgICsrbV9j
YWxsU3RhY2tEZXB0aDsKIH0KQEAgLTQwNyw3ICs0MTMsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OndpbGxFdmFsdWF0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVO
dW1iZQogCiAgICAgaWYgKGZyYW1lICYmICFtX2NhbGxTdGFja0RlcHRoKSB7CiAgICAgICAgICsr
bV9jYWxsU3RhY2tEZXB0aDsKLSAgICAgICAgc3RhcnRQcm9maWxpbmcoZnJhbWUsIEFTQ0lJTGl0
ZXJhbCgiVGltZWxpbmUgRXZhbHVhdGVTY3JpcHQiKSk7CisgICAgICAgIHN0YXJ0UHJvZmlsaW5n
KGZyYW1lLCBBU0NJSUxpdGVyYWwoIlRpbWVsaW5lIEV2YWx1YXRlU2NyaXB0IiksIG1faW5zdHJ1
bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2go
KSk7CiAgICAgfQogfQogCkBAIC03NDYsMTEgKzc1Miw2IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6bG9jYWxUb1BhZ2VRdWFkKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNv
bnN0CiAgICAgcXVhZC0+c2V0UDQoZnJhbWVWaWV3LmNvbnRlbnRzVG9Sb290Vmlldyhyb3VuZGVk
SW50UG9pbnQoYWJzb2x1dGUucDQoKSkpKTsKIH0KIAotZG91YmxlIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OnRpbWVzdGFtcCgpCi17Ci0gICAgcmV0dXJuIG1fdGltZUNvbnZlcnRlci5mcm9tTW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsK
LX0KLQogUGFnZSogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cGFnZSgpCiB7CiAgICAgcmV0dXJu
IG1fcGFnZUFnZW50ID8gbV9wYWdlQWdlbnQtPnBhZ2UoKSA6IG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCBhNGNi
NGM0ZTJlZjIzZWNkMzdkMGVmMDRkYzE1M2E5ODZjNjVmNGJlLi5iN2NiMmFiMTU2MTUyNzYwMGVl
MmYyOWU4ODA2MjRhYWU0YzdiOThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJM
YXlvdXRSZWN0LmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg+CisjaW5jbHVkZSA8d3RmL1N0
b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCkBAIC0xMTMsMTkgKzExNCw2IEBAIGVudW0gY2xhc3MgVGltZWxpbmVSZWNvcmRUeXBl
IHsKICAgICBXZWJTb2NrZXREZXN0cm95CiB9OwogCi1jbGFzcyBUaW1lbGluZVRpbWVDb252ZXJ0
ZXIgewotcHVibGljOgotICAgIFRpbWVsaW5lVGltZUNvbnZlcnRlcigpCi0gICAgICAgIDogbV9z
dGFydE9mZnNldCgwKQotICAgIHsKLSAgICB9Ci0gICAgZG91YmxlIGZyb21Nb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoZG91YmxlIHRpbWUpIGNvbnN0ICB7IHJldHVybiAodGltZSAtIG1fc3Rh
cnRPZmZzZXQpICogMTAwMC4wOyB9Ci0gICAgdm9pZCByZXNldCgpOwotCi1wcml2YXRlOgotICAg
IGRvdWJsZSBtX3N0YXJ0T2Zmc2V0OwotfTsKLQogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dAogICAgIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZQogICAgICwgcHVibGljIEluc3BlY3Rv
cjo6SW5zcGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKQEAgLTIxOCw3ICsy
MDYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIC8vIFNjcmlwdERlYnVn
TGlzdGVuZXIuIFRoaXMgaXMgb25seSB1c2VkIHRvIGNyZWF0ZSByZWNvcmRzIGZvciBwcm9iZSBz
YW1wbGVzLgorICAgIC8vIFNjcmlwdERlYnVnTGlzdGVuZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCwgY29uc3QgU2NyaXB0Jikgb3ZlcnJpZGUgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgaW50LCBpbnQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKSBvdmVycmlkZSB7IH0KQEAg
LTI0Nyw2ICsyMzUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbnRlcm5hbFN0YXJ0KGNvbnN0
IGludCogbWF4Q2FsbFN0YWNrRGVwdGggPSBudWxscHRyKTsKICAgICB2b2lkIGludGVybmFsU3Rv
cCgpOworICAgIGRvdWJsZSB0aW1lc3RhbXAoKTsKIAogICAgIHZvaWQgc2VuZEV2ZW50KFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KTsKICAgICB2b2lkIGFwcGVuZFJlY29y
ZChQYXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhLCBUaW1lbGluZVJl
Y29yZFR5cGUsIGJvb2wgY2FwdHVyZUNhbGxTdGFjaywgRnJhbWUqKTsKQEAgLTI2NCwxNyArMjUz
LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclJlY29yZFN0YWNrKCk7CiAKICAgICB2b2lk
IGxvY2FsVG9QYWdlUXVhZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0Jiwg
RmxvYXRRdWFkKik7Ci0gICAgY29uc3QgVGltZWxpbmVUaW1lQ29udmVydGVyJiB0aW1lQ29udmVy
dGVyKCkgY29uc3QgeyByZXR1cm4gbV90aW1lQ29udmVydGVyOyB9Ci0gICAgZG91YmxlIHRpbWVz
dGFtcCgpOwogICAgIFBhZ2UqIHBhZ2UoKTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9w
YWdlQWdlbnQ7CiAgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyKiBtX3NjcmlwdERlYnVnU2VydmVy
OwotICAgIFRpbWVsaW5lVGltZUNvbnZlcnRlciBtX3RpbWVDb252ZXJ0ZXI7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hl
cj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
VGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBkb3Vi
bGUgbV90aW1lc3RhbXBPZmZzZXQ7CiAKICAgICBWZWN0b3I8VGltZWxpbmVSZWNvcmRFbnRyeT4g
bV9yZWNvcmRTdGFjazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Rp
bWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxp
bmVSZWNvcmRGYWN0b3J5LmNwcAppbmRleCAzZmVjNDAwYWIxMjI0MjU4ZDc4OGQyOWQzZTY1Yjk1
YzE2YmMyMzBjLi4xNmNiMzg4ZGYyODdhZjQ0YWEwMGNmM2RkNjg3Mzc5OGU2MDkzMGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNw
cApAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2su
aD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgogI2luY2x1
ZGUgPHByb2ZpbGVyL1Byb2ZpbGUuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDYwMGVhODNjYzVm
MDg5Yjg0MWIwMTk5N2I4NGI3NmE1MzE2NTVjZWQuLjkwMmJhODM1ZjZiZmQwNDdkZDY3MDQ1ZDdk
OWZmYzc1NmE3OWE3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRl
ICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNs
dWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDx3
dGYvU3RvcHdhdGNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKQEAgLTgxLDYg
KzgyLDcgQEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2wKICAgICAsIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+
KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fcnVudGlt
ZUFnZW50KG51bGxwdHIpCisgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNy
ZWF0ZSgpKQogewogICAgIGF1dG8gcnVudGltZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3Jr
ZXJSdW50aW1lQWdlbnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCAmd29ya2VyR2xv
YmFsU2NvcGUpOwogICAgIG1fcnVudGltZUFnZW50ID0gcnVudGltZUFnZW50LmdldCgpOwpAQCAt
MTcxLDYgKzE3MywxMSBAQCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENhbGxJ
bmplY3RlZFNjcmlwdEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKiBzYwogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CiB9CiAKK1Bhc3NSZWZQdHI8U3RvcHdhdGNoPiBXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyOjpleGVjdXRpb25TdG9wd2F0Y2goKQoreworICAgIHJldHVybiBtX2V4ZWN1dGlvblN0b3B3
YXRjaDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5oCmluZGV4IDdhMjFkNTdlZGZkYTQyYThjZjBkYWNmMzcyZTViMjc0MGRm
NzYxMzguLjExODlkMzdkMWZlNmQ3NDMxNWYxZDcyNjk5OTA3NzhkM2Y2OGMwMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
aApAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYWxsSW5q
ZWN0ZWRTY3JpcHRGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgc2NyaXB0
TmFtZSwgaW50IHNjcmlwdExpbmUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDYWxs
SW5qZWN0ZWRTY3JpcHRGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBmcm9udGVuZEluaXRpYWxpemVkKCkgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdURjo6U3RvcHdhdGNoPiBleGVjdXRpb25TdG9wd2F0Y2goKSBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGF0aW9uRm9yV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqKTsKQEAgLTg0LDYg
Kzg1LDcgQEAgcHJpdmF0ZToKICAgICBXb3JrZXJSdW50aW1lQWdlbnQqIG1fcnVudGltZUFnZW50
OwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5l
bDsKKyAgICBSZWZQdHI8V1RGOjpTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAg
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmRE
aXNwYXRjaGVyOwogICAgIFZlY3RvcjxJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUsIDI+
IG1faW5qZWN0ZWRTY3JpcHRJbnN0cnVtZW50YXRpb25Db29raWVzOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVz
b3VyY2VNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMKaW5kZXggYmQ2YjBhODFkNjE2NTc4MDg1
YjA5ZTEyNDUyMTdiOTE0MWUzZTU3OS4uOGYzZmExZGNjYjFhMDQxMjVkMDkzZjFiZDE4ODFiM2Uz
ZjQyZDgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMK
QEAgLTE4NCwxOCArMTg0LDE5IEBAIFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yTWFpbkZyYW1lUmVzb3Vy
Y2VUcmVlUGF5bG9hZCkKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICB2YXIgZWxhcHNl
ZFRpbWUgPSBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmNvbXB1dGVFbGFwc2VkVGltZSh0
aW1lc3RhbXApOwogICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJ
ZGVudGlmaWVyTWFwW3JlcXVlc3RJZGVudGlmaWVyXTsKICAgICAgICAgaWYgKHJlc291cmNlKSB7
CiAgICAgICAgICAgICAvLyBUaGlzIGlzIGFuIGV4aXN0aW5nIHJlcXVlc3Qgd2hpY2ggaXMgYmVp
bmcgcmVkaXJlY3RlZCwgdXBkYXRlIHRoZSByZXNvdXJjZS4KICAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHJlZGlyZWN0UmVzcG9uc2UpOwotICAgICAgICAgICAgcmVzb3VyY2UudXBkYXRlRm9y
UmVkaXJlY3RSZXNwb25zZShyZXF1ZXN0LnVybCwgcmVxdWVzdC5oZWFkZXJzLCB0aW1lc3RhbXAp
OworICAgICAgICAgICAgcmVzb3VyY2UudXBkYXRlRm9yUmVkaXJlY3RSZXNwb25zZShyZXF1ZXN0
LnVybCwgcmVxdWVzdC5oZWFkZXJzLCBlbGFwc2VkVGltZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uID0g
dGhpcy5faW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uRnJvbVBheWxvYWQoaW5pdGlhdG9yKTsK
IAogICAgICAgICAvLyBUaGlzIGlzIGEgbmV3IHJlcXVlc3QsIG1ha2UgYSBuZXcgcmVzb3VyY2Ug
YW5kIGFkZCBpdCB0byB0aGUgcmlnaHQgZnJhbWUuCi0gICAgICAgIHJlc291cmNlID0gdGhpcy5f
YWRkTmV3UmVzb3VyY2VUb0ZyYW1lKHJlcXVlc3RJZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIs
IGxvYWRlcklkZW50aWZpZXIsIHJlcXVlc3QudXJsLCB0eXBlLCByZXF1ZXN0Lm1ldGhvZCwgcmVx
dWVzdC5oZWFkZXJzLCByZXF1ZXN0LnBvc3REYXRhLCB0aW1lc3RhbXAsIG51bGwsIG51bGwsIGlu
aXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIHJlc291cmNlID0gdGhpcy5fYWRk
TmV3UmVzb3VyY2VUb0ZyYW1lKHJlcXVlc3RJZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIGxv
YWRlcklkZW50aWZpZXIsIHJlcXVlc3QudXJsLCB0eXBlLCByZXF1ZXN0Lm1ldGhvZCwgcmVxdWVz
dC5oZWFkZXJzLCByZXF1ZXN0LnBvc3REYXRhLCBlbGFwc2VkVGltZSwgbnVsbCwgbnVsbCwgaW5p
dGlhdG9yU291cmNlQ29kZUxvY2F0aW9uKTsKIAogICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIHJl
c291cmNlIHdpdGggdGhlIHJlcXVlc3RJZGVudGlmaWVyIHNvIGl0IGNhbiBiZSBmb3VuZCBpbiBm
dXR1cmUgbG9hZGluZyBldmVudHMuCiAgICAgICAgIHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50
aWZpZXJNYXBbcmVxdWVzdElkZW50aWZpZXJdID0gcmVzb3VyY2U7CkBAIC0yMzAsMTMgKzIzMSwx
MyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlID0gewogCiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCEocmVxdWVzdElkZW50aWZpZXIgaW4gdGhpcy5fcmVzb3Vy
Y2VSZXF1ZXN0SWRlbnRpZmllck1hcCkpOwogCisgICAgICAgIHZhciBlbGFwc2VkVGltZSA9IFdl
Ykluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7
CiAgICAgICAgIHZhciBpbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24gPSB0aGlzLl9pbml0aWF0
b3JTb3VyY2VDb2RlTG9jYXRpb25Gcm9tUGF5bG9hZChpbml0aWF0b3IpOwotCiAgICAgICAgIHZh
ciByZXNwb25zZSA9IGNhY2hlZFJlc291cmNlUGF5bG9hZC5yZXNwb25zZTsKLSAgICAgICAgdmFy
IHJlc291cmNlID0gdGhpcy5fYWRkTmV3UmVzb3VyY2VUb0ZyYW1lKHJlcXVlc3RJZGVudGlmaWVy
LCBmcmFtZUlkZW50aWZpZXIsIGxvYWRlcklkZW50aWZpZXIsIGNhY2hlZFJlc291cmNlUGF5bG9h
ZC51cmwsIGNhY2hlZFJlc291cmNlUGF5bG9hZC50eXBlLCBudWxsLCBudWxsLCB0aW1lc3RhbXAs
IG51bGwsIG51bGwsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIHZhciBy
ZXNvdXJjZSA9IHRoaXMuX2FkZE5ld1Jlc291cmNlVG9GcmFtZShyZXF1ZXN0SWRlbnRpZmllciwg
ZnJhbWVJZGVudGlmaWVyLCBsb2FkZXJJZGVudGlmaWVyLCBjYWNoZWRSZXNvdXJjZVBheWxvYWQu
dXJsLCBjYWNoZWRSZXNvdXJjZVBheWxvYWQudHlwZSwgbnVsbCwgbnVsbCwgZWxhcHNlZFRpbWUs
IG51bGwsIG51bGwsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAgICAgIHJlc291
cmNlLm1hcmtBc0NhY2hlZCgpOwotICAgICAgICByZXNvdXJjZS51cGRhdGVGb3JSZXNwb25zZShj
YWNoZWRSZXNvdXJjZVBheWxvYWQudXJsLCByZXNwb25zZS5taW1lVHlwZSwgY2FjaGVkUmVzb3Vy
Y2VQYXlsb2FkLnR5cGUsIHJlc3BvbnNlLmhlYWRlcnMsIHJlc3BvbnNlLnN0YXR1cywgcmVzcG9u
c2Uuc3RhdHVzVGV4dCwgdGltZXN0YW1wKTsKLSAgICAgICAgcmVzb3VyY2UubWFya0FzRmluaXNo
ZWQodGltZXN0YW1wKTsKKyAgICAgICAgcmVzb3VyY2UudXBkYXRlRm9yUmVzcG9uc2UoY2FjaGVk
UmVzb3VyY2VQYXlsb2FkLnVybCwgcmVzcG9uc2UubWltZVR5cGUsIGNhY2hlZFJlc291cmNlUGF5
bG9hZC50eXBlLCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnN0
YXR1c1RleHQsIGVsYXBzZWRUaW1lKTsKKyAgICAgICAgcmVzb3VyY2UubWFya0FzRmluaXNoZWQo
ZWxhcHNlZFRpbWUpOwogCiAgICAgICAgIGlmIChjYWNoZWRSZXNvdXJjZVBheWxvYWQuc291cmNl
TWFwVVJMKQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNvdXJjZU1hcE1hbmFnZXIuZG93bmxv
YWRTb3VyY2VNYXAoY2FjaGVkUmVzb3VyY2VQYXlsb2FkLnNvdXJjZU1hcFVSTCwgcmVzb3VyY2Uu
dXJsLCByZXNvdXJjZSk7CkBAIC0yNTMsNiArMjU0LDcgQEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVz
b3VyY2VNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdGb3JN
YWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAg
ICAgIHZhciBlbGFwc2VkVGltZSA9IFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuY29tcHV0
ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jl
c291cmNlUmVxdWVzdElkZW50aWZpZXJNYXBbcmVxdWVzdElkZW50aWZpZXJdOwogCiAgICAgICAg
IC8vIFdlIG1pZ2h0IG5vdCBoYXZlIGEgcmVzb3VyY2UgaWYgdGhlIGluc3BlY3RvciB3YXMgb3Bl
bmVkIGR1cmluZyB0aGUgcGFnZSBsb2FkIChhZnRlciByZXNvdXJjZVJlcXVlc3RXaWxsQmVTZW50
IGlzIGNhbGxlZCkuCkBAIC0yNzUsNyArMjc3LDcgQEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3Vy
Y2VNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmb3VuZCBh
biBleGlzdGluZyBSZXNvdXJjZSBieSBub3csIHRoZW4gaXQgaXMgYSByZXNvdXJjZSB0aGF0IHdh
cyBsb2FkaW5nIHdoZW4gdGhlIGluc3BlY3RvcgogICAgICAgICAvLyBvcGVuZWQgYW5kIHdlIGp1
c3QgbWlzc2VkIHRoZSByZXNvdXJjZVJlcXVlc3RXaWxsQmVTZW50IGZvciBpdC4gU28gbWFrZSBh
IG5ldyByZXNvdXJjZSBhbmQgYWRkIGl0LgogICAgICAgICBpZiAoIXJlc291cmNlKSB7Ci0gICAg
ICAgICAgICByZXNvdXJjZSA9IHRoaXMuX2FkZE5ld1Jlc291cmNlVG9GcmFtZShyZXF1ZXN0SWRl
bnRpZmllciwgZnJhbWVJZGVudGlmaWVyLCBsb2FkZXJJZGVudGlmaWVyLCByZXNwb25zZS51cmws
IHR5cGUsIG51bGwsIHJlc3BvbnNlLnJlcXVlc3RIZWFkZXJzLCB0aW1lc3RhbXAsIG51bGwsIG51
bGwpOworICAgICAgICAgICAgcmVzb3VyY2UgPSB0aGlzLl9hZGROZXdSZXNvdXJjZVRvRnJhbWUo
cmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgcmVz
cG9uc2UudXJsLCB0eXBlLCBudWxsLCByZXNwb25zZS5yZXF1ZXN0SGVhZGVycywgZWxhcHNlZFRp
bWUsIG51bGwsIG51bGwpOwogCiAgICAgICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIHJlc291cmNl
IHdpdGggdGhlIHJlcXVlc3RJZGVudGlmaWVyIHNvIGl0IGNhbiBiZSBmb3VuZCBpbiBmdXR1cmUg
bG9hZGluZyBldmVudHMuCiAgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlm
aWVyTWFwW3JlcXVlc3RJZGVudGlmaWVyXSA9IHJlc291cmNlOwpAQCAtMjg0LDcgKzI4Niw3IEBA
IFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGlmIChyZXNwb25zZS5mcm9tRGlza0NhY2hlKQogICAgICAgICAgICAgcmVzb3VyY2UubWFya0Fz
Q2FjaGVkKCk7CiAKLSAgICAgICAgcmVzb3VyY2UudXBkYXRlRm9yUmVzcG9uc2UocmVzcG9uc2Uu
dXJsLCByZXNwb25zZS5taW1lVHlwZSwgdHlwZSwgcmVzcG9uc2UuaGVhZGVycywgcmVzcG9uc2Uu
c3RhdHVzLCByZXNwb25zZS5zdGF0dXNUZXh0LCB0aW1lc3RhbXApOworICAgICAgICByZXNvdXJj
ZS51cGRhdGVGb3JSZXNwb25zZShyZXNwb25zZS51cmwsIHJlc3BvbnNlLm1pbWVUeXBlLCB0eXBl
LCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnN0YXR1c1RleHQs
IGVsYXBzZWRUaW1lKTsKICAgICB9LAogCiAgICAgcmVzb3VyY2VSZXF1ZXN0RGlkUmVjZWl2ZURh
dGE6IGZ1bmN0aW9uKHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxl
bmd0aCwgdGltZXN0YW1wKQpAQCAtMjk2LDYgKzI5OCw3IEBAIFdlYkluc3BlY3Rvci5GcmFtZVJl
c291cmNlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcFtyZXF1
ZXN0SWRlbnRpZmllcl07CisgICAgICAgIHZhciBlbGFwc2VkVGltZSA9IFdlYkluc3BlY3Rvci50
aW1lbGluZU1hbmFnZXIuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7CiAKICAgICAgICAg
Ly8gV2UgbWlnaHQgbm90IGhhdmUgYSByZXNvdXJjZSBpZiB0aGUgaW5zcGVjdG9yIHdhcyBvcGVu
ZWQgZHVyaW5nIHRoZSBwYWdlIGxvYWQgKGFmdGVyIHJlc291cmNlUmVxdWVzdFdpbGxCZVNlbnQg
aXMgY2FsbGVkKS4KICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBhc3NlcnQgaW4gdGhpcyBj
YXNlIHNpbmNlIHdlIGRvIGxpa2VseSBoYXZlIHRoZSByZXNvdXJjZSwgdmlhIFBhZ2VBZ2VudC5n
ZXRSZXNvdXJjZVRyZWUuIFRoZSBSZXNvdXJjZQpAQCAtMzAzLDcgKzMwNiw3IEBAIFdlYkluc3Bl
Y3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghcmVz
b3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgcmVzb3VyY2UuaW5jcmVhc2VT
aXplKGRhdGFMZW5ndGgsIHRpbWVzdGFtcCk7CisgICAgICAgIHJlc291cmNlLmluY3JlYXNlU2l6
ZShkYXRhTGVuZ3RoLCBlbGFwc2VkVGltZSk7CiAKICAgICAgICAgaWYgKGVuY29kZWREYXRhTGVu
Z3RoICE9PSAtMSkKICAgICAgICAgICAgIHJlc291cmNlLmluY3JlYXNlVHJhbnNmZXJTaXplKGVu
Y29kZWREYXRhTGVuZ3RoKTsKQEAgLTMyNCw3ICszMjcsOCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVS
ZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXJlc291cmNlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHJlc291cmNlLm1hcmtBc0ZpbmlzaGVkKHRpbWVz
dGFtcCk7CisgICAgICAgIHZhciBlbGFwc2VkVGltZSA9IFdlYkluc3BlY3Rvci50aW1lbGluZU1h
bmFnZXIuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7CisgICAgICAgIHJlc291cmNlLm1h
cmtBc0ZpbmlzaGVkKGVsYXBzZWRUaW1lKTsKIAogICAgICAgICBpZiAoc291cmNlTWFwVVJMKQog
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNvdXJjZU1hcE1hbmFnZXIuZG93bmxvYWRTb3VyY2VN
YXAoc291cmNlTWFwVVJMLCByZXNvdXJjZS51cmwsIHJlc291cmNlKTsKQEAgLTM0Nyw3ICszNTEs
OCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlID0gewogICAg
ICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHJlc291
cmNlLm1hcmtBc0ZhaWxlZChjYW5jZWxlZCwgdGltZXN0YW1wKTsKKyAgICAgICAgdmFyIGVsYXBz
ZWRUaW1lID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5jb21wdXRlRWxhcHNlZFRpbWUo
dGltZXN0YW1wKTsKKyAgICAgICAgcmVzb3VyY2UubWFya0FzRmFpbGVkKGNhbmNlbGVkLCBlbGFw
c2VkVGltZSk7CiAKICAgICAgICAgaWYgKHJlc291cmNlID09PSByZXNvdXJjZS5wYXJlbnRGcmFt
ZS5wcm92aXNpb25hbE1haW5SZXNvdXJjZSkKICAgICAgICAgICAgIHJlc291cmNlLnBhcmVudEZy
YW1lLmNsZWFyUHJvdmlzaW9uYWxMb2FkKCk7CkBAIC0zODIsNyArMzg3LDcgQEAgV2ViSW5zcGVj
dG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZSA9IHsKIAogICAgIC8vIFByaXZhdGUK
IAotICAgIF9hZGROZXdSZXNvdXJjZVRvRnJhbWU6IGZ1bmN0aW9uKHJlcXVlc3RJZGVudGlmaWVy
LCBmcmFtZUlkZW50aWZpZXIsIGxvYWRlcklkZW50aWZpZXIsIHVybCwgdHlwZSwgcmVxdWVzdE1l
dGhvZCwgcmVxdWVzdEhlYWRlcnMsIHJlcXVlc3REYXRhLCB0aW1lc3RhbXAsIGZyYW1lTmFtZSwg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uKQorICAgIF9h
ZGROZXdSZXNvdXJjZVRvRnJhbWU6IGZ1bmN0aW9uKHJlcXVlc3RJZGVudGlmaWVyLCBmcmFtZUlk
ZW50aWZpZXIsIGxvYWRlcklkZW50aWZpZXIsIHVybCwgdHlwZSwgcmVxdWVzdE1ldGhvZCwgcmVx
dWVzdEhlYWRlcnMsIHJlcXVlc3REYXRhLCBlbGFwc2VkVGltZSwgZnJhbWVOYW1lLCBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCBpbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24pCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydCghdGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291cmNlVHJlZVBh
eWxvYWQpOwogCkBAIC0zOTYsMTIgKzQwMSwxMiBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJj
ZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgZWxzZSBpZiAoZnJhbWUucHJvdmlz
aW9uYWxNYWluUmVzb3VyY2UgJiYgZnJhbWUucHJvdmlzaW9uYWxNYWluUmVzb3VyY2UudXJsID09
PSB1cmwgJiYgZnJhbWUucHJvdmlzaW9uYWxMb2FkZXJJZGVudGlmaWVyID09PSBsb2FkZXJJZGVu
dGlmaWVyKQogICAgICAgICAgICAgICAgIHJlc291cmNlID0gZnJhbWUucHJvdmlzaW9uYWxNYWlu
UmVzb3VyY2U7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXNvdXJjZSA9
IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UodXJsLCBudWxsLCB0eXBlLCBsb2FkZXJJZGVudGlm
aWVyLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEhlYWRlcnMsIHJl
cXVlc3REYXRhLCB0aW1lc3RhbXAsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAg
ICAgICAgICAgICAgcmVzb3VyY2UgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlKHVybCwgbnVs
bCwgdHlwZSwgbG9hZGVySWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RNZXRo
b2QsIHJlcXVlc3RIZWFkZXJzLCByZXF1ZXN0RGF0YSwgZWxhcHNlZFRpbWUsIGluaXRpYXRvclNv
dXJjZUNvZGVMb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgdGhpcy5fYWRkUmVzb3VyY2VUb0Zy
YW1lKGZyYW1lLCByZXNvdXJjZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAvLyBUaGlzIGlzIGEgbmV3IHJlcXVlc3QgZm9yIGEgbmV3IGZyYW1lLCB3aGlj
aCBpcyBhbHdheXMgdGhlIG1haW4gcmVzb3VyY2UuCi0gICAgICAgICAgICByZXNvdXJjZSA9IG5l
dyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UodXJsLCBudWxsLCB0eXBlLCBsb2FkZXJJZGVudGlmaWVy
LCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEhlYWRlcnMsIHJlcXVl
c3REYXRhLCB0aW1lc3RhbXAsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAg
ICAgICByZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UodXJsLCBudWxsLCB0eXBl
LCBsb2FkZXJJZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhvZCwgcmVx
dWVzdEhlYWRlcnMsIHJlcXVlc3REYXRhLCBlbGFwc2VkVGltZSwgaW5pdGlhdG9yU291cmNlQ29k
ZUxvY2F0aW9uKTsKICAgICAgICAgICAgIGZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5GcmFtZShm
cmFtZUlkZW50aWZpZXIsIGZyYW1lTmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbiwgbG9hZGVySWRl
bnRpZmllciwgcmVzb3VyY2UpOwogICAgICAgICAgICAgdGhpcy5fZnJhbWVJZGVudGlmaWVyTWFw
W2ZyYW1lLmlkXSA9IGZyYW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9Qcm9iZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Qcm9iZU1hbmFnZXIuanMKaW5kZXgg
N2UyODljMWQ4YzRjYjBlY2VmNmU4NjE3ZGNhNDU0MmY2ODA3Mjg4MC4uZTY3Y2U1OWFmZjZkNjgz
MmE1Njc4MjZjNjZiOTFiMjZkY2YwNjg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUHJvYmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Byb2JlTWFuYWdlci5q
cwpAQCAtNzUsNyArNzUsOCBAQCBXZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyLnByb3RvdHlwZSA9
IHsKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmll
ci5oYXMoc2FtcGxlLnByb2JlSWQpLCAiVW5rbm93biBwcm9iZSBpZGVudGlmaWVyIHNwZWNpZmll
ZCBmb3Igc2FtcGxlOiAiLCBzYW1wbGUpOwogICAgICAgICB2YXIgcHJvYmUgPSB0aGlzLl9wcm9i
ZXNCeUlkZW50aWZpZXIuZ2V0KHNhbXBsZS5wcm9iZUlkKTsKLSAgICAgICAgcHJvYmUuYWRkU2Ft
cGxlKG5ldyBXZWJJbnNwZWN0b3IuUHJvYmVTYW1wbGUoc2FtcGxlLnNhbXBsZUlkLCBzYW1wbGUu
YmF0Y2hJZCwgc2FtcGxlLnRpbWVzdGFtcCwgc2FtcGxlLnBheWxvYWQpKTsKKyAgICAgICAgdmFy
IGVsYXBzZWRUaW1lID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5jb21wdXRlRWxhcHNl
ZFRpbWUoc2FtcGxlLnRpbWVzdGFtcCk7CisgICAgICAgIHByb2JlLmFkZFNhbXBsZShuZXcgV2Vi
SW5zcGVjdG9yLlByb2JlU2FtcGxlKHNhbXBsZS5zYW1wbGVJZCwgc2FtcGxlLmJhdGNoSWQsIGVs
YXBzZWRUaW1lLCBzYW1wbGUucGF5bG9hZCkpOwogICAgIH0sCiAKICAgICAvLyBQcml2YXRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9UaW1lbGluZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXggOTAyMTJlMTQyNTY4Y2I2YjNi
YWE0MTliMWJmNzAzYWM4NWRlZTg4Ni4uODk5OWY2NjE3MmVjNjcyOTYwODk2ZDhmMDE1M2MwYzYx
MTQ3MzIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwpAQCAtMTIxLDYg
KzEyMSwxNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fYWN0aXZlUmVjb3JkaW5nID0gbnVsbDsKICAgICB9LAogCisgICAgY29tcHV0
ZUVsYXBzZWRUaW1lOiBmdW5jdGlvbih0aW1lc3RhbXApCisgICAgeworICAgICAgICBpZiAoIXRo
aXMuX2FjdGl2ZVJlY29yZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICByZXR1
cm4gdGhpcy5fYWN0aXZlUmVjb3JkaW5nLmNvbXB1dGVFbGFwc2VkVGltZSh0aW1lc3RhbXApOwor
ICAgIH0sCisKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIGNhcHR1cmluZ1N0YXJ0ZWQ6IGZ1bmN0
aW9uKCkKQEAgLTE2MywxMCArMTcxLDggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1JlY29yZChyZWNvcmRQYXls
b2FkLCBwYXJlbnRSZWNvcmRQYXlsb2FkKQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBDb252
ZXJ0IHRoZSB0aW1lc3RhbXBzIHRvIHNlY29uZHMgdG8gbWF0Y2ggdGhlIHJlc291cmNlIHRpbWVz
dGFtcHMuCi0gICAgICAgICAgICB2YXIgc3RhcnRUaW1lID0gcmVjb3JkUGF5bG9hZC5zdGFydFRp
bWUgLyAxMDAwOwotICAgICAgICAgICAgdmFyIGVuZFRpbWUgPSByZWNvcmRQYXlsb2FkLmVuZFRp
bWUgLyAxMDAwOwotCisgICAgICAgICAgICB2YXIgc3RhcnRUaW1lID0gdGhpcy5hY3RpdmVSZWNv
cmRpbmcuY29tcHV0ZUVsYXBzZWRUaW1lKHJlY29yZFBheWxvYWQuc3RhcnRUaW1lKTsKKyAgICAg
ICAgICAgIHZhciBlbmRUaW1lID0gdGhpcy5hY3RpdmVSZWNvcmRpbmcuY29tcHV0ZUVsYXBzZWRU
aW1lKHJlY29yZFBheWxvYWQuZW5kVGltZSk7CiAgICAgICAgICAgICB2YXIgY2FsbEZyYW1lcyA9
IHRoaXMuX2NhbGxGcmFtZXNGcm9tUGF5bG9hZChyZWNvcmRQYXlsb2FkLnN0YWNrVHJhY2UpOwog
CiAgICAgICAgICAgICB2YXIgc2lnbmlmaWNhbnRDYWxsRnJhbWUgPSBudWxsOwpAQCAtMzkzLDcg
KzM5OSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlID0gewogICAg
IHBhZ2VEaWRMb2FkOiBmdW5jdGlvbih0aW1lc3RhbXApCiAgICAgewogICAgICAgICBpZiAoaXNO
YU4oV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5sb2FkRXZlbnRU
aW1lc3RhbXApKQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2Vy
Lm1haW5GcmFtZS5tYXJrTG9hZEV2ZW50KHRpbWVzdGFtcCk7CisgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLm1hcmtMb2FkRXZlbnQodGhpcy5h
Y3RpdmVSZWNvcmRpbmcuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCkpOwogICAgIH0sCiAK
ICAgICAvLyBQcml2YXRlCkBAIC00MTcsNiArNDIzLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChvbGRSZWNvcmRpbmcpCiAgICAgICAg
ICAgICBvbGRSZWNvcmRpbmcudW5sb2FkZWQoKTsKIAorICAgICAgICB0aGlzLl9sZWdhY3lGaXJz
dFJlY29yZGVkVGltZXN0YW1wID0gTmFOOwogICAgICAgICB0aGlzLl9hY3RpdmVSZWNvcmRpbmcg
PSBuZXdSZWNvcmRpbmc7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuUmVjb3JkaW5nTG9hZGVkLCB7b2xkUmVj
b3JkaW5nOiBvbGRSZWNvcmRpbmd9KTsKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlLmpzCmluZGV4IDI3YjA5YjA2ODk5NzNi
NTNkNDA3MWFhMjgyMzFiMzUwMThhMzIzMjEuLmI3OGI2MGFhMGZlOTg2NjdmOGUyZDdkZWE2OGM2
YzQwMzIzNDczMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9Qcm9iZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUHJvYmUuanMKQEAgLTI0LDExICsyNCwxMSBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuUHJvYmVTYW1wbGUgPSBmdW5jdGlvbihzYW1wbGVJZCwgYmF0
Y2hJZCwgdGltZXN0YW1wLCBwYXlsb2FkKQorV2ViSW5zcGVjdG9yLlByb2JlU2FtcGxlID0gZnVu
Y3Rpb24oc2FtcGxlSWQsIGJhdGNoSWQsIGVsYXBzZWRUaW1lLCBwYXlsb2FkKQogewogICAgIHRo
aXMuc2FtcGxlSWQgPSBzYW1wbGVJZDsKICAgICB0aGlzLmJhdGNoSWQgPSBiYXRjaElkOwotICAg
IHRoaXMudGltZXN0YW1wID0gdGltZXN0YW1wOworICAgIHRoaXMudGltZXN0YW1wID0gZWxhcHNl
ZFRpbWU7CiAgICAgdGhpcy5vYmplY3QgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21Q
YXlsb2FkKHBheWxvYWQpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCmluZGV4IDdhMjQ1YzM5ZGM2YzAxOTcw
YWU1NDQxNjE3ZmJlOGYwZDk4YTBkMTMuLmEwNTQ2MGVjMzg0ZGI0MWEwNDA4MDNkMTY0YzRlODNm
ZDI3NmE5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9SZXNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKQEAgLTQ1OSw3ICs0NTksNyBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9LAogCi0g
ICAgdXBkYXRlRm9yUmVkaXJlY3RSZXNwb25zZTogZnVuY3Rpb24odXJsLCByZXF1ZXN0SGVhZGVy
cywgdGltZXN0YW1wKQorICAgIHVwZGF0ZUZvclJlZGlyZWN0UmVzcG9uc2U6IGZ1bmN0aW9uKHVy
bCwgcmVxdWVzdEhlYWRlcnMsIGVsYXBzZWRUaW1lKQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoIXRoaXMuX2ZpbmlzaGVkKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2Zh
aWxlZCk7CkBAIC00NjksNyArNDY5LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICB0aGlzLl91cmwgPSB1cmw7CiAgICAgICAgIHRoaXMuX3JlcXVlc3RI
ZWFkZXJzID0gcmVxdWVzdEhlYWRlcnMgfHwge307Ci0gICAgICAgIHRoaXMuX2xhc3RSZWRpcmVj
dFJlY2VpdmVkVGltZXN0YW1wID0gdGltZXN0YW1wIHx8IE5hTjsKKyAgICAgICAgdGhpcy5fbGFz
dFJlZGlyZWN0UmVjZWl2ZWRUaW1lc3RhbXAgPSBlbGFwc2VkVGltZSB8fCBOYU47CiAKICAgICAg
ICAgaWYgKG9sZFVSTCAhPT0gdXJsKSB7CiAgICAgICAgICAgICAvLyBEZWxldGUgdGhlIFVSTCBj
b21wb25lbnRzIHNvIHRoZSBVUkwgaXMgcmUtcGFyc2VkIHRoZSBuZXh0IHRpbWUgaXQgaXMgcmVx
dWVzdGVkLgpAQCAtNDgyLDcgKzQ4Miw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5FdmVudC5UaW1lc3RhbXBzRGlkQ2hhbmdlKTsKICAgICB9LAogCi0gICAgdXBk
YXRlRm9yUmVzcG9uc2U6IGZ1bmN0aW9uKHVybCwgbWltZVR5cGUsIHR5cGUsIHJlc3BvbnNlSGVh
ZGVycywgc3RhdHVzQ29kZSwgc3RhdHVzVGV4dCwgdGltZXN0YW1wKQorICAgIHVwZGF0ZUZvclJl
c3BvbnNlOiBmdW5jdGlvbih1cmwsIG1pbWVUeXBlLCB0eXBlLCByZXNwb25zZUhlYWRlcnMsIHN0
YXR1c0NvZGUsIHN0YXR1c1RleHQsIGVsYXBzZWRUaW1lKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoIXRoaXMuX2ZpbmlzaGVkKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMu
X2ZhaWxlZCk7CkBAIC01MDEsNyArNTAxLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7CiAgICAgICAg
IHRoaXMuX3N0YXR1c1RleHQgPSBzdGF0dXNUZXh0OwogICAgICAgICB0aGlzLl9yZXNwb25zZUhl
YWRlcnMgPSByZXNwb25zZUhlYWRlcnMgfHwge307Ci0gICAgICAgIHRoaXMuX3Jlc3BvbnNlUmVj
ZWl2ZWRUaW1lc3RhbXAgPSB0aW1lc3RhbXAgfHwgTmFOOworICAgICAgICB0aGlzLl9yZXNwb25z
ZVJlY2VpdmVkVGltZXN0YW1wID0gZWxhcHNlZFRpbWUgfHwgTmFOOwogCiAgICAgICAgIHRoaXMu
X3Jlc3BvbnNlSGVhZGVyc1NpemUgPSBTdHJpbmcodGhpcy5fc3RhdHVzQ29kZSkubGVuZ3RoICsg
dGhpcy5fc3RhdHVzVGV4dC5sZW5ndGggKyAxMjsgLy8gRXh0cmEgbGVuZ3RoIGlzIGZvciAiSFRU
UC8xLjEgIiwgIiAiLCBhbmQgIlxyXG4iLgogICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMu
X3Jlc3BvbnNlSGVhZGVycykKQEAgLTU2Myw3ICs1NjMsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIAotICAgIGlu
Y3JlYXNlU2l6ZTogZnVuY3Rpb24oZGF0YUxlbmd0aCwgdGltZXN0YW1wKQorICAgIGluY3JlYXNl
U2l6ZTogZnVuY3Rpb24oZGF0YUxlbmd0aCwgZWxhcHNlZFRpbWUpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChkYXRhTGVuZ3RoID49IDApOwogCkBAIC01NzQsNyArNTc0LDcgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9zaXplICs9
IGRhdGFMZW5ndGg7CiAKLSAgICAgICAgdGhpcy5fbGFzdERhdGFSZWNlaXZlZFRpbWVzdGFtcCA9
IHRpbWVzdGFtcCB8fCBOYU47CisgICAgICAgIHRoaXMuX2xhc3REYXRhUmVjZWl2ZWRUaW1lc3Rh
bXAgPSBlbGFwc2VkVGltZSB8fCBOYU47CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlNpemVEaWRDaGFuZ2UsIHtwcmV2
aW91c1NpemU6IHByZXZpb3VzU2l6ZX0pOwogCkBAIC02MDUsMTMgKzYwNSwxMyBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlRyYW5zZmVyU2l6ZURp
ZENoYW5nZSk7CiAgICAgfSwKIAotICAgIG1hcmtBc0ZpbmlzaGVkOiBmdW5jdGlvbih0aW1lc3Rh
bXApCisgICAgbWFya0FzRmluaXNoZWQ6IGZ1bmN0aW9uKGVsYXBzZWRUaW1lKQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2ZhaWxlZCk7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCF0aGlzLl9jYW5jZWxlZCk7CiAKICAgICAgICAgdGhpcy5fZmluaXNoZWQgPSB0cnVlOwot
ICAgICAgICB0aGlzLl9maW5pc2hlZE9yRmFpbGVkVGltZXN0YW1wID0gdGltZXN0YW1wIHx8IE5h
TjsKKyAgICAgICAgdGhpcy5fZmluaXNoZWRPckZhaWxlZFRpbWVzdGFtcCA9IGVsYXBzZWRUaW1l
IHx8IE5hTjsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuRXZlbnQuTG9hZGluZ0RpZEZpbmlzaCk7CiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UaW1lc3Rh
bXBzRGlkQ2hhbmdlKTsKQEAgLTYyMCwxMyArNjIwLDEzIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnJlcXVlc3RDb250ZW50RnJvbUJhY2tl
bmRJZk5lZWRlZCgpOwogICAgIH0sCiAKLSAgICBtYXJrQXNGYWlsZWQ6IGZ1bmN0aW9uKGNhbmNl
bGVkLCB0aW1lc3RhbXApCisgICAgbWFya0FzRmFpbGVkOiBmdW5jdGlvbihjYW5jZWxlZCwgZWxh
cHNlZFRpbWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZmluaXNoZWQp
OwogCiAgICAgICAgIHRoaXMuX2ZhaWxlZCA9IHRydWU7CiAgICAgICAgIHRoaXMuX2NhbmNlbGVk
ID0gY2FuY2VsZWQ7Ci0gICAgICAgIHRoaXMuX2ZpbmlzaGVkT3JGYWlsZWRUaW1lc3RhbXAgPSB0
aW1lc3RhbXAgfHwgTmFOOworICAgICAgICB0aGlzLl9maW5pc2hlZE9yRmFpbGVkVGltZXN0YW1w
ID0gZWxhcHNlZFRpbWUgfHwgTmFOOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5Mb2FkaW5nRGlkRmFpbCk7CiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5F
dmVudC5UaW1lc3RhbXBzRGlkQ2hhbmdlKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnNlcnZpY2VQZW5kaW5nQ29u
dGVudFJlcXVlc3RzKHRydWUpOwogICAgIH0sCiAKLSAgICByZXZlcnRNYXJrQXNGaW5pc2hlZDog
ZnVuY3Rpb24odGltZXN0YW1wKQorICAgIHJldmVydE1hcmtBc0ZpbmlzaGVkOiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZmFpbGVkKTsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoIXRoaXMuX2NhbmNlbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZGlu
Zy5qcwppbmRleCAyODVhNDVmZjE2NDVlYzFiZmM1NzExZmI3MjE2MWE0ZjA5NWI1ZmM4Li5hMzdi
YjljOGJjOWJhZjRhZDA3Mzg1ZDZmZmUxMzUwNzRmMzU4ZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVSZWNvcmRpbmcuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5l
UmVjb3JkaW5nLmpzCkBAIC0zMiw2ICszMiw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZGluZyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lKQogICAgIHRoaXMuX2Rpc3Bs
YXlOYW1lID0gZGlzcGxheU5hbWU7CiAgICAgdGhpcy5faXNXcml0YWJsZSA9IHRydWU7CiAKKyAg
ICAvLyBGb3IgbGVnYWN5IGJhY2tlbmRzLCB3ZSBjb21wdXRlIHRoZSBlbGFwc2VkIHRpbWUgb2Yg
cmVjb3JkcyByZWxhdGl2ZSB0byB0aGlzIHRpbWVzdGFtcC4KKyAgICB0aGlzLl9sZWdhY3lGaXJz
dFJlY29yZGVkVGltZXN0YW1wID0gTmFOOworCiAgICAgZm9yICh2YXIga2V5IG9mIE9iamVjdC5r
ZXlzKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlKSkgewogICAgICAgICB2YXIgdHlw
ZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlW2tleV07CiAgICAgICAgIHZhciB0
aW1lbGluZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmUodHlwZSk7CkBAIC00OSw2ICs1Miw4
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudCA9IHsKICAgICBUaW1lc1Vw
ZGF0ZWQ6ICJ0aW1lbGluZS1yZWNvcmRpbmctdGltZXMtdXBkYXRlZCIKIH07CiAKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZGluZy5UaW1lc3RhbXBUaHJlc2hvbGRGb3JMZWdhY3lSZWNvcmRD
b252ZXJzaW9uID0gMjg4MDAwMDA7IC8vIERhdGUucGFyc2UoIkphbiAxLCAxOTcwIikKKwogV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLnByb3RvdHlwZSA9IHsKICAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLAogICAgIF9fcHJvdG9fXzogV2ViSW5z
cGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCkBAIC0xNzUsNiArMTgwLDI0IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQu
U291cmNlQ29kZVRpbWVsaW5lQWRkZWQsIHtzb3VyY2VDb2RlVGltZWxpbmU6IHNvdXJjZUNvZGVU
aW1lbGluZX0pOwogICAgIH0sCiAKKyAgICBjb21wdXRlRWxhcHNlZFRpbWU6IGZ1bmN0aW9uKHRp
bWVzdGFtcCkKKyAgICB7CisgICAgICAgIGlmICghdGltZXN0YW1wIHx8IGlzTmFOKHRpbWVzdGFt
cCkpCisgICAgICAgICAgICByZXR1cm4gTmFOOworCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkg
KGlPUzgpOiBvbGQgYmFja2VuZHMgc2VuZCB0aW1lc3RhbXBzIChtaWxsaXNlY29uZHMgc2luY2Ug
dGhlIGVwb2NoKSwgcmF0aGVyCisgICAgICAgIC8vIHRoYW4gc2Vjb25kcyBlbGFwc2VkIHNpbmNl
IHRpbWVsaW5lIGNhcHR1cmluZyBzdGFydGVkLiBXZSBhcHByb3hpbWF0ZSB0aGUgbGF0dGVyIGJ5
CisgICAgICAgIC8vIHN1YnRyYWN0aW5nIHRoZSBzdGFydCB0aW1lc3RhbXAsIGFzIG9sZCB2ZXJz
aW9ucyBkaWQgbm90IHVzZSBtb25vdG9uaWMgdGltZXMuCisgICAgICAgIGlmIChpc05hTih0aGlz
Ll9sZWdhY3lGaXJzdFJlY29yZGVkVGltZXN0YW1wKSkKKyAgICAgICAgICAgIHRoaXMuX2xlZ2Fj
eUZpcnN0UmVjb3JkZWRUaW1lc3RhbXAgPSB0aW1lc3RhbXA7CisKKyAgICAgICAgLy8gSWYgdGhl
IHJlY29yZCdzIHN0YXJ0IHRpbWUgc2VtcyB1bnJlYXNvbmFibHkgbGFyZ2UsIHRyZWF0IGl0IGFz
IGEgbGVnYWN5IHRpbWVzdGFtcC4KKyAgICAgICAgaWYgKHRpbWVzdGFtcCA+IFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZGluZy5UaW1lc3RhbXBUaHJlc2hvbGRGb3JMZWdhY3lSZWNvcmRDb252
ZXJzaW9uKQorICAgICAgICAgICAgcmV0dXJuICh0aW1lc3RhbXAgLSB0aGlzLl9sZWdhY3lGaXJz
dFJlY29yZGVkVGltZXN0YW1wKSAvIDEwMDAuMDsKKworICAgICAgICByZXR1cm4gdGltZXN0YW1w
OworICAgIH0sCisKICAgICAvLyBQcml2YXRlCiAKICAgICBfa2V5Rm9yUmVjb3JkOiBmdW5jdGlv
bihyZWNvcmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UaW1lbGluZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVDb250ZW50Vmlldy5qcwppbmRleCBiZTRhNGU3YTg4
NDEyYmM0MDczMzhlNTE5YjA1YmZjOTI1YjRlMjBkLi5hMjAzZjJlMzFmYjM5OWNlYjdlZDA5NGEw
OWYzYjM1ZWMwYzlmMDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UaW1lbGluZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lQ29udGVudFZpZXcuanMKQEAgLTk4
LDYgKzk4LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZpZXcgPSBmdW5jdGlvbihy
ZWNvcmRpbmcpCiAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RhcnRlZCwg
dGhpcy5fY2FwdHVyaW5nU3RhcnRlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5l
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZl
bnQuQ2FwdHVyaW5nU3RvcHBlZCwgdGhpcy5fY2FwdHVyaW5nU3RvcHBlZCwgdGhpcyk7CiAKKyAg
ICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHRoaXMuX2RlYnVnZ2VyUGF1c2VkLCB0
aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5SZXN1bWVkLCB0aGlzLl9kZWJ1Z2dl
clJlc3VtZWQsIHRoaXMpOworCiAgICAgdGhpcy5zaG93T3ZlcnZpZXdUaW1lbGluZVZpZXcoKTsK
IH07CiAKQEAgLTQwNyw2ICs0MTAsMjIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zdG9wVXBkYXRpbmdDdXJyZW50VGltZSgp
OwogICAgIH0sCiAKKyAgICBfZGVidWdnZXJQYXVzZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsK
KyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Npb25TdGF0ZSA9PT0g
V2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuU2Vzc2lvblN0YXRlLlJlcGxheWluZykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9zdG9wVXBkYXRpbmdDdXJyZW50VGltZSgp
OworICAgIH0sCisKKyAgICBfZGVidWdnZXJSZXN1bWVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZXNzaW9uU3RhdGUgPT09
IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25TdGF0ZS5SZXBsYXlpbmcpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fc3RhcnRVcGRhdGluZ0N1cnJlbnRUaW1l
KCk7CisgICAgfSwKKwogICAgIF9yZWNvcmRpbmdUaW1lc1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl93YWl0aW5nVG9SZXNldEN1cnJlbnRUaW1lKQo=
</data>
<flag name="review"
          id="264842"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240460</attachid>
            <date>2014-10-25 20:47:00 -0700</date>
            <delta_ts>2014-10-25 20:47:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136351-20141025204453.patch</filename>
            <type>text/plain</type>
            <size>3150</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OTA0OGUzNWUyYTQ2Y2Q0NjYwZjc0MzRhYTY2YjM2ZmY0ODJiYzg3Li4xNWNhZTYyMDhmYTNkN2Yy
ZDg0NWY5NmIyOGVlOWIyNWU0OTYxMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNC0xMC0yNSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdGltZWxpbmVzIHNob3VsZCBub3QgY291
bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBpbiB0aGUgZGVidWdnZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM1MQorCisgICAgICAgIFVu
cmV2aWV3ZWQsIGZvbGxvdy11cCBmaXggYWZ0ZXIgcjE3NTIwMy4gVGhlIGRlYnVnZ2VyIGFnZW50
IHNob3VsZCBub3QgYXNzdW1lCisgICAgICAgIHRoYXQgdGhlIGluc3BlY3RvciBlbnZpcm9ubWVu
dCdzIHN0b3B3YXRjaCBoYXMgYWxyZWFkeSBiZWVuIHN0YXJ0ZWQuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZSk6IENoZWNrIGlmIHRoZSBzdG9w
d2F0Y2ggaXNBY3RpdmUoKSBiZWZvcmUgc3RvcHBpbmcuCisKIDIwMTQtMTAtMTggIEJyaWFuIEou
IEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHRpbWVsaW5lcyBzaG91bGQgbm90IGNvdW50IHRpbWUgZWxhcHNlZCB3aGlsZSBwYXVzZWQgaW4g
dGhlIGRlYnVnZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IDZlZWFhODdkMDUyMzJmOTkxOWJhMzczNmM3MGNlNmZkMjgzZTdh
OTQuLjk3M2ExOTYxYWE1YTFkOGVjNDA5NDQ1NjUwOTRlZjQyZGNkOTc1YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTQtMTAtMjUgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24u
ZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRpbWVsaW5lcyBzaG91bGQgbm90IGNvdW50
IHRpbWUgZWxhcHNlZCB3aGlsZSBwYXVzZWQgaW4gdGhlIGRlYnVnZ2VyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYzNTEKKworICAgICAgICBVbnJl
dmlld2VkLCBmb2xsb3ctdXAgZml4IGFmdGVyIHIxNzUyMDMuIFRoZSBkZWJ1Z2dlciBhZ2VudCBz
aG91bGQgbm90IGFzc3VtZQorICAgICAgICB0aGF0IHRoZSBpbnNwZWN0b3IgZW52aXJvbm1lbnQn
cyBzdG9wd2F0Y2ggaGFzIGFscmVhZHkgYmVlbiBzdGFydGVkLgorCisgICAgICAgICogd3RmL1N0
b3B3YXRjaC5oOgorICAgICAgICAoV1RGOjpTdG9wd2F0Y2g6OmlzQWN0aXZlKTogQWRkZWQuIEFs
bG93IHBlZWtpbmcgYXQgdGhlIHN0b3B3YXRjaCBzdGF0ZS4KKwogMjAxNC0xMC0xOCAgQnJpYW4g
Si4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogdGltZWxpbmVzIHNob3VsZCBub3QgY291bnQgdGltZSBlbGFwc2VkIHdoaWxlIHBhdXNlZCBp
biB0aGUgZGVidWdnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZGY4
ZTNjMjY5ZjcwMDg1ZGViODgxNDQ5ZTM0MTBmZDVjM2E1YjVlZC4uNDllNzJiODUzN2QxYjU1ODc3
MGRjZWM1NTBjNWNjOWMyMjNkNWVlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTY1Myw4ICs2NTMsMTAgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQ
YXVzZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IERlcHJlY2EKIAogICAgIGlm
IChtX2xpc3RlbmVyKQogICAgICAgICBtX2xpc3RlbmVyLT5kaWRQYXVzZSgpOwotICAgIAotICAg
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlv
blN0b3B3YXRjaCgpLT5zdG9wKCk7CisKKyAgICBSZWZQdHI8U3RvcHdhdGNoPiBzdG9wd2F0Y2gg
PSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRp
b25TdG9wd2F0Y2goKTsKKyAgICBpZiAoc3RvcHdhdGNoICYmIHN0b3B3YXRjaC0+aXNBY3RpdmUo
KSkKKyAgICAgICAgc3RvcHdhdGNoLT5zdG9wKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblNvdW5kKGludCBicmVha3BvaW50QWN0aW9uSWRlbnRp
ZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0b3B3YXRjaC5oIGIvU291cmNlL1dU
Ri93dGYvU3RvcHdhdGNoLmgKaW5kZXggZDdlNWRiMTIzYzUzMmEzNGEwNTUyZjkwZDAwZDhmOWY1
MjdiZmU1OS4uNDIxMzkxMWE1NWY0MmJhY2NiZWU5M2Y3MmRlMWNiN2ZlMzU1MzQ1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvU3RvcHdhdGNoLmgKKysrIGIvU291cmNlL1dURi93dGYvU3Rv
cHdhdGNoLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgZG91YmxlIGVsYXBzZWRU
aW1lKCk7CiAKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gIWlzbmFuKG1fbGFz
dFN0YXJ0VGltZSk7IH0KIHByaXZhdGU6CiAgICAgU3RvcHdhdGNoKCkKICAgICAgICAgOiBtX2Vs
YXBzZWRUaW1lKDAuMCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>