<?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>31472</bug_id>
          
          <creation_ts>2009-11-13 07:08:48 -0800</creation_ts>
          <short_desc>Web Inspector: Make DRT show web inspector for tests in inspector/ folder.</short_desc>
          <delta_ts>2009-11-17 05:12:10 -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 (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>31471</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>aroben</cc>
    
    <cc>bweinstein</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>zundel</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>163302</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-13 07:08:48 -0800</bug_when>
    <thetext>Currently we show inspector from within the test and force a reload. This makes tests slow and flaky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163322</commentid>
    <comment_count>1</comment_count>
      <attachid>43161</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-13 08:43:41 -0800</bug_when>
    <thetext>Created attachment 43161
[PATCH] Work in progress patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163340</commentid>
    <comment_count>2</comment_count>
      <attachid>43161</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-13 09:20:43 -0800</bug_when>
    <thetext>Comment on attachment 43161
[PATCH] Work in progress patch

Looking good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164011</commentid>
    <comment_count>3</comment_count>
      <attachid>43312</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-16 09:51:51 -0800</bug_when>
    <thetext>Created attachment 43312
[PATCH] Proposed changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164024</commentid>
    <comment_count>4</comment_count>
      <attachid>43313</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-16 10:31:19 -0800</bug_when>
    <thetext>Created attachment 43313
[PATCH] Same with Win stuff fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164028</commentid>
    <comment_count>5</comment_count>
      <attachid>43312</attachid>
    <who name="Eric Ayers">zundel</who>
    <bug_when>2009-11-16 10:43:28 -0800</bug_when>
    <thetext>Comment on attachment 43312
[PATCH] Proposed changes

&gt; +    // Inject scripts into the frontend on the first pass.  Some other logic may want to
&gt; +    // use them before the reload.
comment out of date.

&gt; +    var toInject = [];
&gt; +    for (var name in window) {
&gt; +        if (name.indexOf(&quot;frontend_&quot;) === 0 &amp;&amp; typeof window[name] === &quot;function&quot;)
&gt; +            toInject.push(window[name].toString());
&gt; +    }
&gt; +    // Invoke a setup method if it has been specified
&gt; +    if (window[&quot;frontend_setup&quot;]) 
&gt; +        toInject.push(&quot;frontend_setup();&quot;);
&gt;  
&gt; -    // Make sure web inspector window is closed before the test is interrupted.
&gt; -    setTimeout(function() {
&gt; -        alert(&quot;Internal timeout exceeded.&quot;)
&gt; -        if (window.layoutTestController) {
&gt; -            layoutTestController.closeWebInspector();
&gt; -            layoutTestController.notifyDone();
&gt; -        }
&gt; -    }, 10000);
&gt; +    evaluateInWebInspector(toInject.join(&quot;\n&quot;), doit);
&gt;  }
&gt;  
&gt;  function evaluateInWebInspector(script, callback)
&gt; @@ -61,16 +33,16 @@ function evaluateInWebInspector(script, callback)
&gt;      setTimeout(function() {
&gt;          if (window.layoutTestController)
&gt;              layoutTestController.evaluateInWebInspector(callId, script);
&gt; +        else
&gt; +            callback();

Is something wrong with the diff?  what happened to the lines:

    var callId = lastCallId++;
    callbacks[callId] = callback;

&gt; +    printTimelineRecords(performActions, &quot;Paint&quot;);

For this parameter, I&apos;m wondering why you chose to pass a string instead of a value like timelineAgentRecordType.Paint


&gt; diff --git a/LayoutTests/inspector/timeline-test.js b/LayoutTests/inspector/timeline-test.js
&gt; index 19865b2..00bb770 100644
&gt; --- a/LayoutTests/inspector/timeline-test.js
&gt; +++ b/LayoutTests/inspector/timeline-test.js
&gt; @@ -1,7 +1,3 @@
&gt; -// Used to mark timeline records as belonging to the test framework.
&gt; -var timelineOverheadMark = &quot;***Overhead***&quot;;
&gt; -
&gt; -// TimelineAgent record type definitions from the inspector
&gt;  var timelineAgentRecordType = {};
&gt;  
&gt;  // Scrub values when printing out these properties in the record or data field.
&gt; @@ -12,27 +8,40 @@ var timelineNonDeterministicProps = {
&gt;      url : 1
&gt;  };
&gt;  
&gt; -// Call this function from the doit() function in the main test page.
&gt; -// Pass a function that will get an array of timeline data to process.
&gt; -function retrieveTimelineData(analyzeFunction)
&gt; +function printTimelineRecords(performActions, typeName, formatter)
&gt;  {
&gt; +    if (performActions) {
&gt; +        if (window.layoutTestController)
&gt; +            layoutTestController.setTimelineProfilingEnabled(true);
&gt; +        performActions();
&gt; +    }
&gt; +
&gt;      evaluateInWebInspector(&quot;WebInspector.TimelineAgent.RecordType&quot;, function(result) {
&gt;          timelineAgentRecordType = result;
&gt;      });
&gt;  
&gt; -    evaluateInWebInspector(&quot;frontend_getTimelineResults()&quot;, function(timelineRecords) {
&gt; +    evaluateInWebInspector(&quot;frontend_getTimelineResults&quot;, function(timelineRecords) {

As an ignorant slob, it surprises me that omitting the () actually calls the function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164040</commentid>
    <comment_count>6</comment_count>
      <attachid>43313</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-16 11:42:50 -0800</bug_when>
    <thetext>Comment on attachment 43313
[PATCH] Same with Win stuff fixed. 

IIRC win/WebInspector.h changes need to go at the end of the class, so they wont break nightly builds. Someone on Windows and GTK should review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164041</commentid>
    <comment_count>7</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-16 11:43:12 -0800</bug_when>
    <thetext>Otherwise looks OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164042</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-16 11:49:27 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 43313 [details])
&gt; IIRC win/WebInspector.h changes need to go at the end of the class, so they
&gt; wont break nightly builds. Someone on Windows and GTK should review.

Will fix. I tested clean build on Windows and it is fine, building GTK now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164043</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-16 11:53:18 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 43312 [details])
&gt; &gt; +    // Inject scripts into the frontend on the first pass.  Some other logic may want to
&gt; &gt; +    // use them before the reload.
&gt; comment out of date.
&gt; 

Fixed.

&gt; 
&gt; Is something wrong with the diff?  what happened to the lines:
&gt; 
&gt;     var callId = lastCallId++;
&gt;     callbacks[callId] = callback;
&gt; 

They are not in diff, hence they are still there in the code...

&gt; &gt; +    printTimelineRecords(performActions, &quot;Paint&quot;);
&gt; 
&gt; For this parameter, I&apos;m wondering why you chose to pass a string instead of a
&gt; value like timelineAgentRecordType.Paint
&gt; 

By this moment timelineAgentRecordType is not yet available.

&gt; 
&gt; As an ignorant slob, it surprises me that omitting the () actually calls the
&gt; function?

It is a hint in the testing framework (see TestController.js). If passed parameter is a name of a function, it would invoke it with the testController object. Not that we need it here, but calling by name is just as good as invoking...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164053</commentid>
    <comment_count>10</comment_count>
      <attachid>43319</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-16 12:35:05 -0800</bug_when>
    <thetext>Created attachment 43319
[PATCH] Review comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164055</commentid>
    <comment_count>11</comment_count>
      <attachid>43319</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-11-16 12:54:28 -0800</bug_when>
    <thetext>Comment on attachment 43319
[PATCH] Review comments addressed

Awesome =)

&gt; +        * webkit/webkitwebinspector.cpp:
&gt; +        (webkit_web_inspector_class_init):
&gt; +        (webkit_web_inspector_set_property):
&gt; +        (webkit_web_inspector_get_property):
&gt; +

&gt; +    /**
&gt; +    * WebKitWebInspector:timeline-profiling-enabled
&gt; +    *
&gt; +    * This is enabling Timeline profiling in the Inspector.
&gt; +    *
&gt; +    * Since: 1.1.1

This should be 1.1.17.

&gt; +    */
&gt; +    g_object_class_install_property(gobject_class,
&gt; +                                    PROP_TIMELINE_PROFILING_ENABLED,
&gt; +                                    g_param_spec_boolean(
&gt; +                                        &quot;timeline-profiling-enabled&quot;,
&gt; +                                        _(&quot;Enable Timeline profiling&quot;),
&gt; +                                        _(&quot;Profile the WebCore instrumentation.&quot;),
&gt; +                                        FALSE,
&gt; +                                        WEBKIT_PARAM_READWRITE));

All looks good otherwise. I&apos;ll try running the tests with the patch and let you know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164059</commentid>
    <comment_count>12</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-11-16 13:14:54 -0800</bug_when>
    <thetext>With the patch applied I get these failures consistently:

inspector/console-dir.html -&gt; failed
inspector/console-dirxml.html -&gt; failed
inspector/console-format-collections.html -&gt; failed
inspector/console-format.html -&gt; failed
inspector/console-tests.html -&gt; failed

All other inspector/ patches pass. Here&apos;s one of the diffs:

--- /tmp/layout-test-results/inspector/console-dir-expected.txt	2009-11-16 19:11:48.000000000 -0200
+++ /tmp/layout-test-results/inspector/console-dir-actual.txt	2009-11-16 19:11:48.000000000 -0200
@@ -3,6 +3,7 @@
 CONSOLE MESSAGE: line 11: [object NodeList]
 Tests that console logging dumps proper messages.
 
+Error dispatching: getStyles
 console-dir.html:9HTMLDocument
 console-dir.html:10Array
 console-dir.html:11NodeList

Without the patch, I remember I was getting these errors once in a while. Something wrong on our side? Ideas? =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164061</commentid>
    <comment_count>13</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-16 13:37:20 -0800</bug_when>
    <thetext>Ok, at least it builds on GTK ok. Thanks for giving it a try.

&gt; +Error dispatching: getStyles
&gt;  console-dir.html:9HTMLDocument
&gt;  console-dir.html:10Array
&gt;  console-dir.html:11NodeList
&gt; 
&gt; Without the patch, I remember I was getting these errors once in a while.
&gt; Something wrong on our side? Ideas? =)

Error message you are seeing is due to the exception somewhere in

InjectedScript.getStyles (InjectedScript.js:57). This getStyles methods is called from InjectedScript.dispatch (same file). dispatch is invoked from InspectorBackend.cpp:419.

Easiest way of nailing it down would be to surround getStyles with try/catch in InjectedScript.js and dump exception into the console. Replace InjectedScript.dispatch in InjectedScript.js with following:

InjectedScript.dispatch = function(methodName, args, callId)
{
    var argsArray = JSON.parse(args);
    if (callId)
        argsArray.splice(0, 0, callId);  // Methods that run asynchronously have a call back id parameter.
    try {
        var result = InjectedScript[methodName].apply(InjectedScript, argsArray);
        if (typeof result === &quot;undefined&quot;) {
            InjectedScript._window().console.error(&quot;Web Inspector error: InjectedScript.%s returns undefined&quot;, methodName);
            result = null;
        }
        return JSON.stringify(result);
    } catch (e) {
        InjectedScript._window().console.log(e.toString());
        throw e;
    }
}

I&apos;ll make it a part of this change...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164064</commentid>
    <comment_count>14</comment_count>
      <attachid>43319</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-16 13:45:45 -0800</bug_when>
    <thetext>Comment on attachment 43319
[PATCH] Review comments addressed

&gt; +    * Since: 1.1.1

This should be 1.1.17.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164078</commentid>
    <comment_count>15</comment_count>
      <attachid>43319</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-16 14:23:25 -0800</bug_when>
    <thetext>Comment on attachment 43319
[PATCH] Review comments addressed

(will land later, once investigated gtk issue. i think we are finishing the test while having some active timeouts...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164189</commentid>
    <comment_count>16</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-11-17 04:00:20 -0800</bug_when>
    <thetext>Here&apos;s what I get with your suggested change:

--- /tmp/layout-test-results/inspector/console-dir-expected.txt	2009-11-17 09:54:52.000000000 -0200
+++ /tmp/layout-test-results/inspector/console-dir-actual.txt	2009-11-17 09:54:52.000000000 -0200
@@ -1,8 +1,11 @@
+CONSOLE MESSAGE: line 0: TypeError: Result of expression &apos;defaultView&apos; [null] is not an object.
 CONSOLE MESSAGE: line 9: [object HTMLDocument]
 CONSOLE MESSAGE: line 10: test1,test2
 CONSOLE MESSAGE: line 11: [object NodeList]
 Tests that console logging dumps proper messages.
 
+TypeError: Result of expression &apos;defaultView&apos; [null] is not an object.
+Error dispatching: getStyles
 console-dir.html:9HTMLDocument
 console-dir.html:10Array
 console-dir.html:11NodeList</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164191</commentid>
    <comment_count>17</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-11-17 04:15:04 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; +TypeError: Result of expression &apos;defaultView&apos; [null] is not an object.
&gt; +Error dispatching: getStyles

Adding if (!defaultView) return false; makes all tests pass again, but I am wondering if this is being caused by us lacking something, that causes DOMAgent to not work as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164192</commentid>
    <comment_count>18</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-17 04:17:48 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; +TypeError: Result of expression &apos;defaultView&apos; [null] is not an object.
&gt; &gt; +Error dispatching: getStyles
&gt; 
&gt; Adding if (!defaultView) return false; makes all tests pass again, but I am
&gt; wondering if this is being caused by us lacking something, that causes DOMAgent
&gt; to not work as expected.

I&apos;ve reproduced this on Mac. Something is wrong with frontend being loaded too late. I am investigating. Thanks for your analysis!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164198</commentid>
    <comment_count>19</comment_count>
      <attachid>43355</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-17 05:04:01 -0800</bug_when>
    <thetext>Created attachment 43355
[PATCH] I am going to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164202</commentid>
    <comment_count>20</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-17 05:12:10 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	R	LayoutTests/fast/inspector/cssURLQuotes-expected.txt =&gt; LayoutTests/fast/inspector-support/cssURLQuotes-expected.txt
	R	LayoutTests/fast/inspector/cssURLQuotes.html =&gt; LayoutTests/fast/inspector-support/cssURLQuotes.html
	R	LayoutTests/fast/inspector/matchedrules.html =&gt; LayoutTests/fast/inspector-support/matchedrules.html
	R	LayoutTests/fast/inspector/style.html =&gt; LayoutTests/fast/inspector-support/style.html
	R	LayoutTests/inspector/uncaught-dom1-exception-expected.txt =&gt; LayoutTests/fast/inspector-support/uncaught-dom1-exception-expected.txt
	R	LayoutTests/inspector/uncaught-dom1-exception.html =&gt; LayoutTests/fast/inspector-support/uncaught-dom1-exception.html
	R	LayoutTests/inspector/uncaught-dom3-exception-expected.txt =&gt; LayoutTests/fast/inspector-support/uncaught-dom3-exception-expected.txt
	R	LayoutTests/inspector/uncaught-dom3-exception.html =&gt; LayoutTests/fast/inspector-support/uncaught-dom3-exception.html
	R	LayoutTests/inspector/uncaught-dom8-exception-expected.txt =&gt; LayoutTests/fast/inspector-support/uncaught-dom8-exception-expected.txt
	R	LayoutTests/inspector/uncaught-dom8-exception.html =&gt; LayoutTests/fast/inspector-support/uncaught-dom8-exception.html
	M	LayoutTests/ChangeLog
	M	LayoutTests/inspector/inspector-test.js
	A	LayoutTests/inspector/resources/timeline-iframe-data.html
	M	LayoutTests/inspector/timeline-layout-expected.txt
	M	LayoutTests/inspector/timeline-layout.html
	M	LayoutTests/inspector/timeline-mark-timeline.html
	M	LayoutTests/inspector/timeline-paint.html
	M	LayoutTests/inspector/timeline-parse-html-expected.txt
	M	LayoutTests/inspector/timeline-parse-html.html
	M	LayoutTests/inspector/timeline-recalculate-styles-expected.txt
	M	LayoutTests/inspector/timeline-recalculate-styles.html
	M	LayoutTests/inspector/timeline-script-tag-1-expected.txt
	M	LayoutTests/inspector/timeline-script-tag-1.html
	M	LayoutTests/inspector/timeline-script-tag-2-expected.txt
	M	LayoutTests/inspector/timeline-script-tag-2.html
	M	LayoutTests/inspector/timeline-script-tag-2.js
	M	LayoutTests/inspector/timeline-test.js
	M	WebCore/ChangeLog
	M	WebCore/WebCore.Inspector.exp
	M	WebCore/inspector/front-end/TimelinePanel.js
	M	WebKit/gtk/ChangeLog
	M	WebKit/gtk/webkit/webkitwebinspector.cpp
	M	WebKit/mac/ChangeLog
	M	WebKit/mac/WebInspector/WebInspector.h
	M	WebKit/mac/WebInspector/WebInspector.mm
	M	WebKit/win/ChangeLog
	M	WebKit/win/Interfaces/IWebInspector.idl
	M	WebKit/win/WebInspector.cpp
	M	WebKit/win/WebInspector.h
	M	WebKitTools/ChangeLog
	M	WebKitTools/DumpRenderTree/LayoutTestController.cpp
	M	WebKitTools/DumpRenderTree/LayoutTestController.h
	M	WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp
	M	WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp
	M	WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm
	M	WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm
	M	WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp
	M	WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp
Committed r51072</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43161</attachid>
            <date>2009-11-13 08:43:41 -0800</date>
            <delta_ts>2009-11-16 09:51:51 -0800</delta_ts>
            <desc>[PATCH] Work in progress patch</desc>
            <filename>drt</filename>
            <type>text/plain</type>
            <size>7773</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0OTMwOTY1Li4zNTAzNzY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMTEt
MTMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSBE
UlQgc2hvdyB3ZWIgaW5zcGVjdG9yIGZvciB0ZXN0cyBpbiBpbnNwZWN0b3IvIGZvbGRlci4KKwor
ICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NzIKKworICAg
ICAgICAqIGluc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qczoKKyAgICAgICAgKG9ubG9hZCk6CisK
IDIwMDktMTEtMTMgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xs
YWJvcmEuY28udWs+CiAKICAgICAgICAgU2tpcCBvbmUgbW9yZSBuZXcgdGVzdC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwppbmRleCBmODdiYmMwLi4yMzQ5OThlIDEwMDc1
NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCkBAIC02LDUyICs2LDI0IEBAIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CiB9CiAKLS8vIFdlIGlnbm9yZSBpbml0aWFsIGxvYWQgb2YgdGhl
IHBhZ2UsIGVuYWJsZSBpbnNwZWN0b3IgYW5kIGluaXRpYXRlIHJlbG9hZC4gVGhpcyBhbGxvd3Mg
aW5zcGVjdG9yIGNvbnRyb2xsZXIKLS8vIHRvIGNhcHR1cmUgZXZlbnRzIHRoYXQgaGFwcGVuIGR1
cmluZyB0aGUgaW5pdGlhbCBwYWdlIGxvYWQuCi12YXIgaWdub3JlTG9hZCA9IHdpbmRvdy5sb2Nh
dGlvbi5ocmVmLmluZGV4T2YoIj9yZWxvYWQiKSA9PT0gLTE7Ci1pZiAoaWdub3JlTG9hZCkgewot
ICAgIC8vIFN0YXJ0IGluIGEgdGltZXIsIGFzIHN5bmNocm9ub3VzIG9wZW5pbmcgb2Ygd2ViIGlu
c3BlY3RvciBtYXkgZmFpbCBvbiBXaW5kb3dzCi0gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsK
LSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNob3dXZWJJbnNwZWN0b3IoKTsKLSAgICB9LCAwKTsKLX0KLQog
ZnVuY3Rpb24gb25sb2FkKCkKIHsKLSAgICBpZiAoaWdub3JlTG9hZCkgewotICAgICAgICAvLyBJ
bmplY3Qgc2NyaXB0cyBpbnRvIHRoZSBmcm9udGVuZCBvbiB0aGUgZmlyc3QgcGFzcy4gIFNvbWUg
b3RoZXIgbG9naWMgbWF5IHdhbnQgdG8KLSAgICAgICAgLy8gdXNlIHRoZW0gYmVmb3JlIHRoZSBy
ZWxvYWQuCi0gICAgICAgIHZhciB0b0luamVjdCA9IFtdOwotICAgICAgICBmb3IgKHZhciBuYW1l
IGluIHdpbmRvdykgewotICAgICAgICAgICAgaWYgKG5hbWUuaW5kZXhPZigiZnJvbnRlbmRfIikg
PT09IDAgJiYgdHlwZW9mIHdpbmRvd1tuYW1lXSA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAg
ICAgICB0b0luamVjdC5wdXNoKHdpbmRvd1tuYW1lXS50b1N0cmluZygpKTsKLSAgICAgICAgfQot
ICAgICAgICAvLyBJbnZva2UgYSBzZXR1cCBtZXRob2QgaWYgaXQgaGFzIGJlZW4gc3BlY2lmaWVk
Ci0gICAgICAgIGlmICh3aW5kb3dbImZyb250ZW5kX3NldHVwIl0pIAotICAgICAgICAgICAgdG9J
bmplY3QucHVzaCgiZnJvbnRlbmRfc2V0dXAoKTsiKTsKLQotICAgICAgICBldmFsdWF0ZUluV2Vi
SW5zcGVjdG9yKHRvSW5qZWN0LmpvaW4oIlxuIiksIGZ1bmN0aW9uKGFyZykgewotICAgICAgICAg
ICAgd2luZG93LmxvY2F0aW9uLmhyZWYgKz0gIj9yZWxvYWQiOwotICAgICAgICB9KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQogICAgIHZhciBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CiAgICAgb3V0cHV0RWxlbWVudC5pZCA9ICJvdXRwdXQiOwogICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3V0cHV0RWxlbWVudCk7CiAKLSAgICAvLyBNYWtl
IHN1cmUgd2ViIGluc3BlY3RvciBoYXMgc2V0dGxlZCBkb3duIGJlZm9yZSBleGVjdXRpbmcgdXNl
ciBjb2RlCi0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigidHJ1ZSIsIGRvaXQpOworICAgIC8v
IEluamVjdCBzY3JpcHRzIGludG8gdGhlIGZyb250ZW5kIG9uIHRoZSBmaXJzdCBwYXNzLiAgU29t
ZSBvdGhlciBsb2dpYyBtYXkgd2FudCB0bworICAgIC8vIHVzZSB0aGVtIGJlZm9yZSB0aGUgcmVs
b2FkLgorICAgIHZhciB0b0luamVjdCA9IFtdOworICAgIGZvciAodmFyIG5hbWUgaW4gd2luZG93
KSB7CisgICAgICAgIGlmIChuYW1lLmluZGV4T2YoImZyb250ZW5kXyIpID09PSAwICYmIHR5cGVv
ZiB3aW5kb3dbbmFtZV0gPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0b0luamVjdC5wdXNo
KHdpbmRvd1tuYW1lXS50b1N0cmluZygpKTsKKyAgICB9CisgICAgLy8gSW52b2tlIGEgc2V0dXAg
bWV0aG9kIGlmIGl0IGhhcyBiZWVuIHNwZWNpZmllZAorICAgIGlmICh3aW5kb3dbImZyb250ZW5k
X3NldHVwIl0pIAorICAgICAgICB0b0luamVjdC5wdXNoKCJmcm9udGVuZF9zZXR1cCgpOyIpOwog
Ci0gICAgLy8gTWFrZSBzdXJlIHdlYiBpbnNwZWN0b3Igd2luZG93IGlzIGNsb3NlZCBiZWZvcmUg
dGhlIHRlc3QgaXMgaW50ZXJydXB0ZWQuCi0gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAg
ICAgICAgYWxlcnQoIkludGVybmFsIHRpbWVvdXQgZXhjZWVkZWQuIikKLSAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuY2xvc2VXZWJJbnNwZWN0b3IoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfQotICAgIH0sIDEwMDAwKTsKKyAgICBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKHRvSW5qZWN0LmpvaW4oIlxuIiksIGRvaXQpOwogfQogCiBmdW5jdGlv
biBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKHNjcmlwdCwgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggNjFkYmUz
MS4uM2NkNzhhNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDA5LTExLTEzICBQYXZlbCBGZWxk
bWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ha2UgRFJUIHNob3cgd2ViIGlu
c3BlY3RvciBmb3IKKyAgICAgICAgdGVzdHMgaW4gaW5zcGVjdG9yLyBmb2xkZXIuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDcyCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoc2hv
dWxkT3BlbldlYkluc3BlY3Rvcik6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChzaG91bGRPcGVuV2Vi
SW5zcGVjdG9yKToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChydW5UZXN0KToKKwogMjAwOS0xMS0x
MyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9E
dW1wUmVuZGVyVHJlZS5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJl
bmRlclRyZWUuY3BwCmluZGV4IDU0MDhiYTEuLjI5MzEzZTMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMTE0LDYgKzExNCwx
MSBAQCBzdGF0aWMgYm9vbCBzaG91bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXMoY29uc3QgY2hhciog
cGF0aE9yVVJMKQogICAgIHJldHVybiBzdHJzdHIocGF0aE9yVVJMLCAibG9hZGluZy8iKTsKIH0K
IAorc3RhdGljIGJvb2wgc2hvdWxkT3BlbldlYkluc3BlY3Rvcihjb25zdCBjaGFyKiBwYXRoT3JV
UkwpCit7CisgICAgcmV0dXJuIHN0cnN0cihwYXRoT3JVUkwsICJpbnNwZWN0b3IvIik7Cit9CisK
IHZvaWQgZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogewog
CkBAIC00NTYsNiArNDYxLDkgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIHRl
c3RQYXRoT3JVUkwpCiAgICAgaWYgKHNob3VsZExvZ0ZyYW1lTG9hZERlbGVnYXRlcyhwYXRoT3JV
UkwuY19zdHIoKSkpCiAgICAgICAgIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+c2V0RHVtcEZyYW1l
TG9hZENhbGxiYWNrcyh0cnVlKTsKIAorICAgIGlmIChzaG91bGRPcGVuV2ViSW5zcGVjdG9yKHBh
dGhPclVSTC5jX3N0cigpKSkKKyAgICAgICAgZ0xheW91dFRlc3RDb250cm9sbGVyLT5zaG93V2Vi
SW5zcGVjdG9yKCk7CisKICAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5jbGVhcigpOwogICAgIFdv
cmtRdWV1ZTo6c2hhcmVkKCktPnNldEZyb3plbihmYWxzZSk7CiAKQEAgLTQ5Nyw2ICs1MDUsOSBA
QCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgdGVzdFBhdGhPclVSTCkKICAgICAg
ICAgd2ViVmlld0xpc3QgPSAwOwogICAgIH0KIAorICAgIGlmIChzaG91bGRPcGVuV2ViSW5zcGVj
dG9yKHBhdGhPclVSTC5jX3N0cigpKSkKKyAgICAgICAgZ0xheW91dFRlc3RDb250cm9sbGVyLT5j
bG9zZVdlYkluc3BlY3RvcigpOworCiAgICAgLy8gQSBibGFuayBsb2FkIHNlZW1zIHRvIGJlIG5l
Y2Vzc2FyeSB0byByZXNldCBzdGF0ZSBhZnRlciBjZXJ0YWluIHRlc3RzLgogICAgIHdlYmtpdF93
ZWJfdmlld19vcGVuKHdlYlZpZXcsICJhYm91dDpibGFuayIpOwogCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggYzBhMGI3NC4uNWY0
YmM3YyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbQpAQCAtMTEwMiw2ICsxMTAyLDExIEBAIHN0YXRpYyBib29sIHNob3VsZExvZ0hpc3Rv
cnlEZWxlZ2F0ZXMoY29uc3QgY2hhciogcGF0aE9yVVJMKQogICAgIHJldHVybiBzdHJzdHIocGF0
aE9yVVJMLCAiZ2xvYmFsaGlzdG9yeS8iKTsKIH0KIAorc3RhdGljIGJvb2wgc2hvdWxkT3Blbldl
Ykluc3BlY3Rvcihjb25zdCBjaGFyKiBwYXRoT3JVUkwpCit7CisgICAgcmV0dXJuIHN0cnN0cihw
YXRoT3JVUkwsICJpbnNwZWN0b3IvIik7Cit9CisKIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1Rv
Q29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9
IFttYWluRnJhbWUgd2ViVmlld107CkBAIC0xMTc4LDcgKzExODMsMTAgQEAgc3RhdGljIHZvaWQg
cnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RQYXRoT3JVUkwpCiAgICAgICAgIFtbbWFpbkZyYW1l
IHdlYlZpZXddIHNldEhpc3RvcnlEZWxlZ2F0ZTpoaXN0b3J5RGVsZWdhdGVdOwogICAgIGVsc2UK
ICAgICAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0SGlzdG9yeURlbGVnYXRlOm5pbF07Ci0g
ICAgCisKKyAgICBpZiAoc2hvdWxkT3BlbldlYkluc3BlY3RvcihwYXRoT3JVUkwuY19zdHIoKSkp
CisgICAgICAgIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+c2hvd1dlYkluc3BlY3RvcigpOworCiAg
ICAgaWYgKFtXZWJIaXN0b3J5IG9wdGlvbmFsU2hhcmVkSGlzdG9yeV0pCiAgICAgICAgIFtXZWJI
aXN0b3J5IHNldE9wdGlvbmFsU2hhcmVkSGlzdG9yeTpuaWxdOwogICAgIGxhc3RNb3VzZVBvc2l0
aW9uID0gTlNaZXJvUG9pbnQ7CkBAIC0xMjI4LDkgKzEyMzYsMTIgQEAgc3RhdGljIHZvaWQgcnVu
VGVzdChjb25zdCBzdHJpbmcmIHRlc3RQYXRoT3JVUkwpCiAKICAgICByZXNldFdlYlZpZXdUb0Nv
bnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKTsKIAorICAgIGlmIChzaG91bGRPcGVuV2ViSW5z
cGVjdG9yKHBhdGhPclVSTC5jX3N0cigpKSkKKyAgICAgICAgZ0xheW91dFRlc3RDb250cm9sbGVy
LT5jbG9zZVdlYkluc3BlY3RvcigpOworCiAgICAgW21haW5GcmFtZSBsb2FkSFRNTFN0cmluZzpA
IjxodG1sPjwvaHRtbD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFu
ayJdXTsKICAgICBbbWFpbkZyYW1lIHN0b3BMb2FkaW5nXTsKLSAgICAKKwogICAgIFtwb29sIHJl
bGVhc2VdOwogCiAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSBvdXIgbWFpbiB3aW5kb3cgbGVm
dCBvcGVuIHdoZW4gd2UncmUgZG9uZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggZDQ4NmQwNi4uZGNiNzIwYSAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC04
NTksNiArODU5LDkgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RQYXRo
T3JVUkwpCiAKICAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmco
KTsKIAorICAgIGlmIChzaG91bGRPcGVuV2ViSW5zcGVjdG9yKHBhdGhPclVSTC5jX3N0cigpKSkK
KyAgICAgICAgZ0xheW91dFRlc3RDb250cm9sbGVyLT5zaG93V2ViSW5zcGVjdG9yKCk7CisKICAg
ICBwcmV2VGVzdEJGSXRlbSA9IDA7CiAgICAgaWYgKHdlYlZpZXcpIHsKICAgICAgICAgQ09NUHRy
PElXZWJCYWNrRm9yd2FyZExpc3Q+IGJmTGlzdDsKQEAgLTg5NSw2ICs4OTgsOSBAQCBzdGF0aWMg
dm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgdGVzdFBhdGhPclVSTCkKIAogICAgIHJlc2V0V2Vi
Vmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpOwogCisgICAgaWYgKHNob3VsZE9w
ZW5XZWJJbnNwZWN0b3IocGF0aE9yVVJMLmNfc3RyKCkpKQorICAgICAgICBnTGF5b3V0VGVzdENv
bnRyb2xsZXItPmNsb3NlV2ViSW5zcGVjdG9yKCk7CisKICAgICBmcmFtZS0+c3RvcExvYWRpbmco
KTsKIAogICAgIGlmICg6OmdMYXlvdXRUZXN0Q29udHJvbGxlci0+Y2xvc2VSZW1haW5pbmdXaW5k
b3dzV2hlbkNvbXBsZXRlKCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43312</attachid>
            <date>2009-11-16 09:51:51 -0800</date>
            <delta_ts>2009-11-16 12:35:05 -0800</delta_ts>
            <desc>[PATCH] Proposed changes</desc>
            <filename>drt</filename>
            <type>text/plain</type>
            <size>49838</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NWZjYTNhLi42ZTMxMTlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMDktMTEt
MTYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ha2Ug
RFJUIHNob3cgd2ViIGluc3BlY3RvciBmb3IgdGVzdHMgaW4gaW5zcGVjdG9yLyBmb2xkZXIuCisg
ICAgICAgICAgLSBVcGRhdGVkIERSVCB0byBzaG93L2Nsb3NlIGluc3BlY3RvciBmb3IgYWxsIHRl
c3RzIHVuZGVyIC9pbnNwZWN0b3IKKyAgICAgICAgICAtIEludHJvZHVjZWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCBhbmQKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIGJlc2lkZSBzZXRKYXZhU2Ny
aXB0UHJvZmlsaW5nRW5hYmxlZAorICAgICAgICAgIC0gUmVtb3ZlZCByZWxvYWQgb24gZWFjaCBp
bnNwZWN0b3IgdGVzdAorICAgICAgICAgIC0gUmVpbXBsZW1lbnRlZCB0aW1lbGluZSB0ZXN0cyBp
biBvcmRlciB0byBnZXQgcmlkIG9mIHJlbG9hZCB0aGVyZS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NzIKKworICAgICAgICAqIGluc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qczoKKyAgICAgICAgKG9ubG9hZCk6CisgICAgICAgIChldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKG5vdGlmeURvbmUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9yZXNvdXJjZXMvdGltZWxpbmUtaWZyYW1lLWRhdGEuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL3RpbWVsaW5lLWxheW91dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3RpbWVsaW5lLWxheW91dC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGlu
ZS1tYXJrLXRpbWVsaW5lLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXBhaW50
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS1wYXJzZS1odG1sLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXJlY2FsY3VsYXRlLXN0eWxlcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXJlY2FsY3VsYXRlLXN0eWxlcy5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTEtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTEuaHRtbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0yLmh0bWw6CisgICAgICAgICogaW5zcGVj
dG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxp
bmUtdGVzdC5qczoKKyAgICAgICAgKHByaW50VGltZWxpbmVSZWNvcmRzKToKKyAgICAgICAgKCk6
CisgICAgICAgIChkdW1wVGltZWxpbmVSZWNvcmRzKToKKyAgICAgICAgKHByaW50UHJvcHMpOgor
ICAgICAgICAoZnJvbnRlbmRfZ2V0VGltZWxpbmVSZXN1bHRzKToKKwogMjAwOS0xMS0xNSAgQ2hy
aXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGluZyBicm9r
ZW4gbGF5b3V0IHRlc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKaW5k
ZXggZjg3YmJjMC4uODJkZjA4MCAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dC5qcwpAQCAtNiw1MiArNiwyNCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogCi0vLyBXZSBp
Z25vcmUgaW5pdGlhbCBsb2FkIG9mIHRoZSBwYWdlLCBlbmFibGUgaW5zcGVjdG9yIGFuZCBpbml0
aWF0ZSByZWxvYWQuIFRoaXMgYWxsb3dzIGluc3BlY3RvciBjb250cm9sbGVyCi0vLyB0byBjYXB0
dXJlIGV2ZW50cyB0aGF0IGhhcHBlbiBkdXJpbmcgdGhlIGluaXRpYWwgcGFnZSBsb2FkLgotdmFy
IGlnbm9yZUxvYWQgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCI/cmVsb2FkIikgPT09
IC0xOwotaWYgKGlnbm9yZUxvYWQpIHsKLSAgICAvLyBTdGFydCBpbiBhIHRpbWVyLCBhcyBzeW5j
aHJvbm91cyBvcGVuaW5nIG9mIHdlYiBpbnNwZWN0b3IgbWF5IGZhaWwgb24gV2luZG93cwotICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVj
dG9yKCk7Ci0gICAgfSwgMCk7Ci19Ci0KIGZ1bmN0aW9uIG9ubG9hZCgpCiB7Ci0gICAgaWYgKGln
bm9yZUxvYWQpIHsKLSAgICAgICAgLy8gSW5qZWN0IHNjcmlwdHMgaW50byB0aGUgZnJvbnRlbmQg
b24gdGhlIGZpcnN0IHBhc3MuICBTb21lIG90aGVyIGxvZ2ljIG1heSB3YW50IHRvCi0gICAgICAg
IC8vIHVzZSB0aGVtIGJlZm9yZSB0aGUgcmVsb2FkLgotICAgICAgICB2YXIgdG9JbmplY3QgPSBb
XTsKLSAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB3aW5kb3cpIHsKLSAgICAgICAgICAgIGlmIChu
YW1lLmluZGV4T2YoImZyb250ZW5kXyIpID09PSAwICYmIHR5cGVvZiB3aW5kb3dbbmFtZV0gPT09
ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICAgICAgdG9JbmplY3QucHVzaCh3aW5kb3dbbmFtZV0u
dG9TdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSW52b2tlIGEgc2V0dXAgbWV0aG9k
IGlmIGl0IGhhcyBiZWVuIHNwZWNpZmllZAotICAgICAgICBpZiAod2luZG93WyJmcm9udGVuZF9z
ZXR1cCJdKSAKLSAgICAgICAgICAgIHRvSW5qZWN0LnB1c2goImZyb250ZW5kX3NldHVwKCk7Iik7
Ci0KLSAgICAgICAgZXZhbHVhdGVJbldlYkluc3BlY3Rvcih0b0luamVjdC5qb2luKCJcbiIpLCBm
dW5jdGlvbihhcmcpIHsKLSAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmICs9ICI/cmVs
b2FkIjsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICB2YXIgb3V0
cHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIG91dHB1dEVs
ZW1lbnQuaWQgPSAib3V0cHV0IjsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG91dHB1
dEVsZW1lbnQpOwogCi0gICAgLy8gTWFrZSBzdXJlIHdlYiBpbnNwZWN0b3IgaGFzIHNldHRsZWQg
ZG93biBiZWZvcmUgZXhlY3V0aW5nIHVzZXIgY29kZQotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0
b3IoInRydWUiLCBkb2l0KTsKKyAgICAvLyBJbmplY3Qgc2NyaXB0cyBpbnRvIHRoZSBmcm9udGVu
ZCBvbiB0aGUgZmlyc3QgcGFzcy4gIFNvbWUgb3RoZXIgbG9naWMgbWF5IHdhbnQgdG8KKyAgICAv
LyB1c2UgdGhlbSBiZWZvcmUgdGhlIHJlbG9hZC4KKyAgICB2YXIgdG9JbmplY3QgPSBbXTsKKyAg
ICBmb3IgKHZhciBuYW1lIGluIHdpbmRvdykgeworICAgICAgICBpZiAobmFtZS5pbmRleE9mKCJm
cm9udGVuZF8iKSA9PT0gMCAmJiB0eXBlb2Ygd2luZG93W25hbWVdID09PSAiZnVuY3Rpb24iKQor
ICAgICAgICAgICAgdG9JbmplY3QucHVzaCh3aW5kb3dbbmFtZV0udG9TdHJpbmcoKSk7CisgICAg
fQorICAgIC8vIEludm9rZSBhIHNldHVwIG1ldGhvZCBpZiBpdCBoYXMgYmVlbiBzcGVjaWZpZWQK
KyAgICBpZiAod2luZG93WyJmcm9udGVuZF9zZXR1cCJdKSAKKyAgICAgICAgdG9JbmplY3QucHVz
aCgiZnJvbnRlbmRfc2V0dXAoKTsiKTsKIAotICAgIC8vIE1ha2Ugc3VyZSB3ZWIgaW5zcGVjdG9y
IHdpbmRvdyBpcyBjbG9zZWQgYmVmb3JlIHRoZSB0ZXN0IGlzIGludGVycnVwdGVkLgotICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFsZXJ0KCJJbnRlcm5hbCB0aW1lb3V0IGV4
Y2VlZGVkLiIpCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7Ci0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLSAg
ICB9LCAxMDAwMCk7CisgICAgZXZhbHVhdGVJbldlYkluc3BlY3Rvcih0b0luamVjdC5qb2luKCJc
biIpLCBkb2l0KTsKIH0KIAogZnVuY3Rpb24gZXZhbHVhdGVJbldlYkluc3BlY3RvcihzY3JpcHQs
IGNhbGxiYWNrKQpAQCAtNjEsMTYgKzMzLDE2IEBAIGZ1bmN0aW9uIGV2YWx1YXRlSW5XZWJJbnNw
ZWN0b3Ioc2NyaXB0LCBjYWxsYmFjaykKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3RvcihjYWxsSWQsIHNjcmlwdCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgfSwgMCk7CiB9CiAKIGZ1
bmN0aW9uIG5vdGlmeURvbmUoKQogewogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Ci0gICAgICAgIH0KICAgICB9LCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy90aW1lbGluZS1pZnJhbWUtZGF0YS5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy90aW1lbGluZS1pZnJhbWUtZGF0YS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZjE2YTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3RpbWVsaW5lLWlmcmFtZS1k
YXRhLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Citjb25z
b2xlLm1hcmtUaW1lbGluZSgiU0NSSVBUIFRBRyIpOworCitmdW5jdGlvbiBpZnJhbWVPbmxvYWQo
KQoreworICAgIHdpbmRvdy5wYXJlbnQuaWZyYW1lTG9hZGVkID0gdHJ1ZTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9ImlmcmFtZU9ubG9hZCgpIj4KKyAgICA8ZGl2PkZv
bzwvZGl2PgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUtbGF5b3V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci90aW1lbGluZS1sYXlvdXQtZXhwZWN0ZWQudHh0CmluZGV4IGFkNjUxMzMuLjUxYzEwZDcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1sYXlvdXQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1sYXlvdXQtZXhwZWN0ZWQu
dHh0CkBAIC01LDQgKzUsNCBAQCBMYXlvdXQgUHJvcGVydGllczoKICsgY2hpbGRyZW4gOiAqIERF
RklORUQgKgogKyBlbmRUaW1lIDogKiBERUZJTkVEICoKICsgdHlwZSA6IDEKLQorVGVzdCBkYXRh
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbGF5b3V0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbGF5b3V0Lmh0bWwKaW5kZXggOTQ1OGJk
Zi4uODIyZjJkOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLWxh
eW91dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1sYXlvdXQuaHRt
bApAQCAtNCwyNSArNCwxNiBAQAogPHNjcmlwdCBzcmM9InRpbWVsaW5lLXRlc3QuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gYW5hbHl6ZVRpbWVsaW5lRGF0YSh0aW1lbGluZVJl
Y29yZHMpIAorZnVuY3Rpb24gcGVyZm9ybUFjdGlvbnMoKQogewotICAgIC8vIFVuY29tbWVudCB0
byBkZWJ1Z2dpbmcgdGhlIGxpc3Qgb2YgZGF0YSByZXR1cm5lZC4KLSAgICAvLyBkdW1wVGltZWxp
bmVSZWNvcmRzKHRpbWVsaW5lUmVjb3Jkcyk7Ci0KLSAgICAvLyBTZWFyY2ggZm9yIHRoZSBmaXJz
dCBMYXlvdXQgcmVjb3JkIHlvdSBjYW4gZmluZAotICAgIHZhciBudW1SZWNvcmRzID0gdGltZWxp
bmVSZWNvcmRzLmxlbmd0aDsKLSAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBudW1SZWNvcmRzOyAr
K2kpIHsKLSAgICAgICAgdmFyIHJlY29yZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsKLSAgICAgICAg
aWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5MYXlvdXQpIHsKLSAg
ICAgICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRQcm9wZXJ0aWVzKHJlY29yZCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gIlRlc3QgZGF0
YSI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKIH0KIAogZnVuY3Rp
b24gZG9pdCgpIAogewotICAgIHJldHJpZXZlVGltZWxpbmVEYXRhKGFuYWx5emVUaW1lbGluZURh
dGEpOworICAgIHByaW50VGltZWxpbmVSZWNvcmRzKHBlcmZvcm1BY3Rpb25zLCAiTGF5b3V0Iik7
CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVs
aW5lLW1hcmstdGltZWxpbmUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1t
YXJrLXRpbWVsaW5lLmh0bWwKaW5kZXggNTNiMDk4Yi4uZGE4YzQxMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLW1hcmstdGltZWxpbmUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbWFyay10aW1lbGluZS5odG1sCkBAIC00LDQyICs0
LDE0IEBACiA8c2NyaXB0IHNyYz0idGltZWxpbmUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
PgogCi12YXIgdGltZWxpbmVNYXJrID0gIk1BUksgVElNRUxJTkUiOwotCi1mdW5jdGlvbiBmaW5k
TWFya1RpbWVsaW5lKHJlY29yZCkgCitmdW5jdGlvbiBwZXJmb3JtQWN0aW9ucygpCiB7Ci0gICAg
aWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5NYXJrVGltZWxpbmUg
JiYgcmVjb3JkLmRhdGEubWVzc2FnZSA9PT0gdGltZWxpbmVNYXJrKSB7Ci0gICAgICAgIHByaW50
VGltZWxpbmVSZWNvcmRQcm9wZXJ0aWVzKHJlY29yZCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLQotICAgIHZhciBudW1DaGlsZHJlbiA9IHJlY29yZC5jaGlsZHJlbiA/IHJlY29yZC5j
aGlsZHJlbi5sZW5ndGggOiAwOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47
ICsraSkgewotICAgICAgICBpZiAoZmluZE1hcmtUaW1lbGluZShyZWNvcmQuY2hpbGRyZW5baV0p
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotZnVuY3Rpb24gYW5hbHl6ZVRpbWVsaW5lRGF0YSh0aW1lbGluZVJlY29yZHMpIAotewotICAg
IC8vIFVuY29tbWVudCB0byBkZWJ1Z2dpbmcgdGhlIGxpc3Qgb2YgZGF0YSByZXR1cm5lZC4KLSAg
ICAvLyBkdW1wVGltZWxpbmVSZWNvcmRzKHRpbWVsaW5lUmVjb3Jkcyk7Ci0KLSAgICB2YXIgZm91
bmQgPSBmYWxzZTsKLSAgICB2YXIgbnVtUmVjb3JkcyA9IHRpbWVsaW5lUmVjb3Jkcy5sZW5ndGg7
Ci0gICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgbnVtUmVjb3JkczsgKytpKSB7Ci0gICAgICAgIHZh
ciByZWNvcmQgPSB0aW1lbGluZVJlY29yZHNbaV07Ci0gICAgICAgIGlmIChmb3VuZCA9IGZpbmRN
YXJrVGltZWxpbmUocmVjb3JkKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAo
IWZvdW5kKQotICAgICAgICBvdXRwdXQoIkNvdWxkbid0IGZpbmQgdGltZWxpbmUgbWFyazogIiAr
IHRpbWVsaW5lTWFyayk7CisgICAgY29uc29sZS5tYXJrVGltZWxpbmUoIk1BUksgVElNRUxJTkUi
KTsKIH0KIAogZnVuY3Rpb24gZG9pdCgpIAogewotICAgIHJldHJpZXZlVGltZWxpbmVEYXRhKGFu
YWx5emVUaW1lbGluZURhdGEpOworICAgIHByaW50VGltZWxpbmVSZWNvcmRzKHBlcmZvcm1BY3Rp
b25zLCAiTWFya1RpbWVsaW5lIik7CiB9CiAKIDwvc2NyaXB0PgpAQCAtNTAsOSArMjIsNSBAQCBm
dW5jdGlvbiBkb2l0KCkKIFRlc3RzIHRoZSBUaW1lbGluZSBBUEkgbWFyayBmZWF0dXJlCiA8L3A+
CiAKLTxzY3JpcHQ+Ci0gICAgY29uc29sZS5tYXJrVGltZWxpbmUodGltZWxpbmVNYXJrKTsKLTwv
c2NyaXB0PgotCiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUtcGFpbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGlu
ZS1wYWludC5odG1sCmluZGV4IGFjODQ5NDEuLjIxZDg5MmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci90aW1lbGluZS1wYWludC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci90aW1lbGluZS1wYWludC5odG1sCkBAIC00LDI1ICs0LDE1IEBACiA8c2NyaXB0IHNyYz0i
dGltZWxpbmUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBhbmFseXpl
VGltZWxpbmVEYXRhKHRpbWVsaW5lUmVjb3JkcykgCitmdW5jdGlvbiBwZXJmb3JtQWN0aW9ucygp
CiB7Ci0gICAgLy8gVW5jb21tZW50IHRvIGRlYnVnZ2luZyB0aGUgbGlzdCBvZiBkYXRhIHJldHVy
bmVkLgotICAgIC8vIGR1bXBUaW1lbGluZVJlY29yZHModGltZWxpbmVSZWNvcmRzKTsKLQotICAg
IC8vIFNlYXJjaCBmb3IgdGhlIGZpcnN0IFBhaW50IHJlY29yZCB5b3UgY2FuIGZpbmQKLSAgICB2
YXIgbnVtUmVjb3JkcyA9IHRpbWVsaW5lUmVjb3Jkcy5sZW5ndGg7Ci0gICAgZm9yICh2YXIgaSA9
IDAgOyBpIDwgbnVtUmVjb3JkczsgKytpKSB7Ci0gICAgICAgIHZhciByZWNvcmQgPSB0aW1lbGlu
ZVJlY29yZHNbaV07Ci0gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJl
Y29yZFR5cGUuUGFpbnQpIHsKLSAgICAgICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRQcm9wZXJ0
aWVzKHJlY29yZCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kaXNwbGF5KCk7CiB9CiAKIGZ1bmN0aW9uIGRvaXQoKSAKIHsKLSAgICByZXRyaWV2ZVRp
bWVsaW5lRGF0YShhbmFseXplVGltZWxpbmVEYXRhKTsKKyAgICBwcmludFRpbWVsaW5lUmVjb3Jk
cyhwZXJmb3JtQWN0aW9ucywgIlBhaW50Iik7CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDk4YzMzN2IuLmQ0MmE4ZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1wYXJzZS1odG1sLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvdGltZWxpbmUtcGFyc2UtaHRtbC1leHBlY3RlZC50eHQKQEAgLTUsNCArNSw0IEBAIFBhcnNl
SFRNTCBQcm9wZXJ0aWVzOgogKyBjaGlsZHJlbiA6ICogREVGSU5FRCAqCiArIGVuZFRpbWUgOiAq
IERFRklORUQgKgogKyB0eXBlIDogNAotCitUZXN0IGRhdGEKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci90aW1lbGluZS1wYXJzZS1odG1sLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUtcGFyc2UtaHRtbC5odG1sCmluZGV4IDcxNWViNmMuLjExZDhmNWEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1wYXJzZS1odG1sLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwuaHRtbApAQCAt
NCwyNSArNCwxNiBAQAogPHNjcmlwdCBzcmM9InRpbWVsaW5lLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KIAotZnVuY3Rpb24gYW5hbHl6ZVRpbWVsaW5lRGF0YSh0aW1lbGluZVJlY29yZHMp
IAorZnVuY3Rpb24gcGVyZm9ybUFjdGlvbnMoKQogewotICAgIC8vIFVuY29tbWVudCB0byBkZWJ1
Z2dpbmcgdGhlIGxpc3Qgb2YgZGF0YSByZXR1cm5lZC4KLSAgICAvLyBkdW1wVGltZWxpbmVSZWNv
cmRzKHRpbWVsaW5lUmVjb3Jkcyk7Ci0KLSAgICAvLyBTZWFyY2ggZm9yIHRoZSBmaXJzdCBQYXJz
ZUhUTUwgcmVjb3JkIHlvdSBjYW4gZmluZAotICAgIHZhciBudW1SZWNvcmRzID0gdGltZWxpbmVS
ZWNvcmRzLmxlbmd0aDsKLSAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBudW1SZWNvcmRzOyArK2kp
IHsKLSAgICAgICAgdmFyIHJlY29yZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsKLSAgICAgICAgaWYg
KHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5QYXJzZUhUTUwpIHsKLSAg
ICAgICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRQcm9wZXJ0aWVzKHJlY29yZCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gIlRlc3QgZGF0
YSI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKIH0KIAogZnVuY3Rp
b24gZG9pdCgpIAogewotICAgIHJldHJpZXZlVGltZWxpbmVEYXRhKGFuYWx5emVUaW1lbGluZURh
dGEpOworICAgIHByaW50VGltZWxpbmVSZWNvcmRzKHBlcmZvcm1BY3Rpb25zLCAiUGFyc2VIVE1M
Iik7CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lLXJlY2FsY3VsYXRlLXN0eWxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUtcmVjYWxjdWxhdGUtc3R5bGVzLWV4cGVjdGVkLnR4dAppbmRleCBiMzhk
Y2VkLi5lNTMyYTE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUt
cmVjYWxjdWxhdGUtc3R5bGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvdGltZWxpbmUtcmVjYWxjdWxhdGUtc3R5bGVzLWV4cGVjdGVkLnR4dApAQCAtNSw0ICs1LDQg
QEAgUmVjYWxjdWxhdGVTdHlsZXMgUHJvcGVydGllczoKICsgY2hpbGRyZW4gOiAqIERFRklORUQg
KgogKyBlbmRUaW1lIDogKiBERUZJTkVEICoKICsgdHlwZSA6IDIKLQorVGVzdCBkYXRhCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtcmVjYWxjdWxhdGUtc3R5bGVz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtcmVjYWxjdWxhdGUtc3R5bGVz
Lmh0bWwKaW5kZXggMTJmYTFlZi4uYzRlNGQzNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lLXJlY2FsY3VsYXRlLXN0eWxlcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci90aW1lbGluZS1yZWNhbGN1bGF0ZS1zdHlsZXMuaHRtbApAQCAtMiwyNyArMiwy
NiBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9InRpbWVsaW5lLXRlc3QuanMiPjwvc2NyaXB0PgorCis8c3R5bGU+CisudGVz
dC1zdHlsZSB7CisgICAgY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+CisKIDxzY3JpcHQ+CiAKLWZ1
bmN0aW9uIGFuYWx5emVUaW1lbGluZURhdGEodGltZWxpbmVSZWNvcmRzKSAKK2Z1bmN0aW9uIHBl
cmZvcm1BY3Rpb25zKCkKIHsKLSAgICAvLyBVbmNvbW1lbnQgdG8gZGVidWdnaW5nIHRoZSBsaXN0
IG9mIGRhdGEgcmV0dXJuZWQuCi0gICAgLy8gZHVtcFRpbWVsaW5lUmVjb3Jkcyh0aW1lbGluZVJl
Y29yZHMpOwotCi0gICAgLy8gU2VhcmNoIGZvciB0aGUgZmlyc3QgUmVjYWxjdWxhdGVTdHlsZXMg
cmVjb3JkIHlvdSBjYW4gZmluZAotICAgIHZhciBudW1SZWNvcmRzID0gdGltZWxpbmVSZWNvcmRz
Lmxlbmd0aDsKLSAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBudW1SZWNvcmRzOyArK2kpIHsKLSAg
ICAgICAgdmFyIHJlY29yZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsKLSAgICAgICAgaWYgKHJlY29y
ZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5SZWNhbGN1bGF0ZVN0eWxlcykgewot
ICAgICAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZFByb3BlcnRpZXMocmVjb3JkKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQorICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVudC5jbGFzc05hbWUgPSAidGVzdC1z
dHlsZSI7CisgICAgZWxlbWVudC5pbm5lckhUTUwgPSAiVGVzdCBkYXRhIjsKKyAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOwogfQogCiBmdW5jdGlvbiBkb2l0KCkgCiB7Ci0g
ICAgcmV0cmlldmVUaW1lbGluZURhdGEoYW5hbHl6ZVRpbWVsaW5lRGF0YSk7CisgICAgcHJpbnRU
aW1lbGluZVJlY29yZHMocGVyZm9ybUFjdGlvbnMsICJSZWNhbGN1bGF0ZVN0eWxlcyIpOwogfQog
CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1z
Y3JpcHQtdGFnLTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5l
LXNjcmlwdC10YWctMS1leHBlY3RlZC50eHQKaW5kZXggMzAxMTQ0MS4uYmRmYTViNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMS1l
eHBlY3RlZC50eHQKQEAgLTMsMTIgKzMsMTEgQEAgVGVzdHMgdGhlIFRpbWVsaW5lIEFQSSBpbnN0
cnVtZW50YXRpb24gb2YgYW4gSFRNTCBzY3JpcHQgdGFnLgogUGFyc2VIVE1MCiAtLS0tPiBFdmFs
dWF0ZVNjcmlwdAogLS0tLS0tLS0+IE1hcmtUaW1lbGluZSA6IFNDUklQVCBUQUcKLQogRXZhbHVh
dGVTY3JpcHQgUHJvcGVydGllczoKICsgc3RhcnRUaW1lIDogKiBERUZJTkVEICoKICsgZGF0YSA6
IHsKICstIHVybCA6ICogREVGSU5FRCAqCi0rLSBsaW5lTnVtYmVyIDogNzYKKystIGxpbmVOdW1i
ZXIgOiAzCiArIH0KICsgY2hpbGRyZW4gOiAqIERFRklORUQgKgogKyBlbmRUaW1lIDogKiBERUZJ
TkVEICoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1zY3JpcHQt
dGFnLTEuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTEu
aHRtbAppbmRleCBmOGVmN2I3Li44ZWExYTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0xLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMS5odG1sCkBAIC0zLDY2ICszLDM2IEBACiA8c2NyaXB0
IHNyYz0iaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InRpbWVsaW5l
LXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLXZhciB0aW1lbGluZU1hcmsgPSAiU0NSSVBU
IFRBRyI7CiAKLWZ1bmN0aW9uIGFuYWx5emVFdmFsdWF0ZVNjcmlwdChyZWNvcmQpIAorZnVuY3Rp
b24gcnVuQWZ0ZXJJZnJhbWVJc0xvYWRlZChjb250aW51YXRpb24pCiB7Ci0gICAgdmFyIG51bUNo
aWxkcmVuID0gcmVjb3JkLmNoaWxkcmVuID8gcmVjb3JkLmNoaWxkcmVuLmxlbmd0aCA6IDA7Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7Ci0gICAgICAgIHZhciBj
aGlsZCA9IHJlY29yZC5jaGlsZHJlbltpXTsKLSAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IHRp
bWVsaW5lQWdlbnRSZWNvcmRUeXBlLk1hcmtUaW1lbGluZQotICAgICAgICAgICAgJiYgY2hpbGQu
ZGF0YS5tZXNzYWdlID09PSB0aW1lbGluZU1hcmsKLSAgICAgICAgICAgICYmIHJlY29yZC5kYXRh
LnVybC5pbmRleE9mKCJ0aW1lbGluZS1zY3JpcHQtdGFnLTEuaHRtbCIpICE9PSAtMSkgewotCi0g
ICAgICAgICAgICAvLyBGaW5pc2ggcHJpbnRpbmcgdGhlIHJlY29yZCBhcyBhIHRyZWUKLSAgICAg
ICAgICAgIGR1bXBUaW1lbGluZVJlY29yZChyZWNvcmQsIDEpOwotICAgICAgICAgICAgb3V0cHV0
KCIiKTsKLQotICAgICAgICAgICAgLy8gTm93IHByaW50IHRoZSBpbXBvcnRhbnQgZmllbGRzIG9m
IHRoZSByZWNvcmQKLSAgICAgICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRQcm9wZXJ0aWVzKHJl
Y29yZCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIGFuYWx5emVQYXJzZUhUTUwocmVjb3JkKSAKLXsK
LSAgICAvLyBOb3csIGR1bXAgdGhlIHNwZWNpZmljIFNjcmlwdCB0YWcgdGhhdCBpbmNsdWRlcyB0
aGUgTWFya2VyIGFuZCBkdW1wIGl0IGluIGRldGFpbC4KLSAgICB2YXIgbnVtQ2hpbGRyZW4gPSBy
ZWNvcmQuY2hpbGRyZW4gPyByZWNvcmQuY2hpbGRyZW4ubGVuZ3RoIDogMDsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKLSAgICAgICAgdmFyIGNoaWxkID0gcmVj
b3JkLmNoaWxkcmVuW2ldOwotICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gdGltZWxpbmVBZ2Vu
dFJlY29yZFR5cGUuRXZhbHVhdGVTY3JpcHQpCi0gICAgICAgICAgICBpZiAoYW5hbHl6ZUV2YWx1
YXRlU2NyaXB0KGNoaWxkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfSAgCi0KLS8vIExvb2sgZm9yIHRoZSBQYXJzZUh0bWwtPkV2YWx1
YXRlU2NyaXB0LT5NYXJrVGltZWxpbmUgdGhhdCBjb3JyZWxhdGVzIAotLy8gdG8gdGhlIDxzY3Jp
cHQ+IHRhZyBiZWxvdy4KLWZ1bmN0aW9uIGFuYWx5emVUaW1lbGluZURhdGEodGltZWxpbmVSZWNv
cmRzKSAKLXsKLSAgICAvLyBVbmNvbW1lbnQgdG8gZGVidWdnaW5nIHRoZSBsaXN0IG9mIGRhdGEg
cmV0dXJuZWQuCi0gICAgLy8gZHVtcFRpbWVsaW5lUmVjb3Jkcyh0aW1lbGluZVJlY29yZHMpOwot
Ci0gICAgLy8gU2VhcmNoIGZvciBhIFBhcnNlSFRNTCByZWNvcmQKLSAgICB2YXIgbnVtUmVjb3Jk
cyA9IHRpbWVsaW5lUmVjb3Jkcy5sZW5ndGg7Ci0gICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgbnVt
UmVjb3JkczsgKytpKSB7Ci0gICAgICAgIHZhciByZWNvcmQgPSB0aW1lbGluZVJlY29yZHNbaV07
Ci0gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5cGUuUGFy
c2VIVE1MKSB7Ci0gICAgICAgICAgICAvLyBVbmNvbW1lbnQgdG8gZGVidWcgdGhlIFBhcnNlSFRN
TCBkYXRhIHJlY29yZAotICAgICAgICAgICAgLy8gZHVtcFRpbWVsaW5lUmVjb3JkKHJlY29yZCwg
MCk7Ci0gICAgICAgICAgICBvdXRwdXQoIlBhcnNlSFRNTCIpOwotICAgICAgICAgICAgaWYgKCFh
bmFseXplUGFyc2VIVE1MKHJlY29yZCkpCi0gICAgICAgICAgICAgICAgb3V0cHV0KCJGYWlsZWQg
dG8gZmluZCB0aW1lbGluZSBtYXJrOiAiICsgdGltZWxpbmVNYXJrKTsKLSAgICAgICAgfQorICAg
IGZ1bmN0aW9uIHN0ZXAoKQorICAgIHsKKyAgICAgICAgaWYgKCF3aW5kb3cuaWZyYW1lTG9hZGVk
KQorICAgICAgICAgICAgc2V0VGltZW91dChzdGVwLCAxMDApOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjb250aW51YXRpb24oKTsKICAgICB9CisgICAgc2V0VGltZW91dChzdGVwLCAxMDAp
OwogfQogCiBmdW5jdGlvbiBkb2l0KCkgCiB7Ci0gICAgcmV0cmlldmVUaW1lbGluZURhdGEoYW5h
bHl6ZVRpbWVsaW5lRGF0YSk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVk
KHRydWUpOworCisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFt
ZSIpOworICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL3RpbWVsaW5lLWlmcmFtZS1kYXRhLmh0
bWwiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKworICAgIHJ1bkFm
dGVySWZyYW1lSXNMb2FkZWQoZnVuY3Rpb24oKSB7CisgICAgICAgIHByaW50VGltZWxpbmVSZWNv
cmRzKG51bGwsIG51bGwsIGZ1bmN0aW9uKHJlY29yZCkgeworICAgICAgICAgICAgaWYgKHJlY29y
ZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5FdmFsdWF0ZVNjcmlwdCkKKyAgICAg
ICAgICAgICAgICBwcmludFRpbWVsaW5lUmVjb3JkUHJvcGVydGllcyhyZWNvcmQpOworICAgICAg
ICAgICAgZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlLlBh
cnNlSFRNTCkKKyAgICAgICAgICAgICAgICBkdW1wVGltZWxpbmVSZWNvcmQocmVjb3JkKTsKKyAg
ICAgICAgfSk7CisgICAgfSk7CiB9CiAKIDwvc2NyaXB0PgpAQCAtNzMsOSArNDMsNSBAQCBmdW5j
dGlvbiBkb2l0KCkKIFRlc3RzIHRoZSBUaW1lbGluZSBBUEkgaW5zdHJ1bWVudGF0aW9uIG9mIGFu
IEhUTUwgc2NyaXB0IHRhZy4KIDwvcD4KIAotPHNjcmlwdD4KLSAgICAgLy8gTWFyayB0aGlzIHNj
cmlwdCB0YWcgc28gd2UgY2FuIGZpbmQgaXQgaW4gdGhlIHRpbWVsaW5lIGRhdGEuCi0gICAgIGNv
bnNvbGUubWFya1RpbWVsaW5lKHRpbWVsaW5lTWFyayk7Ci08L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1zY3JpcHQt
dGFnLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlw
dC10YWctMi1leHBlY3RlZC50eHQKaW5kZXggMWQyMTUzNy4uYWNkN2YxNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi1leHBlY3Rl
ZC50eHQKQEAgLTEsOSArMSw1IEBACiBUZXN0cyB0aGUgVGltZWxpbmUgQVBJIGluc3RydW1lbnRh
dGlvbiBvZiBhIHNjcmlwdCB0YWcgd2l0aCBhbiBleHRlcm5hbCBzY3JpcHQuCiAKLVBhcnNlSFRN
TAotLS0tLT4gRXZhbHVhdGVTY3JpcHQKLS0tLS0tLS0tPiBNYXJrVGltZWxpbmUgOiBTQ1JJUFQg
VEFHCi0KIEV2YWx1YXRlU2NyaXB0IFByb3BlcnRpZXM6CiArIHN0YXJ0VGltZSA6ICogREVGSU5F
RCAqCiArIGRhdGEgOiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxp
bmUtc2NyaXB0LXRhZy0yLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2Ny
aXB0LXRhZy0yLmh0bWwKaW5kZXggMTk2YjY1Zi4uMDNjMWJmZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTIuaHRtbApAQCAtMyw2NSArMywzMSBA
QAogPHNjcmlwdCBzcmM9Imluc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJ0aW1lbGluZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci12YXIgdGltZWxpbmVNYXJr
ID0gIlNDUklQVCBUQUciOwogCi1mdW5jdGlvbiBhbmFseXplRXZhbHVhdGVTY3JpcHQocmVjb3Jk
KSAKK2Z1bmN0aW9uIHJ1bkFmdGVyU2NyaXB0SXNFdmFsdWF0ZWQoY29udGludWF0aW9uKQogewot
ICAgIHZhciBudW1DaGlsZHJlbiA9IHJlY29yZC5jaGlsZHJlbiA/IHJlY29yZC5jaGlsZHJlbi5s
ZW5ndGggOiAwOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewot
ICAgICAgICB2YXIgY2hpbGQgPSByZWNvcmQuY2hpbGRyZW5baV07Ci0gICAgICAgIGlmIChjaGls
ZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5NYXJrVGltZWxpbmUKLSAgICAgICAg
ICAgICYmIGNoaWxkLmRhdGEubWVzc2FnZSA9PT0gdGltZWxpbmVNYXJrCi0gICAgICAgICAgICAm
JiByZWNvcmQuZGF0YS51cmwuaW5kZXhPZigidGltZWxpbmUtc2NyaXB0LXRhZy0yLmpzIikgIT09
IC0xKSB7Ci0KLSAgICAgICAgICAgIC8vIEZpbmlzaCBwcmludGluZyB0aGUgcmVjb3JkIGFzIGEg
dHJlZQotICAgICAgICAgICAgZHVtcFRpbWVsaW5lUmVjb3JkKHJlY29yZCwgMSk7Ci0gICAgICAg
ICAgICBvdXRwdXQoIiIpOwotCi0gICAgICAgICAgICAvLyBOb3cgcHJpbnQgdGhlIGltcG9ydGFu
dCBmaWVsZHMgb2YgdGhlIHJlY29yZAotICAgICAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZFBy
b3BlcnRpZXMocmVjb3JkKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Cisg
ICAgZnVuY3Rpb24gc3RlcCgpCisgICAgeworICAgICAgICBpZiAoIXdpbmRvdy5zY3JpcHRFdmFs
dWF0ZWQpCisgICAgICAgICAgICBzZXRUaW1lb3V0KHN0ZXAsIDEwMCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvbnRpbnVhdGlvbigpOwogICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgc2V0VGltZW91dChzdGVwLCAxMDApOwogfQogCi1mdW5jdGlvbiBhbmFseXplUGFyc2VIVE1M
KHJlY29yZCkgCi17Ci0gICAgdmFyIG51bUNoaWxkcmVuID0gcmVjb3JkLmNoaWxkcmVuID8gcmVj
b3JkLmNoaWxkcmVuLmxlbmd0aCA6IDA7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1DaGls
ZHJlbjsgKytpKSB7Ci0gICAgICAgIHZhciBjaGlsZCA9IHJlY29yZC5jaGlsZHJlbltpXTsKLSAg
ICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlLkV2YWx1YXRl
U2NyaXB0KQotICAgICAgICAgICAgaWYgKGFuYWx5emVFdmFsdWF0ZVNjcmlwdChjaGlsZCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0g
IAotCi0vLyBMb29rIGZvciB0aGUgUGFyc2VIdG1sLT5FdmFsdWF0ZVNjcmlwdC0+TWFya1RpbWVs
aW5lIHRoYXQgY29ycmVsYXRlcyAKLS8vIHRvIHRoZSA8c2NyaXB0PiB0YWcgYmVsb3cuCi1mdW5j
dGlvbiBhbmFseXplVGltZWxpbmVEYXRhKHRpbWVsaW5lUmVjb3JkcykgCitmdW5jdGlvbiBkb2l0
KCkgCiB7Ci0gICAgLy8gVW5jb21tZW50IHRvIGRlYnVnZ2luZyB0aGUgbGlzdCBvZiBkYXRhIHJl
dHVybmVkLgotICAgIC8vIGR1bXBUaW1lbGluZVJlY29yZHModGltZWxpbmVSZWNvcmRzKTsKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQodHJ1ZSk7CiAKLSAgICAvLyBTZWFy
Y2ggZm9yIGEgUGFyc2VIVE1MIHJlY29yZAotICAgIHZhciBudW1SZWNvcmRzID0gdGltZWxpbmVS
ZWNvcmRzLmxlbmd0aDsKLSAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBudW1SZWNvcmRzOyArK2kp
IHsKLSAgICAgICAgdmFyIHJlY29yZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsKLSAgICAgICAgaWYg
KHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5QYXJzZUhUTUwpIHsKLSAg
ICAgICAgICAgIC8vIFVuY29tbWVudCB0byBkZWJ1ZyB0aGUgUGFyc2VIVE1MIGRhdGEgcmVjb3Jk
Ci0gICAgICAgICAgICAvLyBkdW1wVGltZWxpbmVSZWNvcmQocmVjb3JkLCAwKTsKLSAgICAgICAg
ICAgIG91dHB1dCgiUGFyc2VIVE1MIik7Ci0gICAgICAgICAgICBpZiAoIWFuYWx5emVQYXJzZUhU
TUwocmVjb3JkKSkKLSAgICAgICAgICAgICAgICBvdXRwdXQoIkZhaWxlZCB0byBmaW5kIHRpbWVs
aW5lIG1hcms6ICIgKyB0aW1lbGluZU1hcmspOwotICAgICAgICB9Ci0gICAgfQotfQorICAgIHZh
ciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKKyAgICBzY3JpcHQu
c3JjID0gInRpbWVsaW5lLXNjcmlwdC10YWctMi5qcyI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChzY3JpcHQpOwogCi1mdW5jdGlvbiBkb2l0KCkgCi17Ci0gICAgcmV0cmlldmVUaW1l
bGluZURhdGEoYW5hbHl6ZVRpbWVsaW5lRGF0YSk7CisgICAgcnVuQWZ0ZXJTY3JpcHRJc0V2YWx1
YXRlZChmdW5jdGlvbigpIHsKKyAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZHMobnVsbCwgIkV2
YWx1YXRlU2NyaXB0Iik7CisgICAgfSk7CiB9CiAKIDwvc2NyaXB0PgpAQCAtNzIsNiArMzgsNSBA
QCBmdW5jdGlvbiBkb2l0KCkKIFRlc3RzIHRoZSBUaW1lbGluZSBBUEkgaW5zdHJ1bWVudGF0aW9u
IG9mIGEgc2NyaXB0IHRhZyB3aXRoIGFuIGV4dGVybmFsIHNjcmlwdC4KIDwvcD4KIAotPHNjcmlw
dCBzcmM9InRpbWVsaW5lLXNjcmlwdC10YWctMi5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRh
Zy0yLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi5qcwpp
bmRleCAwZmIyNzNmLi42NDAyNGYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dGltZWxpbmUtc2NyaXB0LXRhZy0yLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS1zY3JpcHQtdGFnLTIuanMKQEAgLTEgKzEsMiBAQAotY29uc29sZS5tYXJrVGltZWxpbmUo
dGltZWxpbmVNYXJrKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitjb25zb2xlLm1hcmtU
aW1lbGluZSgiU0NSSVBUIFRBRyIpOword2luZG93LnNjcmlwdEV2YWx1YXRlZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtdGVzdC5qcyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10ZXN0LmpzCmluZGV4IDE5ODY1YjIuLjAwYmI3NzAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10ZXN0LmpzCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10ZXN0LmpzCkBAIC0xLDcgKzEsMyBAQAot
Ly8gVXNlZCB0byBtYXJrIHRpbWVsaW5lIHJlY29yZHMgYXMgYmVsb25naW5nIHRvIHRoZSB0ZXN0
IGZyYW1ld29yay4KLXZhciB0aW1lbGluZU92ZXJoZWFkTWFyayA9ICIqKipPdmVyaGVhZCoqKiI7
Ci0KLS8vIFRpbWVsaW5lQWdlbnQgcmVjb3JkIHR5cGUgZGVmaW5pdGlvbnMgZnJvbSB0aGUgaW5z
cGVjdG9yCiB2YXIgdGltZWxpbmVBZ2VudFJlY29yZFR5cGUgPSB7fTsKIAogLy8gU2NydWIgdmFs
dWVzIHdoZW4gcHJpbnRpbmcgb3V0IHRoZXNlIHByb3BlcnRpZXMgaW4gdGhlIHJlY29yZCBvciBk
YXRhIGZpZWxkLgpAQCAtMTIsMjcgKzgsNDAgQEAgdmFyIHRpbWVsaW5lTm9uRGV0ZXJtaW5pc3Rp
Y1Byb3BzID0gewogICAgIHVybCA6IDEKIH07CiAKLS8vIENhbGwgdGhpcyBmdW5jdGlvbiBmcm9t
IHRoZSBkb2l0KCkgZnVuY3Rpb24gaW4gdGhlIG1haW4gdGVzdCBwYWdlLgotLy8gUGFzcyBhIGZ1
bmN0aW9uIHRoYXQgd2lsbCBnZXQgYW4gYXJyYXkgb2YgdGltZWxpbmUgZGF0YSB0byBwcm9jZXNz
LgotZnVuY3Rpb24gcmV0cmlldmVUaW1lbGluZURhdGEoYW5hbHl6ZUZ1bmN0aW9uKQorZnVuY3Rp
b24gcHJpbnRUaW1lbGluZVJlY29yZHMocGVyZm9ybUFjdGlvbnMsIHR5cGVOYW1lLCBmb3JtYXR0
ZXIpCiB7CisgICAgaWYgKHBlcmZvcm1BY3Rpb25zKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRU
aW1lbGluZVByb2ZpbGluZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgIHBlcmZvcm1BY3Rpb25zKCk7
CisgICAgfQorCiAgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZSIsIGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICB0aW1lbGlu
ZUFnZW50UmVjb3JkVHlwZSA9IHJlc3VsdDsKICAgICB9KTsKIAotICAgIGV2YWx1YXRlSW5XZWJJ
bnNwZWN0b3IoImZyb250ZW5kX2dldFRpbWVsaW5lUmVzdWx0cygpIiwgZnVuY3Rpb24odGltZWxp
bmVSZWNvcmRzKSB7CisgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfZ2V0VGlt
ZWxpbmVSZXN1bHRzIiwgZnVuY3Rpb24odGltZWxpbmVSZWNvcmRzKSB7CiAgICAgICAgIGlmICh0
eXBlb2YodGltZWxpbmVSZWNvcmRzKSA9PT0gInN0cmluZyIpCiAgICAgICAgICAgICBvdXRwdXQo
IkVycm9yIGZldGNoaW5nIFRpbWVsaW5lIHJlc3VsdHM6ICIgKyB0aW1lbGluZVJlY29yZHMpOwot
ICAgICAgICBlbHNlIAotICAgICAgICAgICAgYW5hbHl6ZUZ1bmN0aW9uKHRpbWVsaW5lUmVjb3Jk
cyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aW1l
bGluZVJlY29yZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZU5hbWUg
JiYgdGltZWxpbmVSZWNvcmRzW2ldLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlW3R5
cGVOYW1lXSkKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZFByb3BlcnRp
ZXModGltZWxpbmVSZWNvcmRzW2ldKTsKKyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0dGVyKQor
ICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIodGltZWxpbmVSZWNvcmRzW2ldKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGltZWxpbmVQcm9maWxp
bmdFbmFibGVkKGZhbHNlKTsKICAgICAgICAgbm90aWZ5RG9uZSgpOwogICAgIH0pOwotICAgIG1h
cmtUaW1lbGluZVJlY29yZEFzT3ZlcmhlYWQoIm9ubG9hZCIgKyAoaWdub3JlTG9hZCA/ICI6aWdu
b3JlTG9hZCI6ICIiKSk7CiB9CiAKIC8vIER1bXAganVzdCB0aGUgcmVjb3JkIG5hbWUsIGluZGVu
dGluZyBvdXRwdXQgb24gc2VwYXJhdGUgbGluZXMgZm9yIHN1YnJlY29yZHMKIGZ1bmN0aW9uIGR1
bXBUaW1lbGluZVJlY29yZChyZWNvcmQsIGxldmVsKSAKIHsKKyAgICBpZiAodHlwZW9mIGxldmVs
ICE9PSAibnVtYmVyIikKKyAgICAgICAgbGV2ZWwgPSAwOwogICAgIHZhciBwcmVmaXggPSAiIjsK
ICAgICB2YXIgc3VmZml4ID0gIiI7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZXZlbCA7ICsr
aSkKQEAgLTQ5LDE4ICs1OCwxMSBAQCBmdW5jdGlvbiBkdW1wVGltZWxpbmVSZWNvcmQocmVjb3Jk
LCBsZXZlbCkKICAgICAgICAgZHVtcFRpbWVsaW5lUmVjb3JkKHJlY29yZC5jaGlsZHJlbltpXSwg
bGV2ZWwgKyAxKTsKIH0KIAotLy8gRHVtcHMgYW4gZW50aXJlIGxpc3Qgb2YgcmVjb3JkcywgY3Vs
bGluZyBvdXQgdGhvc2UgbWFya2VkIGFzIG92ZXJoZWFkCiBmdW5jdGlvbiBkdW1wVGltZWxpbmVS
ZWNvcmRzKHRpbWVsaW5lUmVjb3JkcykgewotICAgIHZhciBudW1SZWNvcmRzID0gdGltZWxpbmVS
ZWNvcmRzLmxlbmd0aDsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVJlY29yZHM7ICsraSkg
ewotICAgICAgICB2YXIgcmVjb3JkID0gdGltZWxpbmVSZWNvcmRzW2ldOwotICAgICAgICBpZiAo
IWlzVGltZWxpbmVPdmVyaGVhZFJlY29yZChyZWNvcmQpKQotICAgICAgICAgICAgZHVtcFRpbWVs
aW5lUmVjb3JkKHJlY29yZCwgMCk7Ci0gICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGlt
ZWxpbmVSZWNvcmRzLmxlbmd0aDsgKytpKQorICAgICAgICBkdW1wVGltZWxpbmVSZWNvcmQodGlt
ZWxpbmVSZWNvcmRzW2ldLCAwKTsKIH0KIAotLy8gU29ydCB0aGUgZmllbGRzLCB0aGVuIHN0cmlw
IG91dCBzdGFydFRpbWUgYW5kIGVuZFRpbWUsIHRoZXkgYXJlIG5vdCBkZXRlcm1pbmlzdGljLgot
Ly8gQWxzbyByZW1vdmUgY2hpbGRyZW4gLSB0aGF0IGZpZWxkIGlzbid0IGltcG9ydGFudCBmb3Ig
dGhlIHByaW50b3V0LgogZnVuY3Rpb24gcHJpbnRUaW1lbGluZVJlY29yZFByb3BlcnRpZXMocmVj
b3JkKQogewogICAgIG91dHB1dCh0aW1lbGluZUFnZW50VHlwZVRvU3RyaW5nKHJlY29yZC50eXBl
KSArICIgUHJvcGVydGllczoiKTsKQEAgLTc1LDcgKzc3LDcgQEAgZnVuY3Rpb24gaXNOb25EZXRl
cm1pbmlzdGljUHJvcChwcm9wTmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWZ1bmN0aW9u
IHByaW50UHJvcHMgKHJlY29yZCwgbGV2ZWwpCitmdW5jdGlvbiBwcmludFByb3BzKHJlY29yZCwg
bGV2ZWwpCiB7CiAgICAgdmFyIHByb3BzID0gbmV3IEFycmF5KCk7CiAgICAgZm9yICh2YXIgcHJv
cCBpbiByZWNvcmQpIHsKQEAgLTEwMiwyOCArMTA0LDYgQEAgZnVuY3Rpb24gcHJpbnRQcm9wcyAo
cmVjb3JkLCBsZXZlbCkKICAgICB9CiB9CiAKLS8vIFJlY29yZHMgdGhhdCBoYXZlIGJlZW4gbWFy
a2VkIHdpdGggY29uc29sZS5tYXJrVGltZWxpbmUodGltZWxpbmVNYXJrKQotLy8gYXJlIGEgcGFy
dCBvZiB0aGUgdGVzdCBmcmFtZXdvcmsgYW5kIG5vdCBhIHBhcnQgb2YgdGhlIHRlc3QgYmVpbmcg
cGVyZm9ybWVkCi1mdW5jdGlvbiBpc1RpbWVsaW5lT3ZlcmhlYWRSZWNvcmQocmVjb3JkKSB7Ci0g
ICAgaWYgKHJlY29yZC50eXBlID09PSAxMSAmJiByZWNvcmQuZGF0YS5tZXNzYWdlLmluZGV4T2Yo
dGltZWxpbmVPdmVyaGVhZE1hcmspICE9PSAtMSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
dmFyIG51bUNoaWxkcmVuID0gcmVjb3JkLmNoaWxkcmVuID8gIHJlY29yZC5jaGlsZHJlbi5sZW5n
dGggOiAwOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewotICAg
ICAgICBpZiAoaXNUaW1lbGluZU92ZXJoZWFkUmVjb3JkKHJlY29yZC5jaGlsZHJlbltpXSkpCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0v
LyBUaGlzIG1hcmsgd2lsbCBoZWxwIHRoZSB0ZXN0IGFuYWx5c2lzIGN1bGwgb3V0IHJlY29yZHMg
dGhhdCBhcmUgb3ZlcmhlYWQuCi1mdW5jdGlvbiBtYXJrVGltZWxpbmVSZWNvcmRBc092ZXJoZWFk
KGFyZykKLXsKLSAgICB2YXIgc3VmZml4ID0gJyc7Ci0gICAgaWYgKGFyZykKLSAgICAgICAgc3Vm
Zml4ID0gIjogIiArIGFyZzsKLSAgICBjb25zb2xlLm1hcmtUaW1lbGluZSh0aW1lbGluZU92ZXJo
ZWFkTWFyayArIHN1ZmZpeCk7Ci19Ci0KIGZ1bmN0aW9uIHRpbWVsaW5lQWdlbnRUeXBlVG9TdHJp
bmcobnVtZXJpY1R5cGUpCiB7CiAgICAgZm9yICh2YXIgcHJvcCBpbiB0aW1lbGluZUFnZW50UmVj
b3JkVHlwZSkgewpAQCAtMTM0LDIzICsxMTQsMTEgQEAgZnVuY3Rpb24gdGltZWxpbmVBZ2VudFR5
cGVUb1N0cmluZyhudW1lcmljVHlwZSkKIH0KIAogLy8gSW5qZWN0ZWQgaW50byBJbnNwZWN0b3Ig
d2luZG93Ci1mdW5jdGlvbiBmcm9udGVuZF9zdGFydFRpbWVsaW5lUHJvZmlsZXIoKQotewotICAg
IHdpbmRvdy50aW1lbGluZVJlc3VsdHMgPSBuZXcgQXJyYXkoKTsKLSAgICB3aW5kb3cuV2ViSW5z
cGVjdG9yLmFkZFJlY29yZFRvVGltZWxpbmUgPSBmdW5jdGlvbihhcmcpIHsKLSAgICAgICAgd2lu
ZG93LnRpbWVsaW5lUmVzdWx0cy5wdXNoKGFyZyk7Ci0gICAgfTsKLSAgICB3aW5kb3cuSW5zcGVj
dG9yQ29udHJvbGxlci5zdGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKLSAgICByZXR1cm4gJ2RvbmUn
OwotfQotCi0vLyBJbmplY3RlZCBpbnRvIEluc3BlY3RvciB3aW5kb3cKIGZ1bmN0aW9uIGZyb250
ZW5kX2dldFRpbWVsaW5lUmVzdWx0cygpIHsKLSAgICByZXR1cm4gd2luZG93LnRpbWVsaW5lUmVz
dWx0czsKLX0KLQotLy8gSW5qZWN0ZWQgaW50byBJbnNwZWN0b3Igd2luZG93Ci0vLyBmcm9udGVu
ZF9zZXR1cCBhbHdheXMgZ2V0cyBjYWxsZWQgYmVmb3JlIHRoZSBwYWdlIGlzIHJlbG9hZGVkLgot
ZnVuY3Rpb24gZnJvbnRlbmRfc2V0dXAoKSB7Ci0gICAgZnJvbnRlbmRfc3RhcnRUaW1lbGluZVBy
b2ZpbGVyKCk7CisgICAgdmFyIHJlc3VsdCA9IFtdOworICAgIHZhciBpdGVtcyA9IFdlYkluc3Bl
Y3Rvci5wYW5lbHMudGltZWxpbmUuX2l0ZW1zOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRl
bXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgcmVzdWx0LnB1c2goaXRlbXNbaV0ucmVjb3JkKTsK
KyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY0YzE0My4uYWI3ZDRhMyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAwOS0xMS0xNiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogTWFrZSBEUlQgc2hvdyB3ZWIgaW5zcGVjdG9yIGZvciB0ZXN0cyBpbiBpbnNwZWN0
b3IvIGZvbGRlci4KKyAgICAgICAgICAtIFVwZGF0ZWQgRFJUIHRvIHNob3cvY2xvc2UgaW5zcGVj
dG9yIGZvciBhbGwgdGVzdHMgdW5kZXIgL2luc3BlY3RvcgorICAgICAgICAgIC0gSW50cm9kdWNl
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIGFuZAor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQgYmVz
aWRlIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkCisgICAgICAgICAgLSBSZW1vdmVkIHJl
bG9hZCBvbiBlYWNoIGluc3BlY3RvciB0ZXN0CisgICAgICAgICAgLSBSZWltcGxlbWVudGVkIHRp
bWVsaW5lIHRlc3RzIGluIG9yZGVyIHRvIGdldCByaWQgb2YgcmVsb2FkIHRoZXJlLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTQ3MgorCisgICAg
ICAgICogV2ViQ29yZS5JbnNwZWN0b3IuZXhwOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVs
LnByb3RvdHlwZS5fZm9ybWF0UmVjb3JkKToKKwogMjAwOS0xMS0xNCAgQ2hyaXMgRmxlaXphY2gg
IDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLkluc3BlY3Rvci5leHAgYi9XZWJDb3JlL1dl
YkNvcmUuSW5zcGVjdG9yLmV4cAppbmRleCA1NzY5OTRmLi4wMDA1OTRkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUuSW5zcGVjdG9yLmV4cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuSW5zcGVj
dG9yLmV4cApAQCAtMTYsMyArMTYsNSBAQCBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRFbFJLTlNfNlN0cmluZ0UKIF9fWk5LN1dlYkNv
cmUxOUluc3BlY3RvckNvbnRyb2xsZXIxN2RyYXdOb2RlSGlnaGxpZ2h0RVJOU18xNUdyYXBoaWNz
Q29udGV4dEUKIF9fWk5LN1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI3ZW5hYmxlZEV2CiBf
X1pOSzdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyN3NldHRpbmdFUktOU182U3RyaW5nRQor
X19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjFzdGFydFRpbWVsaW5lUHJvZmlsZXJF
dgorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjBzdG9wVGltZWxpbmVQcm9maWxl
ckV2CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5l
bC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4
IDExY2FkZjMuLjM3NzBlYmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZVBhbmVsLmpzCkBAIC0xNzIsNiArMTcyLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuY291bnQgPSAxOwogICAg
ICAgICBmb3JtYXR0ZWRSZWNvcmQudHlwZSA9IHJlY29yZC50eXBlOwogICAgICAgICBmb3JtYXR0
ZWRSZWNvcmQuZW5kVGltZSA9ICh0eXBlb2YgcmVjb3JkLmVuZFRpbWUgIT09ICJ1bmRlZmluZWQi
KSA/IHJlY29yZC5lbmRUaW1lIC8gMTAwMCA6IGZvcm1hdHRlZFJlY29yZC5zdGFydFRpbWU7Cisg
ICAgICAgIGZvcm1hdHRlZFJlY29yZC5yZWNvcmQgPSByZWNvcmQ7CiAKICAgICAgICAgLy8gTWFr
ZSByZXNvdXJjZSByZWNlaXZlIHJlY29yZCBsYXN0IHNpbmNlIHJlcXVlc3Qgd2FzIHNlbnQ7IG1h
a2UgZmluaXNoIHJlY29yZCBsYXN0IHNpbmNlIHJlc3BvbnNlIHJlY2VpdmVkLgogICAgICAgICBp
ZiAocmVjb3JkLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUu
UmVzb3VyY2VTZW5kUmVxdWVzdCkgewpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
Yi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA5YzhkYmRkLi40MWUwZTAzIDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDA5LTExLTE2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBNYWtlIERSVCBzaG93IHdlYiBpbnNwZWN0b3IgZm9yIHRlc3RzIGluIGlu
c3BlY3Rvci8gZm9sZGVyLgorICAgICAgICAgIC0gVXBkYXRlZCBEUlQgdG8gc2hvdy9jbG9zZSBp
bnNwZWN0b3IgZm9yIGFsbCB0ZXN0cyB1bmRlciAvaW5zcGVjdG9yCisgICAgICAgICAgLSBJbnRy
b2R1Y2VkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQg
YW5kCisgICAgICAgICAgICBXZWJJbnNwZWN0b3I6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxl
ZCBiZXNpZGUgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQKKyAgICAgICAgICAtIFJlbW92
ZWQgcmVsb2FkIG9uIGVhY2ggaW5zcGVjdG9yIHRlc3QKKyAgICAgICAgICAtIFJlaW1wbGVtZW50
ZWQgdGltZWxpbmUgdGVzdHMgaW4gb3JkZXIgdG8gZ2V0IHJpZCBvZiByZWxvYWQgdGhlcmUuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDcyCisK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKHdlYmtp
dF93ZWJfaW5zcGVjdG9yX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl9pbnNwZWN0
b3Jfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9wcm9w
ZXJ0eSk6CisKIDIwMDktMTEtMTMgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVwZGF0ZSBmb3IgY2hhbmdlcyB0byBGcmFtZUxvYWRlckNsaWVudApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcCBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5jcHAKaW5kZXggZWUyODE1Yy4uZjdhNThhNyAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcAorKysgYi9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwCkBAIC04Myw3ICs4Myw4IEBA
IGVudW0gewogCiAgICAgUFJPUF9XRUJfVklFVywKICAgICBQUk9QX0lOU1BFQ1RFRF9VUkksCi0g
ICAgUFJPUF9KQVZBU0NSSVBUX1BST0ZJTElOR19FTkFCTEVECisgICAgUFJPUF9KQVZBU0NSSVBU
X1BST0ZJTElOR19FTkFCTEVELAorICAgIFBST1BfVElNRUxJTkVfUFJPRklMSU5HX0VOQUJMRUQg
ICAgCiB9OwogCiBHX0RFRklORV9UWVBFKFdlYktpdFdlYkluc3BlY3Rvciwgd2Via2l0X3dlYl9p
bnNwZWN0b3IsIEdfVFlQRV9PQkpFQ1QpCkBAIC0zMDAsNiArMzAxLDIyIEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfaW5zcGVjdG9yX2NsYXNzX2luaXQoV2ViS2l0V2ViSW5zcGVjdG9yQ2xhc3Mq
IGtsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFE
V1JJVEUpKTsKIAorICAgIC8qKgorICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOnRpbWVsaW5lLXBy
b2ZpbGluZy1lbmFibGVkCisgICAgKgorICAgICogVGhpcyBpcyBlbmFibGluZyBUaW1lbGluZSBw
cm9maWxpbmcgaW4gdGhlIEluc3BlY3Rvci4KKyAgICAqCisgICAgKiBTaW5jZTogMS4xLjEKKyAg
ICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfVElNRUxJTkVfUFJPRklM
SU5HX0VOQUJMRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
dGltZWxpbmUtcHJvZmlsaW5nLWVuYWJsZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIkVuYWJsZSBUaW1lbGluZSBwcm9maWxpbmciKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJQcm9maWxlIHRoZSBXZWJDb3JlIGluc3Ry
dW1lbnRhdGlvbi4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
QUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBRFdSSVRFKSk7CisKICAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNp
emVvZihXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKSk7CiB9CiAKQEAgLTMzNyw2ICszNTQsMTUg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3Byb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY28KICAgICAgICAgICAgIGNvbnRyb2xsZXItPmRpc2Fi
bGVQcm9maWxlcigpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBQUk9QX1RJTUVM
SU5FX1BST0ZJTElOR19FTkFCTEVEOiB7CisgICAgICAgIGJvb2wgZW5hYmxlZCA9IGdfdmFsdWVf
Z2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
KiBjb250cm9sbGVyID0gcHJpdi0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgICAg
ICBpZiAoZW5hYmxlZCkKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPnN0YXJ0VGltZWxpbmVQcm9m
aWxlcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb250cm9sbGVyLT5zdG9wVGltZWxp
bmVQcm9maWxlcigpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNw
ZWMpOwogICAgICAgICBicmVhazsKQEAgLTM1OCw2ICszODQsOSBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX2luc3BlY3Rvcl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
X2lkLCBHVgogICAgIGNhc2UgUFJPUF9KQVZBU0NSSVBUX1BST0ZJTElOR19FTkFCTEVEOgogICAg
ICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5wYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPnByb2ZpbGVyRW5hYmxlZCgpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX1RJTUVMSU5FX1BST0ZJTElOR19FTkFCTEVEOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCBwcml2LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnRpbWVsaW5lQWdl
bnQoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDAzNDVjYTAuLmRhZjI3NDggMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDkt
MTEtMTYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1h
a2UgRFJUIHNob3cgd2ViIGluc3BlY3RvciBmb3IgdGVzdHMgaW4gaW5zcGVjdG9yLyBmb2xkZXIu
CisgICAgICAgICAgLSBVcGRhdGVkIERSVCB0byBzaG93L2Nsb3NlIGluc3BlY3RvciBmb3IgYWxs
IHRlc3RzIHVuZGVyIC9pbnNwZWN0b3IKKyAgICAgICAgICAtIEludHJvZHVjZWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCBhbmQKKyAgICAgICAgICAg
IFdlYkluc3BlY3Rvcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIGJlc2lkZSBzZXRKYXZh
U2NyaXB0UHJvZmlsaW5nRW5hYmxlZAorICAgICAgICAgIC0gUmVtb3ZlZCByZWxvYWQgb24gZWFj
aCBpbnNwZWN0b3IgdGVzdAorICAgICAgICAgIC0gUmVpbXBsZW1lbnRlZCB0aW1lbGluZSB0ZXN0
cyBpbiBvcmRlciB0byBnZXQgcmlkIG9mIHJlbG9hZCB0aGVyZS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NzIKKworICAgICAgICAqIFdlYklu
c3BlY3Rvci9XZWJJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvV2ViSW5zcGVj
dG9yLm1tOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3IgaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJs
ZWRdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yIHNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxl
ZDpdKToKKwogMjAwOS0xMS0xNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmggYi9XZWJLaXQvbWFjL1dlYkluc3BlY3Rv
ci9XZWJJbnNwZWN0b3IuaAppbmRleCBjMTY3MjZkLi5mYTEzYzhkIDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IuaAorKysgYi9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9XZWJJbnNwZWN0b3IuaApAQCAtNDksNiArNDksOCBAQAogCiAtIChCT09MKWlzSmF2
YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQ7CiAtICh2b2lkKXNldEphdmFTY3JpcHRQcm9maWxpbmdF
bmFibGVkOihCT09MKWVuYWJsZWQ7CistIChCT09MKWlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVk
OworLSAodm9pZClzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKIAog
LSAoQk9PTClpc1Byb2ZpbGluZ0phdmFTY3JpcHQ7CiAtICh2b2lkKXRvZ2dsZVByb2ZpbGluZ0ph
dmFTY3JpcHQ6KGlkKXNlbmRlcjsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L1dlYkluc3BlY3Rvci5tbSBiL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5t
bQppbmRleCBjY2IwOWM1Li4yNThkZDAxIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkluc3Bl
Y3Rvci9XZWJJbnNwZWN0b3IubW0KKysrIGIvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5z
cGVjdG9yLm1tCkBAIC0xNDgsNiArMTQ4LDI1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
ICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2FibGVQcm9maWxlcigpOwog
fQogCistIChCT09MKWlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkCit7CisgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBjb3JlKF93ZWJWaWV3KSkKKyAgICAgICAgcmV0dXJuIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+dGltZWxpbmVBZ2VudCgpID8gWUVTIDogTk87CisgICAgcmV0dXJuIE5POwor
fQorCistICh2b2lkKXNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZDooQk9PTCllbmFibGVkCit7
CisgICAgUGFnZSogcGFnZSA9IGNvcmUoX3dlYlZpZXcpOworICAgIGlmICghcGFnZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKGVuYWJsZWQpCisgICAgICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+c3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7CisgICAgZWxzZQorICAgICAgICBw
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnN0b3BUaW1lbGluZVByb2ZpbGVyKCk7Cit9CisK
IC0gKHZvaWQpY2xvc2U6KGlkKXNlbmRlciAKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUo
X3dlYlZpZXcpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2lu
L0NoYW5nZUxvZwppbmRleCBkNGU4OWM4Li5hMzNkZDU2IDEwMDY0NAotLS0gYS9XZWJLaXQvd2lu
L0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDA5LTExLTE2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBNYWtlIERSVCBzaG93IHdlYiBpbnNwZWN0b3IgZm9yIHRlc3RzIGluIGluc3BlY3Rvci8gZm9s
ZGVyLgorICAgICAgICAgIC0gVXBkYXRlZCBEUlQgdG8gc2hvdy9jbG9zZSBpbnNwZWN0b3IgZm9y
IGFsbCB0ZXN0cyB1bmRlciAvaW5zcGVjdG9yCisgICAgICAgICAgLSBJbnRyb2R1Y2VkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQgYW5kCisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3I6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCBiZXNpZGUgc2V0
SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQKKyAgICAgICAgICAtIFJlbW92ZWQgcmVsb2FkIG9u
IGVhY2ggaW5zcGVjdG9yIHRlc3QKKyAgICAgICAgICAtIFJlaW1wbGVtZW50ZWQgdGltZWxpbmUg
dGVzdHMgaW4gb3JkZXIgdG8gZ2V0IHJpZCBvZiByZWxvYWQgdGhlcmUuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDcyCisKKyAgICAgICAgKiBJ
bnRlcmZhY2VzL0lXZWJJbnNwZWN0b3IuaWRsOgorICAgICAgICAqIFdlYkluc3BlY3Rvci5jcHA6
CisgICAgICAgIChXZWJJbnNwZWN0b3I6OmlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKToKKyAgICAg
ICAgKiBXZWJJbnNwZWN0b3IuaDoKKwogMjAwOS0xMS0xMyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0lu
dGVyZmFjZXMvSVdlYkluc3BlY3Rvci5pZGwgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYklu
c3BlY3Rvci5pZGwKaW5kZXggZTMxMzc2Yy4uNGQwZDk2YyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL0lXZWJJbnNwZWN0b3IuaWRsCisrKyBiL1dlYktpdC93aW4vSW50ZXJmYWNl
cy9JV2ViSW5zcGVjdG9yLmlkbApAQCAtNTQsNCArNTQsNiBAQCBpbnRlcmZhY2UgSVdlYkluc3Bl
Y3RvciA6IElVbmtub3duCiAKICAgICBIUkVTVUxUIGlzSmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJs
ZWQoQk9PTCogaXNQcm9maWxpbmdFbmFibGVkKTsKICAgICBIUkVTVUxUIHNldEphdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkKEJPT0wgZW5hYmxlZCk7CisgICAgSFJFU1VMVCBpc1RpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZChCT09MKiBpc0VuYWJsZWQpOworICAgIEhSRVNVTFQgc2V0VGltZWxpbmVQ
cm9maWxpbmdFbmFibGVkKEJPT0wgZW5hYmxlZCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvd2lu
L1dlYkluc3BlY3Rvci5jcHAgYi9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggOTc1
ODdmOS4uODU3ODliOCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuY3BwCisr
KyBiL1dlYktpdC93aW4vV2ViSW5zcGVjdG9yLmNwcApAQCAtMjU5LDYgKzI1OSw0MSBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkluc3BlY3Rvcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGlu
Z0VuYWJsZWQoQk9PTCBlbmFibAogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkluc3BlY3Rvcjo6aXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoQk9P
TCogaXNFbmFibGVkKQoreworICAgIGlmICghaXNFbmFibGVkKQorICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOworCisgICAgKmlzRW5hYmxlZCA9IEZBTFNFOworCisgICAgaWYgKCFtX3dlYlZpZXcp
CisgICAgICAgIHJldHVybiBTX09LOworCisgICAgUGFnZSogcGFnZSA9IG1fd2ViVmlldy0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIFNfT0s7CisKKyAgICAqaXNFbmFi
bGVkID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT50aW1lbGluZUFnZW50KCk7CisgICAg
cmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSW5zcGVjdG9y
OjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoQk9PTCBlbmFibGVkKQoreworICAgIGlmICgh
bV93ZWJWaWV3KQorICAgICAgICByZXR1cm4gU19PSzsKKworICAgIFBhZ2UqIHBhZ2UgPSBtX3dl
YlZpZXctPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBTX09LOworCisg
ICAgaWYgKGVuYWJsZWQpCisgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c3Rh
cnRUaW1lbGluZVByb2ZpbGVyKCk7CisgICAgZWxzZQorICAgICAgICBwYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPnN0b3BUaW1lbGluZVByb2ZpbGVyKCk7CisKKyAgICByZXR1cm4gU19PSzsK
K30KKwogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSAgV2ViSW5zcGVjdG9yOjpldmFsdWF0ZUlu
RnJvbnRlbmQoVUxPTkcgY2FsbElkLCBCU1RSIGJTY3JpcHQpCiB7CiAgICAgaWYgKCFtX3dlYlZp
ZXcpCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5oIGIvV2ViS2l0L3dpbi9X
ZWJJbnNwZWN0b3IuaAppbmRleCA0ZjliZWRiLi41ODFiZmUwIDEwMDY0NAotLS0gYS9XZWJLaXQv
d2luL1dlYkluc3BlY3Rvci5oCisrKyBiL1dlYktpdC93aW4vV2ViSW5zcGVjdG9yLmgKQEAgLTU5
LDYgKzU5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGlzSmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoQk9PTCogaXNQcm9maWxpbmdFbmFibGVk
KTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SmF2YVNjcmlwdFBy
b2ZpbGluZ0VuYWJsZWQoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkKEJPT0wqIGlzRW5hYmxlZCk7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxl
ZChCT09MKTsKICAgICAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZh
bHVhdGVJbkZyb250ZW5kKFVMT05HIGNhbGxJZCwgQlNUUiBzY3JpcHQpOwogCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMGU5
MzFiNS4uNGMzOGI3ZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDA5LTExLTE2ICBQYXZlbCBG
ZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRp
bW90aHkgSGF0Y2hlci4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBNYWtlIERSVCBzaG93IHdl
YiBpbnNwZWN0b3IgZm9yIHRlc3RzIGluIGluc3BlY3Rvci8gZm9sZGVyLgorICAgICAgICAgIC0g
VXBkYXRlZCBEUlQgdG8gc2hvdy9jbG9zZSBpbnNwZWN0b3IgZm9yIGFsbCB0ZXN0cyB1bmRlciAv
aW5zcGVjdG9yCisgICAgICAgICAgLSBJbnRyb2R1Y2VkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQgYW5kCisgICAgICAgICAgICBXZWJJbnNwZWN0b3I6
OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCBiZXNpZGUgc2V0SmF2YVNjcmlwdFByb2ZpbGlu
Z0VuYWJsZWQKKyAgICAgICAgICAtIFJlbW92ZWQgcmVsb2FkIG9uIGVhY2ggaW5zcGVjdG9yIHRl
c3QKKyAgICAgICAgICAtIFJlaW1wbGVtZW50ZWQgdGltZWxpbmUgdGVzdHMgaW4gb3JkZXIgdG8g
Z2V0IHJpZCBvZiByZWxvYWQgdGhlcmUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMxNDcyCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJs
ZWRDYWxsYmFjayk6CisgICAgICAgIChjbG9zZVdlYkluc3BlY3RvckNhbGxiYWNrKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKHNob3VsZE9wZW5XZWJJbnNw
ZWN0b3IpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHNob3VsZE9wZW5XZWJJbnNwZWN0
b3IpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKToKKwogMjAw
OS0xMS0xNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGRhZjg4OGYuLjRjMjhjYTcgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
QEAgLTg1MCw2ICs4NTAsMTYgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0VGFiS2V5Q3ljbGVzVGhy
b3VnaEVsZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEoKICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNl
dFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBj
b250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdl
dFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldFRpbWVsaW5lUHJvZmls
aW5nRW5hYmxlZChKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSkpOworICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFs
dWVSZWYgc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGVDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyBpbXBsZW1lbnRhdGlvbgpAQCAt
OTc5LDYgKzk4OSw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNob3dXZWJJbnNwZWN0b3JDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuCiBzdGF0aWMgSlNWYWx1ZVJl
ZiBjbG9zZVdlYkluc3BlY3RvckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
IHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExh
eW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAg
ICBjb250cm9sbGVyLT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoZmFsc2UpOwogICAgIGNv
bnRyb2xsZXItPmNsb3NlV2ViSW5zcGVjdG9yKCk7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogfQpAQCAtMTI2NCw2ICsxMjc1LDcgQEAgSlNTdGF0aWNGdW5jdGlv
biogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNl
dFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCIsIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHMi
LCBzZXRTdG9wUHJvdmlzaW9uYWxGcmFtZUxvYWRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzIiwgc2V0VGFiS2V5Q3ljbGVzVGhyb3Vn
aEVsZW1lbnRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0VGltZWxpbmVQcm9maWxp
bmdFbmFibGVkIiwgc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUiLCBzZXRVc2VEYXNo
Ym9hcmRDb21wYXRpYmlsaXR5TW9kZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFVz
ZXJTdHlsZVNoZWV0RW5hYmxlZCIsIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZENhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24iLCBzZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDc5ZmZiOTkuLjA2NDFlOTkg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaApAQCAtMjE0LDYgKzIxNCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2hvd1dlYkluc3Bl
Y3RvcigpOwogICAgIHZvaWQgY2xvc2VXZWJJbnNwZWN0b3IoKTsKKyAgICB2b2lkIHNldFRpbWVs
aW5lUHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZWQpOwogICAgIHZvaWQgZXZhbHVhdGVJbldl
Ykluc3BlY3Rvcihsb25nIGNhbGxJZCwgSlNTdHJpbmdSZWYgc2NyaXB0KTsKICAgICB2b2lkIGV2
YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKHVuc2lnbmVkIHdvcmxkSWQsIEpTT2JqZWN0UmVm
IGdsb2JhbE9iamVjdCwgSlNTdHJpbmdSZWYgc2NyaXB0KTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggNTQwOGJhMS4uMjkz
MTNlMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5k
ZXJUcmVlLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRl
clRyZWUuY3BwCkBAIC0xMTQsNiArMTE0LDExIEBAIHN0YXRpYyBib29sIHNob3VsZExvZ0ZyYW1l
TG9hZERlbGVnYXRlcyhjb25zdCBjaGFyKiBwYXRoT3JVUkwpCiAgICAgcmV0dXJuIHN0cnN0cihw
YXRoT3JVUkwsICJsb2FkaW5nLyIpOwogfQogCitzdGF0aWMgYm9vbCBzaG91bGRPcGVuV2ViSW5z
cGVjdG9yKGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKK3sKKyAgICByZXR1cm4gc3Ryc3RyKHBhdGhP
clVSTCwgImluc3BlY3Rvci8iKTsKK30KKwogdm9pZCBkdW1wRnJhbWVTY3JvbGxQb3NpdGlvbihX
ZWJLaXRXZWJGcmFtZSogZnJhbWUpCiB7CiAKQEAgLTQ1Niw2ICs0NjEsOSBAQCBzdGF0aWMgdm9p
ZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgdGVzdFBhdGhPclVSTCkKICAgICBpZiAoc2hvdWxkTG9n
RnJhbWVMb2FkRGVsZWdhdGVzKHBhdGhPclVSTC5jX3N0cigpKSkKICAgICAgICAgZ0xheW91dFRl
c3RDb250cm9sbGVyLT5zZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKHRydWUpOwogCisgICAgaWYg
KHNob3VsZE9wZW5XZWJJbnNwZWN0b3IocGF0aE9yVVJMLmNfc3RyKCkpKQorICAgICAgICBnTGF5
b3V0VGVzdENvbnRyb2xsZXItPnNob3dXZWJJbnNwZWN0b3IoKTsKKwogICAgIFdvcmtRdWV1ZTo6
c2hhcmVkKCktPmNsZWFyKCk7CiAgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+c2V0RnJvemVuKGZh
bHNlKTsKIApAQCAtNDk3LDYgKzUwNSw5IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3Ry
aW5nJiB0ZXN0UGF0aE9yVVJMKQogICAgICAgICB3ZWJWaWV3TGlzdCA9IDA7CiAgICAgfQogCisg
ICAgaWYgKHNob3VsZE9wZW5XZWJJbnNwZWN0b3IocGF0aE9yVVJMLmNfc3RyKCkpKQorICAgICAg
ICBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmNsb3NlV2ViSW5zcGVjdG9yKCk7CisKICAgICAvLyBB
IGJsYW5rIGxvYWQgc2VlbXMgdG8gYmUgbmVjZXNzYXJ5IHRvIHJlc2V0IHN0YXRlIGFmdGVyIGNl
cnRhaW4gdGVzdHMuCiAgICAgd2Via2l0X3dlYl92aWV3X29wZW4od2ViVmlldywgImFib3V0OmJs
YW5rIik7CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
TGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDE3M2U1MjYuLjk2NGQ3YmEgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxl
ckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcApAQCAtMjI5LDYgKzIyOSwxNSBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoYm9vbCBjeWNsZXMpCiAgICAg
Z19vYmplY3Rfc2V0KEdfT0JKRUNUKHNldHRpbmdzKSwgInRhYi1rZXktY3ljbGVzLXRocm91Z2gt
ZWxlbWVudHMiLCBjeWNsZXMsIE5VTEwpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoYm9vbCBmbGFnKQoreworICAgIFdlYktpdFdl
YlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwor
ICAgIEFTU0VSVCh2aWV3KTsKKworICAgIFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0g
d2Via2l0X3dlYl92aWV3X2dldF9pbnNwZWN0b3Iodmlldyk7CisgICAgZ19vYmplY3Rfc2V0KEdf
T0JKRUNUKGluc3BlY3RvciksICJ0aW1lbGluZS1wcm9maWxpbmctZW5hYmxlZCIsIGZsYWcsIE5V
TEwpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VEYXNoYm9hcmRDb21w
YXRpYmlsaXR5TW9kZShib29sIGZsYWcpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4
IGMwYTBiNzQuLjVmNGJjN2MgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTExMDIsNiArMTEwMiwxMSBAQCBzdGF0aWMgYm9vbCBz
aG91bGRMb2dIaXN0b3J5RGVsZWdhdGVzKGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKICAgICByZXR1
cm4gc3Ryc3RyKHBhdGhPclVSTCwgImdsb2JhbGhpc3RvcnkvIik7CiB9CiAKK3N0YXRpYyBib29s
IHNob3VsZE9wZW5XZWJJbnNwZWN0b3IoY29uc3QgY2hhciogcGF0aE9yVVJMKQoreworICAgIHJl
dHVybiBzdHJzdHIocGF0aE9yVVJMLCAiaW5zcGVjdG9yLyIpOworfQorCiBzdGF0aWMgdm9pZCBy
ZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKQogewogICAgIFdlYlZp
ZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwpAQCAtMTE3OCw3ICsxMTgzLDEwIEBA
IHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiB0ZXN0UGF0aE9yVVJMKQogICAgICAg
ICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRIaXN0b3J5RGVsZWdhdGU6aGlzdG9yeURlbGVnYXRl
XTsKICAgICBlbHNlCiAgICAgICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEhpc3RvcnlEZWxl
Z2F0ZTpuaWxdOwotICAgIAorCisgICAgaWYgKHNob3VsZE9wZW5XZWJJbnNwZWN0b3IocGF0aE9y
VVJMLmNfc3RyKCkpKQorICAgICAgICBnTGF5b3V0VGVzdENvbnRyb2xsZXItPnNob3dXZWJJbnNw
ZWN0b3IoKTsKKwogICAgIGlmIChbV2ViSGlzdG9yeSBvcHRpb25hbFNoYXJlZEhpc3RvcnldKQog
ICAgICAgICBbV2ViSGlzdG9yeSBzZXRPcHRpb25hbFNoYXJlZEhpc3Rvcnk6bmlsXTsKICAgICBs
YXN0TW91c2VQb3NpdGlvbiA9IE5TWmVyb1BvaW50OwpAQCAtMTIyOCw5ICsxMjM2LDEyIEBAIHN0
YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiB0ZXN0UGF0aE9yVVJMKQogCiAgICAgcmVz
ZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCk7CiAKKyAgICBpZiAoc2hv
dWxkT3BlbldlYkluc3BlY3RvcihwYXRoT3JVUkwuY19zdHIoKSkpCisgICAgICAgIGdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+Y2xvc2VXZWJJbnNwZWN0b3IoKTsKKwogICAgIFttYWluRnJhbWUgbG9h
ZEhUTUxTdHJpbmc6QCI8aHRtbD48L2h0bWw+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiYWJvdXQ6YmxhbmsiXV07CiAgICAgW21haW5GcmFtZSBzdG9wTG9hZGluZ107Ci0gICAgCisK
ICAgICBbcG9vbCByZWxlYXNlXTsKIAogICAgIC8vIFdlIHNob3VsZCBvbmx5IGhhdmUgb3VyIG1h
aW4gd2luZG93IGxlZnQgb3BlbiB3aGVuIHdlJ3JlIGRvbmUKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRl
eCAzMzQ1Mzg4Li5iNDM1ZjU0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0zMTEsNiArMzExLDEx
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVt
ZW50cyhib29sIGN5Y2xlcykKICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRUYWJLZXlDeWNs
ZXNUaHJvdWdoRWxlbWVudHM6Y3ljbGVzXTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBbW1tt
YWluRnJhbWUgd2ViVmlld10gaW5zcGVjdG9yXSBzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQ6
ZW5hYmxlZF07Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZURhc2hib2Fy
ZENvbXBhdGliaWxpdHlNb2RlKGJvb2wgZmxhZykKIHsKICAgICBbW21haW5GcmFtZSB3ZWJWaWV3
XSBfc2V0RGFzaGJvYXJkQmVoYXZpb3I6V2ViRGFzaGJvYXJkQmVoYXZpb3JVc2VCYWNrd2FyZENv
bXBhdGliaWxpdHlNb2RlIHRvOmZsYWddOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggZDQ4NmQwNi4uZGNiNzIwYSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBA
IC04NTksNiArODU5LDkgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RQ
YXRoT3JVUkwpCiAKICAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rp
bmcoKTsKIAorICAgIGlmIChzaG91bGRPcGVuV2ViSW5zcGVjdG9yKHBhdGhPclVSTC5jX3N0cigp
KSkKKyAgICAgICAgZ0xheW91dFRlc3RDb250cm9sbGVyLT5zaG93V2ViSW5zcGVjdG9yKCk7CisK
ICAgICBwcmV2VGVzdEJGSXRlbSA9IDA7CiAgICAgaWYgKHdlYlZpZXcpIHsKICAgICAgICAgQ09N
UHRyPElXZWJCYWNrRm9yd2FyZExpc3Q+IGJmTGlzdDsKQEAgLTg5NSw2ICs4OTgsOSBAQCBzdGF0
aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgdGVzdFBhdGhPclVSTCkKIAogICAgIHJlc2V0
V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpOwogCisgICAgaWYgKHNob3Vs
ZE9wZW5XZWJJbnNwZWN0b3IocGF0aE9yVVJMLmNfc3RyKCkpKQorICAgICAgICBnTGF5b3V0VGVz
dENvbnRyb2xsZXItPmNsb3NlV2ViSW5zcGVjdG9yKCk7CisKICAgICBmcmFtZS0+c3RvcExvYWRp
bmcoKTsKIAogICAgIGlmICg6OmdMYXlvdXRUZXN0Q29udHJvbGxlci0+Y2xvc2VSZW1haW5pbmdX
aW5kb3dzV2hlbkNvbXBsZXRlKCkpIHsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IDAzMjBiNDIu
LjE4MDBmZDMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMzk4LDYgKzM5OCwyMyBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoYm9v
bCBzaG91bGRDeWNsZSkKICAgICB2aWV3UHJpdmF0ZS0+c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVs
ZW1lbnRzKHNob3VsZEN5Y2xlID8gVFJVRSA6IEZBTFNFKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGJvb2wgZmxhZykKK3sKKyAg
ICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CisgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmll
dygmd2ViVmlldykpKQorICAgICAgICByZXR1cm47CisKKyAgICBDT01QdHI8SVdlYlZpZXdQcml2
YXRlPiB2aWV3UHJpdmF0ZTsKKyAgICBpZiAoRkFJTEVEKHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNl
KCZ2aWV3UHJpdmF0ZSkpKQorICAgICAgICByZXR1cm47CisKKyAgICBDT01QdHI8SVdlYkluc3Bl
Y3Rvcj4gaW5zcGVjdG9yOworICAgIGlmIChGQUlMRUQodmlld1ByaXZhdGUtPmluc3BlY3Rvcigm
aW5zcGVjdG9yKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGluc3BlY3Rvci0+c2V0SmF2YVNj
cmlwdFByb2ZpbGluZ0VuYWJsZWQoZmxhZyk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKGJvb2wgZmxhZykKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43313</attachid>
            <date>2009-11-16 10:31:19 -0800</date>
            <delta_ts>2009-11-16 12:35:05 -0800</delta_ts>
            <desc>[PATCH] Same with Win stuff fixed. </desc>
            <filename>drt</filename>
            <type>text/plain</type>
            <size>50271</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NWZjYTNhLi42ZTMxMTlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMDktMTEt
MTYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ha2Ug
RFJUIHNob3cgd2ViIGluc3BlY3RvciBmb3IgdGVzdHMgaW4gaW5zcGVjdG9yLyBmb2xkZXIuCisg
ICAgICAgICAgLSBVcGRhdGVkIERSVCB0byBzaG93L2Nsb3NlIGluc3BlY3RvciBmb3IgYWxsIHRl
c3RzIHVuZGVyIC9pbnNwZWN0b3IKKyAgICAgICAgICAtIEludHJvZHVjZWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCBhbmQKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIGJlc2lkZSBzZXRKYXZhU2Ny
aXB0UHJvZmlsaW5nRW5hYmxlZAorICAgICAgICAgIC0gUmVtb3ZlZCByZWxvYWQgb24gZWFjaCBp
bnNwZWN0b3IgdGVzdAorICAgICAgICAgIC0gUmVpbXBsZW1lbnRlZCB0aW1lbGluZSB0ZXN0cyBp
biBvcmRlciB0byBnZXQgcmlkIG9mIHJlbG9hZCB0aGVyZS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NzIKKworICAgICAgICAqIGluc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qczoKKyAgICAgICAgKG9ubG9hZCk6CisgICAgICAgIChldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKG5vdGlmeURvbmUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9yZXNvdXJjZXMvdGltZWxpbmUtaWZyYW1lLWRhdGEuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL3RpbWVsaW5lLWxheW91dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3RpbWVsaW5lLWxheW91dC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGlu
ZS1tYXJrLXRpbWVsaW5lLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXBhaW50
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS1wYXJzZS1odG1sLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXJlY2FsY3VsYXRlLXN0eWxlcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXJlY2FsY3VsYXRlLXN0eWxlcy5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTEtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTEuaHRtbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0yLmh0bWw6CisgICAgICAgICogaW5zcGVj
dG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxp
bmUtdGVzdC5qczoKKyAgICAgICAgKHByaW50VGltZWxpbmVSZWNvcmRzKToKKyAgICAgICAgKCk6
CisgICAgICAgIChkdW1wVGltZWxpbmVSZWNvcmRzKToKKyAgICAgICAgKHByaW50UHJvcHMpOgor
ICAgICAgICAoZnJvbnRlbmRfZ2V0VGltZWxpbmVSZXN1bHRzKToKKwogMjAwOS0xMS0xNSAgQ2hy
aXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGluZyBicm9r
ZW4gbGF5b3V0IHRlc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKaW5k
ZXggZjg3YmJjMC4uODJkZjA4MCAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dC5qcwpAQCAtNiw1MiArNiwyNCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogCi0vLyBXZSBp
Z25vcmUgaW5pdGlhbCBsb2FkIG9mIHRoZSBwYWdlLCBlbmFibGUgaW5zcGVjdG9yIGFuZCBpbml0
aWF0ZSByZWxvYWQuIFRoaXMgYWxsb3dzIGluc3BlY3RvciBjb250cm9sbGVyCi0vLyB0byBjYXB0
dXJlIGV2ZW50cyB0aGF0IGhhcHBlbiBkdXJpbmcgdGhlIGluaXRpYWwgcGFnZSBsb2FkLgotdmFy
IGlnbm9yZUxvYWQgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCI/cmVsb2FkIikgPT09
IC0xOwotaWYgKGlnbm9yZUxvYWQpIHsKLSAgICAvLyBTdGFydCBpbiBhIHRpbWVyLCBhcyBzeW5j
aHJvbm91cyBvcGVuaW5nIG9mIHdlYiBpbnNwZWN0b3IgbWF5IGZhaWwgb24gV2luZG93cwotICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVj
dG9yKCk7Ci0gICAgfSwgMCk7Ci19Ci0KIGZ1bmN0aW9uIG9ubG9hZCgpCiB7Ci0gICAgaWYgKGln
bm9yZUxvYWQpIHsKLSAgICAgICAgLy8gSW5qZWN0IHNjcmlwdHMgaW50byB0aGUgZnJvbnRlbmQg
b24gdGhlIGZpcnN0IHBhc3MuICBTb21lIG90aGVyIGxvZ2ljIG1heSB3YW50IHRvCi0gICAgICAg
IC8vIHVzZSB0aGVtIGJlZm9yZSB0aGUgcmVsb2FkLgotICAgICAgICB2YXIgdG9JbmplY3QgPSBb
XTsKLSAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB3aW5kb3cpIHsKLSAgICAgICAgICAgIGlmIChu
YW1lLmluZGV4T2YoImZyb250ZW5kXyIpID09PSAwICYmIHR5cGVvZiB3aW5kb3dbbmFtZV0gPT09
ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICAgICAgdG9JbmplY3QucHVzaCh3aW5kb3dbbmFtZV0u
dG9TdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSW52b2tlIGEgc2V0dXAgbWV0aG9k
IGlmIGl0IGhhcyBiZWVuIHNwZWNpZmllZAotICAgICAgICBpZiAod2luZG93WyJmcm9udGVuZF9z
ZXR1cCJdKSAKLSAgICAgICAgICAgIHRvSW5qZWN0LnB1c2goImZyb250ZW5kX3NldHVwKCk7Iik7
Ci0KLSAgICAgICAgZXZhbHVhdGVJbldlYkluc3BlY3Rvcih0b0luamVjdC5qb2luKCJcbiIpLCBm
dW5jdGlvbihhcmcpIHsKLSAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmICs9ICI/cmVs
b2FkIjsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICB2YXIgb3V0
cHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIG91dHB1dEVs
ZW1lbnQuaWQgPSAib3V0cHV0IjsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG91dHB1
dEVsZW1lbnQpOwogCi0gICAgLy8gTWFrZSBzdXJlIHdlYiBpbnNwZWN0b3IgaGFzIHNldHRsZWQg
ZG93biBiZWZvcmUgZXhlY3V0aW5nIHVzZXIgY29kZQotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0
b3IoInRydWUiLCBkb2l0KTsKKyAgICAvLyBJbmplY3Qgc2NyaXB0cyBpbnRvIHRoZSBmcm9udGVu
ZCBvbiB0aGUgZmlyc3QgcGFzcy4gIFNvbWUgb3RoZXIgbG9naWMgbWF5IHdhbnQgdG8KKyAgICAv
LyB1c2UgdGhlbSBiZWZvcmUgdGhlIHJlbG9hZC4KKyAgICB2YXIgdG9JbmplY3QgPSBbXTsKKyAg
ICBmb3IgKHZhciBuYW1lIGluIHdpbmRvdykgeworICAgICAgICBpZiAobmFtZS5pbmRleE9mKCJm
cm9udGVuZF8iKSA9PT0gMCAmJiB0eXBlb2Ygd2luZG93W25hbWVdID09PSAiZnVuY3Rpb24iKQor
ICAgICAgICAgICAgdG9JbmplY3QucHVzaCh3aW5kb3dbbmFtZV0udG9TdHJpbmcoKSk7CisgICAg
fQorICAgIC8vIEludm9rZSBhIHNldHVwIG1ldGhvZCBpZiBpdCBoYXMgYmVlbiBzcGVjaWZpZWQK
KyAgICBpZiAod2luZG93WyJmcm9udGVuZF9zZXR1cCJdKSAKKyAgICAgICAgdG9JbmplY3QucHVz
aCgiZnJvbnRlbmRfc2V0dXAoKTsiKTsKIAotICAgIC8vIE1ha2Ugc3VyZSB3ZWIgaW5zcGVjdG9y
IHdpbmRvdyBpcyBjbG9zZWQgYmVmb3JlIHRoZSB0ZXN0IGlzIGludGVycnVwdGVkLgotICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFsZXJ0KCJJbnRlcm5hbCB0aW1lb3V0IGV4
Y2VlZGVkLiIpCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7Ci0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLSAg
ICB9LCAxMDAwMCk7CisgICAgZXZhbHVhdGVJbldlYkluc3BlY3Rvcih0b0luamVjdC5qb2luKCJc
biIpLCBkb2l0KTsKIH0KIAogZnVuY3Rpb24gZXZhbHVhdGVJbldlYkluc3BlY3RvcihzY3JpcHQs
IGNhbGxiYWNrKQpAQCAtNjEsMTYgKzMzLDE2IEBAIGZ1bmN0aW9uIGV2YWx1YXRlSW5XZWJJbnNw
ZWN0b3Ioc2NyaXB0LCBjYWxsYmFjaykKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3RvcihjYWxsSWQsIHNjcmlwdCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgfSwgMCk7CiB9CiAKIGZ1
bmN0aW9uIG5vdGlmeURvbmUoKQogewogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Ci0gICAgICAgIH0KICAgICB9LCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy90aW1lbGluZS1pZnJhbWUtZGF0YS5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy90aW1lbGluZS1pZnJhbWUtZGF0YS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZjE2YTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3RpbWVsaW5lLWlmcmFtZS1k
YXRhLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Citjb25z
b2xlLm1hcmtUaW1lbGluZSgiU0NSSVBUIFRBRyIpOworCitmdW5jdGlvbiBpZnJhbWVPbmxvYWQo
KQoreworICAgIHdpbmRvdy5wYXJlbnQuaWZyYW1lTG9hZGVkID0gdHJ1ZTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9ImlmcmFtZU9ubG9hZCgpIj4KKyAgICA8ZGl2PkZv
bzwvZGl2PgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUtbGF5b3V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci90aW1lbGluZS1sYXlvdXQtZXhwZWN0ZWQudHh0CmluZGV4IGFkNjUxMzMuLjUxYzEwZDcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1sYXlvdXQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1sYXlvdXQtZXhwZWN0ZWQu
dHh0CkBAIC01LDQgKzUsNCBAQCBMYXlvdXQgUHJvcGVydGllczoKICsgY2hpbGRyZW4gOiAqIERF
RklORUQgKgogKyBlbmRUaW1lIDogKiBERUZJTkVEICoKICsgdHlwZSA6IDEKLQorVGVzdCBkYXRh
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbGF5b3V0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbGF5b3V0Lmh0bWwKaW5kZXggOTQ1OGJk
Zi4uODIyZjJkOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLWxh
eW91dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1sYXlvdXQuaHRt
bApAQCAtNCwyNSArNCwxNiBAQAogPHNjcmlwdCBzcmM9InRpbWVsaW5lLXRlc3QuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdD4KIAotZnVuY3Rpb24gYW5hbHl6ZVRpbWVsaW5lRGF0YSh0aW1lbGluZVJl
Y29yZHMpIAorZnVuY3Rpb24gcGVyZm9ybUFjdGlvbnMoKQogewotICAgIC8vIFVuY29tbWVudCB0
byBkZWJ1Z2dpbmcgdGhlIGxpc3Qgb2YgZGF0YSByZXR1cm5lZC4KLSAgICAvLyBkdW1wVGltZWxp
bmVSZWNvcmRzKHRpbWVsaW5lUmVjb3Jkcyk7Ci0KLSAgICAvLyBTZWFyY2ggZm9yIHRoZSBmaXJz
dCBMYXlvdXQgcmVjb3JkIHlvdSBjYW4gZmluZAotICAgIHZhciBudW1SZWNvcmRzID0gdGltZWxp
bmVSZWNvcmRzLmxlbmd0aDsKLSAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBudW1SZWNvcmRzOyAr
K2kpIHsKLSAgICAgICAgdmFyIHJlY29yZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsKLSAgICAgICAg
aWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5MYXlvdXQpIHsKLSAg
ICAgICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRQcm9wZXJ0aWVzKHJlY29yZCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gIlRlc3QgZGF0
YSI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKIH0KIAogZnVuY3Rp
b24gZG9pdCgpIAogewotICAgIHJldHJpZXZlVGltZWxpbmVEYXRhKGFuYWx5emVUaW1lbGluZURh
dGEpOworICAgIHByaW50VGltZWxpbmVSZWNvcmRzKHBlcmZvcm1BY3Rpb25zLCAiTGF5b3V0Iik7
CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVs
aW5lLW1hcmstdGltZWxpbmUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1t
YXJrLXRpbWVsaW5lLmh0bWwKaW5kZXggNTNiMDk4Yi4uZGE4YzQxMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLW1hcmstdGltZWxpbmUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbWFyay10aW1lbGluZS5odG1sCkBAIC00LDQyICs0
LDE0IEBACiA8c2NyaXB0IHNyYz0idGltZWxpbmUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
PgogCi12YXIgdGltZWxpbmVNYXJrID0gIk1BUksgVElNRUxJTkUiOwotCi1mdW5jdGlvbiBmaW5k
TWFya1RpbWVsaW5lKHJlY29yZCkgCitmdW5jdGlvbiBwZXJmb3JtQWN0aW9ucygpCiB7Ci0gICAg
aWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5NYXJrVGltZWxpbmUg
JiYgcmVjb3JkLmRhdGEubWVzc2FnZSA9PT0gdGltZWxpbmVNYXJrKSB7Ci0gICAgICAgIHByaW50
VGltZWxpbmVSZWNvcmRQcm9wZXJ0aWVzKHJlY29yZCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLQotICAgIHZhciBudW1DaGlsZHJlbiA9IHJlY29yZC5jaGlsZHJlbiA/IHJlY29yZC5j
aGlsZHJlbi5sZW5ndGggOiAwOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47
ICsraSkgewotICAgICAgICBpZiAoZmluZE1hcmtUaW1lbGluZShyZWNvcmQuY2hpbGRyZW5baV0p
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotZnVuY3Rpb24gYW5hbHl6ZVRpbWVsaW5lRGF0YSh0aW1lbGluZVJlY29yZHMpIAotewotICAg
IC8vIFVuY29tbWVudCB0byBkZWJ1Z2dpbmcgdGhlIGxpc3Qgb2YgZGF0YSByZXR1cm5lZC4KLSAg
ICAvLyBkdW1wVGltZWxpbmVSZWNvcmRzKHRpbWVsaW5lUmVjb3Jkcyk7Ci0KLSAgICB2YXIgZm91
bmQgPSBmYWxzZTsKLSAgICB2YXIgbnVtUmVjb3JkcyA9IHRpbWVsaW5lUmVjb3Jkcy5sZW5ndGg7
Ci0gICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgbnVtUmVjb3JkczsgKytpKSB7Ci0gICAgICAgIHZh
ciByZWNvcmQgPSB0aW1lbGluZVJlY29yZHNbaV07Ci0gICAgICAgIGlmIChmb3VuZCA9IGZpbmRN
YXJrVGltZWxpbmUocmVjb3JkKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAo
IWZvdW5kKQotICAgICAgICBvdXRwdXQoIkNvdWxkbid0IGZpbmQgdGltZWxpbmUgbWFyazogIiAr
IHRpbWVsaW5lTWFyayk7CisgICAgY29uc29sZS5tYXJrVGltZWxpbmUoIk1BUksgVElNRUxJTkUi
KTsKIH0KIAogZnVuY3Rpb24gZG9pdCgpIAogewotICAgIHJldHJpZXZlVGltZWxpbmVEYXRhKGFu
YWx5emVUaW1lbGluZURhdGEpOworICAgIHByaW50VGltZWxpbmVSZWNvcmRzKHBlcmZvcm1BY3Rp
b25zLCAiTWFya1RpbWVsaW5lIik7CiB9CiAKIDwvc2NyaXB0PgpAQCAtNTAsOSArMjIsNSBAQCBm
dW5jdGlvbiBkb2l0KCkKIFRlc3RzIHRoZSBUaW1lbGluZSBBUEkgbWFyayBmZWF0dXJlCiA8L3A+
CiAKLTxzY3JpcHQ+Ci0gICAgY29uc29sZS5tYXJrVGltZWxpbmUodGltZWxpbmVNYXJrKTsKLTwv
c2NyaXB0PgotCiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUtcGFpbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGlu
ZS1wYWludC5odG1sCmluZGV4IGFjODQ5NDEuLjIxZDg5MmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci90aW1lbGluZS1wYWludC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci90aW1lbGluZS1wYWludC5odG1sCkBAIC00LDI1ICs0LDE1IEBACiA8c2NyaXB0IHNyYz0i
dGltZWxpbmUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBhbmFseXpl
VGltZWxpbmVEYXRhKHRpbWVsaW5lUmVjb3JkcykgCitmdW5jdGlvbiBwZXJmb3JtQWN0aW9ucygp
CiB7Ci0gICAgLy8gVW5jb21tZW50IHRvIGRlYnVnZ2luZyB0aGUgbGlzdCBvZiBkYXRhIHJldHVy
bmVkLgotICAgIC8vIGR1bXBUaW1lbGluZVJlY29yZHModGltZWxpbmVSZWNvcmRzKTsKLQotICAg
IC8vIFNlYXJjaCBmb3IgdGhlIGZpcnN0IFBhaW50IHJlY29yZCB5b3UgY2FuIGZpbmQKLSAgICB2
YXIgbnVtUmVjb3JkcyA9IHRpbWVsaW5lUmVjb3Jkcy5sZW5ndGg7Ci0gICAgZm9yICh2YXIgaSA9
IDAgOyBpIDwgbnVtUmVjb3JkczsgKytpKSB7Ci0gICAgICAgIHZhciByZWNvcmQgPSB0aW1lbGlu
ZVJlY29yZHNbaV07Ci0gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJl
Y29yZFR5cGUuUGFpbnQpIHsKLSAgICAgICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRQcm9wZXJ0
aWVzKHJlY29yZCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kaXNwbGF5KCk7CiB9CiAKIGZ1bmN0aW9uIGRvaXQoKSAKIHsKLSAgICByZXRyaWV2ZVRp
bWVsaW5lRGF0YShhbmFseXplVGltZWxpbmVEYXRhKTsKKyAgICBwcmludFRpbWVsaW5lUmVjb3Jk
cyhwZXJmb3JtQWN0aW9ucywgIlBhaW50Iik7CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDk4YzMzN2IuLmQ0MmE4ZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1wYXJzZS1odG1sLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvdGltZWxpbmUtcGFyc2UtaHRtbC1leHBlY3RlZC50eHQKQEAgLTUsNCArNSw0IEBAIFBhcnNl
SFRNTCBQcm9wZXJ0aWVzOgogKyBjaGlsZHJlbiA6ICogREVGSU5FRCAqCiArIGVuZFRpbWUgOiAq
IERFRklORUQgKgogKyB0eXBlIDogNAotCitUZXN0IGRhdGEKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci90aW1lbGluZS1wYXJzZS1odG1sLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUtcGFyc2UtaHRtbC5odG1sCmluZGV4IDcxNWViNmMuLjExZDhmNWEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1wYXJzZS1odG1sLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwuaHRtbApAQCAt
NCwyNSArNCwxNiBAQAogPHNjcmlwdCBzcmM9InRpbWVsaW5lLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KIAotZnVuY3Rpb24gYW5hbHl6ZVRpbWVsaW5lRGF0YSh0aW1lbGluZVJlY29yZHMp
IAorZnVuY3Rpb24gcGVyZm9ybUFjdGlvbnMoKQogewotICAgIC8vIFVuY29tbWVudCB0byBkZWJ1
Z2dpbmcgdGhlIGxpc3Qgb2YgZGF0YSByZXR1cm5lZC4KLSAgICAvLyBkdW1wVGltZWxpbmVSZWNv
cmRzKHRpbWVsaW5lUmVjb3Jkcyk7Ci0KLSAgICAvLyBTZWFyY2ggZm9yIHRoZSBmaXJzdCBQYXJz
ZUhUTUwgcmVjb3JkIHlvdSBjYW4gZmluZAotICAgIHZhciBudW1SZWNvcmRzID0gdGltZWxpbmVS
ZWNvcmRzLmxlbmd0aDsKLSAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBudW1SZWNvcmRzOyArK2kp
IHsKLSAgICAgICAgdmFyIHJlY29yZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsKLSAgICAgICAgaWYg
KHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5QYXJzZUhUTUwpIHsKLSAg
ICAgICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRQcm9wZXJ0aWVzKHJlY29yZCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gIlRlc3QgZGF0
YSI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKIH0KIAogZnVuY3Rp
b24gZG9pdCgpIAogewotICAgIHJldHJpZXZlVGltZWxpbmVEYXRhKGFuYWx5emVUaW1lbGluZURh
dGEpOworICAgIHByaW50VGltZWxpbmVSZWNvcmRzKHBlcmZvcm1BY3Rpb25zLCAiUGFyc2VIVE1M
Iik7CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lLXJlY2FsY3VsYXRlLXN0eWxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUtcmVjYWxjdWxhdGUtc3R5bGVzLWV4cGVjdGVkLnR4dAppbmRleCBiMzhk
Y2VkLi5lNTMyYTE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUt
cmVjYWxjdWxhdGUtc3R5bGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvdGltZWxpbmUtcmVjYWxjdWxhdGUtc3R5bGVzLWV4cGVjdGVkLnR4dApAQCAtNSw0ICs1LDQg
QEAgUmVjYWxjdWxhdGVTdHlsZXMgUHJvcGVydGllczoKICsgY2hpbGRyZW4gOiAqIERFRklORUQg
KgogKyBlbmRUaW1lIDogKiBERUZJTkVEICoKICsgdHlwZSA6IDIKLQorVGVzdCBkYXRhCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtcmVjYWxjdWxhdGUtc3R5bGVz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtcmVjYWxjdWxhdGUtc3R5bGVz
Lmh0bWwKaW5kZXggMTJmYTFlZi4uYzRlNGQzNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lLXJlY2FsY3VsYXRlLXN0eWxlcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci90aW1lbGluZS1yZWNhbGN1bGF0ZS1zdHlsZXMuaHRtbApAQCAtMiwyNyArMiwy
NiBAQAogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9InRpbWVsaW5lLXRlc3QuanMiPjwvc2NyaXB0PgorCis8c3R5bGU+CisudGVz
dC1zdHlsZSB7CisgICAgY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+CisKIDxzY3JpcHQ+CiAKLWZ1
bmN0aW9uIGFuYWx5emVUaW1lbGluZURhdGEodGltZWxpbmVSZWNvcmRzKSAKK2Z1bmN0aW9uIHBl
cmZvcm1BY3Rpb25zKCkKIHsKLSAgICAvLyBVbmNvbW1lbnQgdG8gZGVidWdnaW5nIHRoZSBsaXN0
IG9mIGRhdGEgcmV0dXJuZWQuCi0gICAgLy8gZHVtcFRpbWVsaW5lUmVjb3Jkcyh0aW1lbGluZVJl
Y29yZHMpOwotCi0gICAgLy8gU2VhcmNoIGZvciB0aGUgZmlyc3QgUmVjYWxjdWxhdGVTdHlsZXMg
cmVjb3JkIHlvdSBjYW4gZmluZAotICAgIHZhciBudW1SZWNvcmRzID0gdGltZWxpbmVSZWNvcmRz
Lmxlbmd0aDsKLSAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBudW1SZWNvcmRzOyArK2kpIHsKLSAg
ICAgICAgdmFyIHJlY29yZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsKLSAgICAgICAgaWYgKHJlY29y
ZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5SZWNhbGN1bGF0ZVN0eWxlcykgewot
ICAgICAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZFByb3BlcnRpZXMocmVjb3JkKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQorICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVudC5jbGFzc05hbWUgPSAidGVzdC1z
dHlsZSI7CisgICAgZWxlbWVudC5pbm5lckhUTUwgPSAiVGVzdCBkYXRhIjsKKyAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOwogfQogCiBmdW5jdGlvbiBkb2l0KCkgCiB7Ci0g
ICAgcmV0cmlldmVUaW1lbGluZURhdGEoYW5hbHl6ZVRpbWVsaW5lRGF0YSk7CisgICAgcHJpbnRU
aW1lbGluZVJlY29yZHMocGVyZm9ybUFjdGlvbnMsICJSZWNhbGN1bGF0ZVN0eWxlcyIpOwogfQog
CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1z
Y3JpcHQtdGFnLTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5l
LXNjcmlwdC10YWctMS1leHBlY3RlZC50eHQKaW5kZXggMzAxMTQ0MS4uYmRmYTViNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMS1l
eHBlY3RlZC50eHQKQEAgLTMsMTIgKzMsMTEgQEAgVGVzdHMgdGhlIFRpbWVsaW5lIEFQSSBpbnN0
cnVtZW50YXRpb24gb2YgYW4gSFRNTCBzY3JpcHQgdGFnLgogUGFyc2VIVE1MCiAtLS0tPiBFdmFs
dWF0ZVNjcmlwdAogLS0tLS0tLS0+IE1hcmtUaW1lbGluZSA6IFNDUklQVCBUQUcKLQogRXZhbHVh
dGVTY3JpcHQgUHJvcGVydGllczoKICsgc3RhcnRUaW1lIDogKiBERUZJTkVEICoKICsgZGF0YSA6
IHsKICstIHVybCA6ICogREVGSU5FRCAqCi0rLSBsaW5lTnVtYmVyIDogNzYKKystIGxpbmVOdW1i
ZXIgOiAzCiArIH0KICsgY2hpbGRyZW4gOiAqIERFRklORUQgKgogKyBlbmRUaW1lIDogKiBERUZJ
TkVEICoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1zY3JpcHQt
dGFnLTEuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTEu
aHRtbAppbmRleCBmOGVmN2I3Li44ZWExYTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0xLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMS5odG1sCkBAIC0zLDY2ICszLDM2IEBACiA8c2NyaXB0
IHNyYz0iaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InRpbWVsaW5l
LXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLXZhciB0aW1lbGluZU1hcmsgPSAiU0NSSVBU
IFRBRyI7CiAKLWZ1bmN0aW9uIGFuYWx5emVFdmFsdWF0ZVNjcmlwdChyZWNvcmQpIAorZnVuY3Rp
b24gcnVuQWZ0ZXJJZnJhbWVJc0xvYWRlZChjb250aW51YXRpb24pCiB7Ci0gICAgdmFyIG51bUNo
aWxkcmVuID0gcmVjb3JkLmNoaWxkcmVuID8gcmVjb3JkLmNoaWxkcmVuLmxlbmd0aCA6IDA7Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7Ci0gICAgICAgIHZhciBj
aGlsZCA9IHJlY29yZC5jaGlsZHJlbltpXTsKLSAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IHRp
bWVsaW5lQWdlbnRSZWNvcmRUeXBlLk1hcmtUaW1lbGluZQotICAgICAgICAgICAgJiYgY2hpbGQu
ZGF0YS5tZXNzYWdlID09PSB0aW1lbGluZU1hcmsKLSAgICAgICAgICAgICYmIHJlY29yZC5kYXRh
LnVybC5pbmRleE9mKCJ0aW1lbGluZS1zY3JpcHQtdGFnLTEuaHRtbCIpICE9PSAtMSkgewotCi0g
ICAgICAgICAgICAvLyBGaW5pc2ggcHJpbnRpbmcgdGhlIHJlY29yZCBhcyBhIHRyZWUKLSAgICAg
ICAgICAgIGR1bXBUaW1lbGluZVJlY29yZChyZWNvcmQsIDEpOwotICAgICAgICAgICAgb3V0cHV0
KCIiKTsKLQotICAgICAgICAgICAgLy8gTm93IHByaW50IHRoZSBpbXBvcnRhbnQgZmllbGRzIG9m
IHRoZSByZWNvcmQKLSAgICAgICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRQcm9wZXJ0aWVzKHJl
Y29yZCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLWZ1bmN0aW9uIGFuYWx5emVQYXJzZUhUTUwocmVjb3JkKSAKLXsK
LSAgICAvLyBOb3csIGR1bXAgdGhlIHNwZWNpZmljIFNjcmlwdCB0YWcgdGhhdCBpbmNsdWRlcyB0
aGUgTWFya2VyIGFuZCBkdW1wIGl0IGluIGRldGFpbC4KLSAgICB2YXIgbnVtQ2hpbGRyZW4gPSBy
ZWNvcmQuY2hpbGRyZW4gPyByZWNvcmQuY2hpbGRyZW4ubGVuZ3RoIDogMDsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKLSAgICAgICAgdmFyIGNoaWxkID0gcmVj
b3JkLmNoaWxkcmVuW2ldOwotICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gdGltZWxpbmVBZ2Vu
dFJlY29yZFR5cGUuRXZhbHVhdGVTY3JpcHQpCi0gICAgICAgICAgICBpZiAoYW5hbHl6ZUV2YWx1
YXRlU2NyaXB0KGNoaWxkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfSAgCi0KLS8vIExvb2sgZm9yIHRoZSBQYXJzZUh0bWwtPkV2YWx1
YXRlU2NyaXB0LT5NYXJrVGltZWxpbmUgdGhhdCBjb3JyZWxhdGVzIAotLy8gdG8gdGhlIDxzY3Jp
cHQ+IHRhZyBiZWxvdy4KLWZ1bmN0aW9uIGFuYWx5emVUaW1lbGluZURhdGEodGltZWxpbmVSZWNv
cmRzKSAKLXsKLSAgICAvLyBVbmNvbW1lbnQgdG8gZGVidWdnaW5nIHRoZSBsaXN0IG9mIGRhdGEg
cmV0dXJuZWQuCi0gICAgLy8gZHVtcFRpbWVsaW5lUmVjb3Jkcyh0aW1lbGluZVJlY29yZHMpOwot
Ci0gICAgLy8gU2VhcmNoIGZvciBhIFBhcnNlSFRNTCByZWNvcmQKLSAgICB2YXIgbnVtUmVjb3Jk
cyA9IHRpbWVsaW5lUmVjb3Jkcy5sZW5ndGg7Ci0gICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgbnVt
UmVjb3JkczsgKytpKSB7Ci0gICAgICAgIHZhciByZWNvcmQgPSB0aW1lbGluZVJlY29yZHNbaV07
Ci0gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5cGUuUGFy
c2VIVE1MKSB7Ci0gICAgICAgICAgICAvLyBVbmNvbW1lbnQgdG8gZGVidWcgdGhlIFBhcnNlSFRN
TCBkYXRhIHJlY29yZAotICAgICAgICAgICAgLy8gZHVtcFRpbWVsaW5lUmVjb3JkKHJlY29yZCwg
MCk7Ci0gICAgICAgICAgICBvdXRwdXQoIlBhcnNlSFRNTCIpOwotICAgICAgICAgICAgaWYgKCFh
bmFseXplUGFyc2VIVE1MKHJlY29yZCkpCi0gICAgICAgICAgICAgICAgb3V0cHV0KCJGYWlsZWQg
dG8gZmluZCB0aW1lbGluZSBtYXJrOiAiICsgdGltZWxpbmVNYXJrKTsKLSAgICAgICAgfQorICAg
IGZ1bmN0aW9uIHN0ZXAoKQorICAgIHsKKyAgICAgICAgaWYgKCF3aW5kb3cuaWZyYW1lTG9hZGVk
KQorICAgICAgICAgICAgc2V0VGltZW91dChzdGVwLCAxMDApOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjb250aW51YXRpb24oKTsKICAgICB9CisgICAgc2V0VGltZW91dChzdGVwLCAxMDAp
OwogfQogCiBmdW5jdGlvbiBkb2l0KCkgCiB7Ci0gICAgcmV0cmlldmVUaW1lbGluZURhdGEoYW5h
bHl6ZVRpbWVsaW5lRGF0YSk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVk
KHRydWUpOworCisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFt
ZSIpOworICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL3RpbWVsaW5lLWlmcmFtZS1kYXRhLmh0
bWwiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKworICAgIHJ1bkFm
dGVySWZyYW1lSXNMb2FkZWQoZnVuY3Rpb24oKSB7CisgICAgICAgIHByaW50VGltZWxpbmVSZWNv
cmRzKG51bGwsIG51bGwsIGZ1bmN0aW9uKHJlY29yZCkgeworICAgICAgICAgICAgaWYgKHJlY29y
ZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5FdmFsdWF0ZVNjcmlwdCkKKyAgICAg
ICAgICAgICAgICBwcmludFRpbWVsaW5lUmVjb3JkUHJvcGVydGllcyhyZWNvcmQpOworICAgICAg
ICAgICAgZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlLlBh
cnNlSFRNTCkKKyAgICAgICAgICAgICAgICBkdW1wVGltZWxpbmVSZWNvcmQocmVjb3JkKTsKKyAg
ICAgICAgfSk7CisgICAgfSk7CiB9CiAKIDwvc2NyaXB0PgpAQCAtNzMsOSArNDMsNSBAQCBmdW5j
dGlvbiBkb2l0KCkKIFRlc3RzIHRoZSBUaW1lbGluZSBBUEkgaW5zdHJ1bWVudGF0aW9uIG9mIGFu
IEhUTUwgc2NyaXB0IHRhZy4KIDwvcD4KIAotPHNjcmlwdD4KLSAgICAgLy8gTWFyayB0aGlzIHNj
cmlwdCB0YWcgc28gd2UgY2FuIGZpbmQgaXQgaW4gdGhlIHRpbWVsaW5lIGRhdGEuCi0gICAgIGNv
bnNvbGUubWFya1RpbWVsaW5lKHRpbWVsaW5lTWFyayk7Ci08L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1zY3JpcHQt
dGFnLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlw
dC10YWctMi1leHBlY3RlZC50eHQKaW5kZXggMWQyMTUzNy4uYWNkN2YxNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi1leHBlY3Rl
ZC50eHQKQEAgLTEsOSArMSw1IEBACiBUZXN0cyB0aGUgVGltZWxpbmUgQVBJIGluc3RydW1lbnRh
dGlvbiBvZiBhIHNjcmlwdCB0YWcgd2l0aCBhbiBleHRlcm5hbCBzY3JpcHQuCiAKLVBhcnNlSFRN
TAotLS0tLT4gRXZhbHVhdGVTY3JpcHQKLS0tLS0tLS0tPiBNYXJrVGltZWxpbmUgOiBTQ1JJUFQg
VEFHCi0KIEV2YWx1YXRlU2NyaXB0IFByb3BlcnRpZXM6CiArIHN0YXJ0VGltZSA6ICogREVGSU5F
RCAqCiArIGRhdGEgOiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxp
bmUtc2NyaXB0LXRhZy0yLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2Ny
aXB0LXRhZy0yLmh0bWwKaW5kZXggMTk2YjY1Zi4uMDNjMWJmZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTIuaHRtbApAQCAtMyw2NSArMywzMSBA
QAogPHNjcmlwdCBzcmM9Imluc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJ0aW1lbGluZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci12YXIgdGltZWxpbmVNYXJr
ID0gIlNDUklQVCBUQUciOwogCi1mdW5jdGlvbiBhbmFseXplRXZhbHVhdGVTY3JpcHQocmVjb3Jk
KSAKK2Z1bmN0aW9uIHJ1bkFmdGVyU2NyaXB0SXNFdmFsdWF0ZWQoY29udGludWF0aW9uKQogewot
ICAgIHZhciBudW1DaGlsZHJlbiA9IHJlY29yZC5jaGlsZHJlbiA/IHJlY29yZC5jaGlsZHJlbi5s
ZW5ndGggOiAwOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewot
ICAgICAgICB2YXIgY2hpbGQgPSByZWNvcmQuY2hpbGRyZW5baV07Ci0gICAgICAgIGlmIChjaGls
ZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5NYXJrVGltZWxpbmUKLSAgICAgICAg
ICAgICYmIGNoaWxkLmRhdGEubWVzc2FnZSA9PT0gdGltZWxpbmVNYXJrCi0gICAgICAgICAgICAm
JiByZWNvcmQuZGF0YS51cmwuaW5kZXhPZigidGltZWxpbmUtc2NyaXB0LXRhZy0yLmpzIikgIT09
IC0xKSB7Ci0KLSAgICAgICAgICAgIC8vIEZpbmlzaCBwcmludGluZyB0aGUgcmVjb3JkIGFzIGEg
dHJlZQotICAgICAgICAgICAgZHVtcFRpbWVsaW5lUmVjb3JkKHJlY29yZCwgMSk7Ci0gICAgICAg
ICAgICBvdXRwdXQoIiIpOwotCi0gICAgICAgICAgICAvLyBOb3cgcHJpbnQgdGhlIGltcG9ydGFu
dCBmaWVsZHMgb2YgdGhlIHJlY29yZAotICAgICAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZFBy
b3BlcnRpZXMocmVjb3JkKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Cisg
ICAgZnVuY3Rpb24gc3RlcCgpCisgICAgeworICAgICAgICBpZiAoIXdpbmRvdy5zY3JpcHRFdmFs
dWF0ZWQpCisgICAgICAgICAgICBzZXRUaW1lb3V0KHN0ZXAsIDEwMCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvbnRpbnVhdGlvbigpOwogICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgc2V0VGltZW91dChzdGVwLCAxMDApOwogfQogCi1mdW5jdGlvbiBhbmFseXplUGFyc2VIVE1M
KHJlY29yZCkgCi17Ci0gICAgdmFyIG51bUNoaWxkcmVuID0gcmVjb3JkLmNoaWxkcmVuID8gcmVj
b3JkLmNoaWxkcmVuLmxlbmd0aCA6IDA7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1DaGls
ZHJlbjsgKytpKSB7Ci0gICAgICAgIHZhciBjaGlsZCA9IHJlY29yZC5jaGlsZHJlbltpXTsKLSAg
ICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlLkV2YWx1YXRl
U2NyaXB0KQotICAgICAgICAgICAgaWYgKGFuYWx5emVFdmFsdWF0ZVNjcmlwdChjaGlsZCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0g
IAotCi0vLyBMb29rIGZvciB0aGUgUGFyc2VIdG1sLT5FdmFsdWF0ZVNjcmlwdC0+TWFya1RpbWVs
aW5lIHRoYXQgY29ycmVsYXRlcyAKLS8vIHRvIHRoZSA8c2NyaXB0PiB0YWcgYmVsb3cuCi1mdW5j
dGlvbiBhbmFseXplVGltZWxpbmVEYXRhKHRpbWVsaW5lUmVjb3JkcykgCitmdW5jdGlvbiBkb2l0
KCkgCiB7Ci0gICAgLy8gVW5jb21tZW50IHRvIGRlYnVnZ2luZyB0aGUgbGlzdCBvZiBkYXRhIHJl
dHVybmVkLgotICAgIC8vIGR1bXBUaW1lbGluZVJlY29yZHModGltZWxpbmVSZWNvcmRzKTsKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQodHJ1ZSk7CiAKLSAgICAvLyBTZWFy
Y2ggZm9yIGEgUGFyc2VIVE1MIHJlY29yZAotICAgIHZhciBudW1SZWNvcmRzID0gdGltZWxpbmVS
ZWNvcmRzLmxlbmd0aDsKLSAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBudW1SZWNvcmRzOyArK2kp
IHsKLSAgICAgICAgdmFyIHJlY29yZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsKLSAgICAgICAgaWYg
KHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5QYXJzZUhUTUwpIHsKLSAg
ICAgICAgICAgIC8vIFVuY29tbWVudCB0byBkZWJ1ZyB0aGUgUGFyc2VIVE1MIGRhdGEgcmVjb3Jk
Ci0gICAgICAgICAgICAvLyBkdW1wVGltZWxpbmVSZWNvcmQocmVjb3JkLCAwKTsKLSAgICAgICAg
ICAgIG91dHB1dCgiUGFyc2VIVE1MIik7Ci0gICAgICAgICAgICBpZiAoIWFuYWx5emVQYXJzZUhU
TUwocmVjb3JkKSkKLSAgICAgICAgICAgICAgICBvdXRwdXQoIkZhaWxlZCB0byBmaW5kIHRpbWVs
aW5lIG1hcms6ICIgKyB0aW1lbGluZU1hcmspOwotICAgICAgICB9Ci0gICAgfQotfQorICAgIHZh
ciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKKyAgICBzY3JpcHQu
c3JjID0gInRpbWVsaW5lLXNjcmlwdC10YWctMi5qcyI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChzY3JpcHQpOwogCi1mdW5jdGlvbiBkb2l0KCkgCi17Ci0gICAgcmV0cmlldmVUaW1l
bGluZURhdGEoYW5hbHl6ZVRpbWVsaW5lRGF0YSk7CisgICAgcnVuQWZ0ZXJTY3JpcHRJc0V2YWx1
YXRlZChmdW5jdGlvbigpIHsKKyAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZHMobnVsbCwgIkV2
YWx1YXRlU2NyaXB0Iik7CisgICAgfSk7CiB9CiAKIDwvc2NyaXB0PgpAQCAtNzIsNiArMzgsNSBA
QCBmdW5jdGlvbiBkb2l0KCkKIFRlc3RzIHRoZSBUaW1lbGluZSBBUEkgaW5zdHJ1bWVudGF0aW9u
IG9mIGEgc2NyaXB0IHRhZyB3aXRoIGFuIGV4dGVybmFsIHNjcmlwdC4KIDwvcD4KIAotPHNjcmlw
dCBzcmM9InRpbWVsaW5lLXNjcmlwdC10YWctMi5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRh
Zy0yLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi5qcwpp
bmRleCAwZmIyNzNmLi42NDAyNGYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dGltZWxpbmUtc2NyaXB0LXRhZy0yLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS1zY3JpcHQtdGFnLTIuanMKQEAgLTEgKzEsMiBAQAotY29uc29sZS5tYXJrVGltZWxpbmUo
dGltZWxpbmVNYXJrKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitjb25zb2xlLm1hcmtU
aW1lbGluZSgiU0NSSVBUIFRBRyIpOword2luZG93LnNjcmlwdEV2YWx1YXRlZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtdGVzdC5qcyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10ZXN0LmpzCmluZGV4IDE5ODY1YjIuLjAwYmI3NzAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10ZXN0LmpzCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10ZXN0LmpzCkBAIC0xLDcgKzEsMyBAQAot
Ly8gVXNlZCB0byBtYXJrIHRpbWVsaW5lIHJlY29yZHMgYXMgYmVsb25naW5nIHRvIHRoZSB0ZXN0
IGZyYW1ld29yay4KLXZhciB0aW1lbGluZU92ZXJoZWFkTWFyayA9ICIqKipPdmVyaGVhZCoqKiI7
Ci0KLS8vIFRpbWVsaW5lQWdlbnQgcmVjb3JkIHR5cGUgZGVmaW5pdGlvbnMgZnJvbSB0aGUgaW5z
cGVjdG9yCiB2YXIgdGltZWxpbmVBZ2VudFJlY29yZFR5cGUgPSB7fTsKIAogLy8gU2NydWIgdmFs
dWVzIHdoZW4gcHJpbnRpbmcgb3V0IHRoZXNlIHByb3BlcnRpZXMgaW4gdGhlIHJlY29yZCBvciBk
YXRhIGZpZWxkLgpAQCAtMTIsMjcgKzgsNDAgQEAgdmFyIHRpbWVsaW5lTm9uRGV0ZXJtaW5pc3Rp
Y1Byb3BzID0gewogICAgIHVybCA6IDEKIH07CiAKLS8vIENhbGwgdGhpcyBmdW5jdGlvbiBmcm9t
IHRoZSBkb2l0KCkgZnVuY3Rpb24gaW4gdGhlIG1haW4gdGVzdCBwYWdlLgotLy8gUGFzcyBhIGZ1
bmN0aW9uIHRoYXQgd2lsbCBnZXQgYW4gYXJyYXkgb2YgdGltZWxpbmUgZGF0YSB0byBwcm9jZXNz
LgotZnVuY3Rpb24gcmV0cmlldmVUaW1lbGluZURhdGEoYW5hbHl6ZUZ1bmN0aW9uKQorZnVuY3Rp
b24gcHJpbnRUaW1lbGluZVJlY29yZHMocGVyZm9ybUFjdGlvbnMsIHR5cGVOYW1lLCBmb3JtYXR0
ZXIpCiB7CisgICAgaWYgKHBlcmZvcm1BY3Rpb25zKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRU
aW1lbGluZVByb2ZpbGluZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgIHBlcmZvcm1BY3Rpb25zKCk7
CisgICAgfQorCiAgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZSIsIGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICB0aW1lbGlu
ZUFnZW50UmVjb3JkVHlwZSA9IHJlc3VsdDsKICAgICB9KTsKIAotICAgIGV2YWx1YXRlSW5XZWJJ
bnNwZWN0b3IoImZyb250ZW5kX2dldFRpbWVsaW5lUmVzdWx0cygpIiwgZnVuY3Rpb24odGltZWxp
bmVSZWNvcmRzKSB7CisgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfZ2V0VGlt
ZWxpbmVSZXN1bHRzIiwgZnVuY3Rpb24odGltZWxpbmVSZWNvcmRzKSB7CiAgICAgICAgIGlmICh0
eXBlb2YodGltZWxpbmVSZWNvcmRzKSA9PT0gInN0cmluZyIpCiAgICAgICAgICAgICBvdXRwdXQo
IkVycm9yIGZldGNoaW5nIFRpbWVsaW5lIHJlc3VsdHM6ICIgKyB0aW1lbGluZVJlY29yZHMpOwot
ICAgICAgICBlbHNlIAotICAgICAgICAgICAgYW5hbHl6ZUZ1bmN0aW9uKHRpbWVsaW5lUmVjb3Jk
cyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aW1l
bGluZVJlY29yZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZU5hbWUg
JiYgdGltZWxpbmVSZWNvcmRzW2ldLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlW3R5
cGVOYW1lXSkKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZFByb3BlcnRp
ZXModGltZWxpbmVSZWNvcmRzW2ldKTsKKyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0dGVyKQor
ICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIodGltZWxpbmVSZWNvcmRzW2ldKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VGltZWxpbmVQcm9maWxp
bmdFbmFibGVkKGZhbHNlKTsKICAgICAgICAgbm90aWZ5RG9uZSgpOwogICAgIH0pOwotICAgIG1h
cmtUaW1lbGluZVJlY29yZEFzT3ZlcmhlYWQoIm9ubG9hZCIgKyAoaWdub3JlTG9hZCA/ICI6aWdu
b3JlTG9hZCI6ICIiKSk7CiB9CiAKIC8vIER1bXAganVzdCB0aGUgcmVjb3JkIG5hbWUsIGluZGVu
dGluZyBvdXRwdXQgb24gc2VwYXJhdGUgbGluZXMgZm9yIHN1YnJlY29yZHMKIGZ1bmN0aW9uIGR1
bXBUaW1lbGluZVJlY29yZChyZWNvcmQsIGxldmVsKSAKIHsKKyAgICBpZiAodHlwZW9mIGxldmVs
ICE9PSAibnVtYmVyIikKKyAgICAgICAgbGV2ZWwgPSAwOwogICAgIHZhciBwcmVmaXggPSAiIjsK
ICAgICB2YXIgc3VmZml4ID0gIiI7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZXZlbCA7ICsr
aSkKQEAgLTQ5LDE4ICs1OCwxMSBAQCBmdW5jdGlvbiBkdW1wVGltZWxpbmVSZWNvcmQocmVjb3Jk
LCBsZXZlbCkKICAgICAgICAgZHVtcFRpbWVsaW5lUmVjb3JkKHJlY29yZC5jaGlsZHJlbltpXSwg
bGV2ZWwgKyAxKTsKIH0KIAotLy8gRHVtcHMgYW4gZW50aXJlIGxpc3Qgb2YgcmVjb3JkcywgY3Vs
bGluZyBvdXQgdGhvc2UgbWFya2VkIGFzIG92ZXJoZWFkCiBmdW5jdGlvbiBkdW1wVGltZWxpbmVS
ZWNvcmRzKHRpbWVsaW5lUmVjb3JkcykgewotICAgIHZhciBudW1SZWNvcmRzID0gdGltZWxpbmVS
ZWNvcmRzLmxlbmd0aDsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVJlY29yZHM7ICsraSkg
ewotICAgICAgICB2YXIgcmVjb3JkID0gdGltZWxpbmVSZWNvcmRzW2ldOwotICAgICAgICBpZiAo
IWlzVGltZWxpbmVPdmVyaGVhZFJlY29yZChyZWNvcmQpKQotICAgICAgICAgICAgZHVtcFRpbWVs
aW5lUmVjb3JkKHJlY29yZCwgMCk7Ci0gICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGlt
ZWxpbmVSZWNvcmRzLmxlbmd0aDsgKytpKQorICAgICAgICBkdW1wVGltZWxpbmVSZWNvcmQodGlt
ZWxpbmVSZWNvcmRzW2ldLCAwKTsKIH0KIAotLy8gU29ydCB0aGUgZmllbGRzLCB0aGVuIHN0cmlw
IG91dCBzdGFydFRpbWUgYW5kIGVuZFRpbWUsIHRoZXkgYXJlIG5vdCBkZXRlcm1pbmlzdGljLgot
Ly8gQWxzbyByZW1vdmUgY2hpbGRyZW4gLSB0aGF0IGZpZWxkIGlzbid0IGltcG9ydGFudCBmb3Ig
dGhlIHByaW50b3V0LgogZnVuY3Rpb24gcHJpbnRUaW1lbGluZVJlY29yZFByb3BlcnRpZXMocmVj
b3JkKQogewogICAgIG91dHB1dCh0aW1lbGluZUFnZW50VHlwZVRvU3RyaW5nKHJlY29yZC50eXBl
KSArICIgUHJvcGVydGllczoiKTsKQEAgLTc1LDcgKzc3LDcgQEAgZnVuY3Rpb24gaXNOb25EZXRl
cm1pbmlzdGljUHJvcChwcm9wTmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWZ1bmN0aW9u
IHByaW50UHJvcHMgKHJlY29yZCwgbGV2ZWwpCitmdW5jdGlvbiBwcmludFByb3BzKHJlY29yZCwg
bGV2ZWwpCiB7CiAgICAgdmFyIHByb3BzID0gbmV3IEFycmF5KCk7CiAgICAgZm9yICh2YXIgcHJv
cCBpbiByZWNvcmQpIHsKQEAgLTEwMiwyOCArMTA0LDYgQEAgZnVuY3Rpb24gcHJpbnRQcm9wcyAo
cmVjb3JkLCBsZXZlbCkKICAgICB9CiB9CiAKLS8vIFJlY29yZHMgdGhhdCBoYXZlIGJlZW4gbWFy
a2VkIHdpdGggY29uc29sZS5tYXJrVGltZWxpbmUodGltZWxpbmVNYXJrKQotLy8gYXJlIGEgcGFy
dCBvZiB0aGUgdGVzdCBmcmFtZXdvcmsgYW5kIG5vdCBhIHBhcnQgb2YgdGhlIHRlc3QgYmVpbmcg
cGVyZm9ybWVkCi1mdW5jdGlvbiBpc1RpbWVsaW5lT3ZlcmhlYWRSZWNvcmQocmVjb3JkKSB7Ci0g
ICAgaWYgKHJlY29yZC50eXBlID09PSAxMSAmJiByZWNvcmQuZGF0YS5tZXNzYWdlLmluZGV4T2Yo
dGltZWxpbmVPdmVyaGVhZE1hcmspICE9PSAtMSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
dmFyIG51bUNoaWxkcmVuID0gcmVjb3JkLmNoaWxkcmVuID8gIHJlY29yZC5jaGlsZHJlbi5sZW5n
dGggOiAwOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewotICAg
ICAgICBpZiAoaXNUaW1lbGluZU92ZXJoZWFkUmVjb3JkKHJlY29yZC5jaGlsZHJlbltpXSkpCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0v
LyBUaGlzIG1hcmsgd2lsbCBoZWxwIHRoZSB0ZXN0IGFuYWx5c2lzIGN1bGwgb3V0IHJlY29yZHMg
dGhhdCBhcmUgb3ZlcmhlYWQuCi1mdW5jdGlvbiBtYXJrVGltZWxpbmVSZWNvcmRBc092ZXJoZWFk
KGFyZykKLXsKLSAgICB2YXIgc3VmZml4ID0gJyc7Ci0gICAgaWYgKGFyZykKLSAgICAgICAgc3Vm
Zml4ID0gIjogIiArIGFyZzsKLSAgICBjb25zb2xlLm1hcmtUaW1lbGluZSh0aW1lbGluZU92ZXJo
ZWFkTWFyayArIHN1ZmZpeCk7Ci19Ci0KIGZ1bmN0aW9uIHRpbWVsaW5lQWdlbnRUeXBlVG9TdHJp
bmcobnVtZXJpY1R5cGUpCiB7CiAgICAgZm9yICh2YXIgcHJvcCBpbiB0aW1lbGluZUFnZW50UmVj
b3JkVHlwZSkgewpAQCAtMTM0LDIzICsxMTQsMTEgQEAgZnVuY3Rpb24gdGltZWxpbmVBZ2VudFR5
cGVUb1N0cmluZyhudW1lcmljVHlwZSkKIH0KIAogLy8gSW5qZWN0ZWQgaW50byBJbnNwZWN0b3Ig
d2luZG93Ci1mdW5jdGlvbiBmcm9udGVuZF9zdGFydFRpbWVsaW5lUHJvZmlsZXIoKQotewotICAg
IHdpbmRvdy50aW1lbGluZVJlc3VsdHMgPSBuZXcgQXJyYXkoKTsKLSAgICB3aW5kb3cuV2ViSW5z
cGVjdG9yLmFkZFJlY29yZFRvVGltZWxpbmUgPSBmdW5jdGlvbihhcmcpIHsKLSAgICAgICAgd2lu
ZG93LnRpbWVsaW5lUmVzdWx0cy5wdXNoKGFyZyk7Ci0gICAgfTsKLSAgICB3aW5kb3cuSW5zcGVj
dG9yQ29udHJvbGxlci5zdGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKLSAgICByZXR1cm4gJ2RvbmUn
OwotfQotCi0vLyBJbmplY3RlZCBpbnRvIEluc3BlY3RvciB3aW5kb3cKIGZ1bmN0aW9uIGZyb250
ZW5kX2dldFRpbWVsaW5lUmVzdWx0cygpIHsKLSAgICByZXR1cm4gd2luZG93LnRpbWVsaW5lUmVz
dWx0czsKLX0KLQotLy8gSW5qZWN0ZWQgaW50byBJbnNwZWN0b3Igd2luZG93Ci0vLyBmcm9udGVu
ZF9zZXR1cCBhbHdheXMgZ2V0cyBjYWxsZWQgYmVmb3JlIHRoZSBwYWdlIGlzIHJlbG9hZGVkLgot
ZnVuY3Rpb24gZnJvbnRlbmRfc2V0dXAoKSB7Ci0gICAgZnJvbnRlbmRfc3RhcnRUaW1lbGluZVBy
b2ZpbGVyKCk7CisgICAgdmFyIHJlc3VsdCA9IFtdOworICAgIHZhciBpdGVtcyA9IFdlYkluc3Bl
Y3Rvci5wYW5lbHMudGltZWxpbmUuX2l0ZW1zOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRl
bXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgcmVzdWx0LnB1c2goaXRlbXNbaV0ucmVjb3JkKTsK
KyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY0YzE0My4uYWI3ZDRhMyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAwOS0xMS0xNiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogTWFrZSBEUlQgc2hvdyB3ZWIgaW5zcGVjdG9yIGZvciB0ZXN0cyBpbiBpbnNwZWN0
b3IvIGZvbGRlci4KKyAgICAgICAgICAtIFVwZGF0ZWQgRFJUIHRvIHNob3cvY2xvc2UgaW5zcGVj
dG9yIGZvciBhbGwgdGVzdHMgdW5kZXIgL2luc3BlY3RvcgorICAgICAgICAgIC0gSW50cm9kdWNl
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIGFuZAor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQgYmVz
aWRlIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkCisgICAgICAgICAgLSBSZW1vdmVkIHJl
bG9hZCBvbiBlYWNoIGluc3BlY3RvciB0ZXN0CisgICAgICAgICAgLSBSZWltcGxlbWVudGVkIHRp
bWVsaW5lIHRlc3RzIGluIG9yZGVyIHRvIGdldCByaWQgb2YgcmVsb2FkIHRoZXJlLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTQ3MgorCisgICAg
ICAgICogV2ViQ29yZS5JbnNwZWN0b3IuZXhwOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVs
LnByb3RvdHlwZS5fZm9ybWF0UmVjb3JkKToKKwogMjAwOS0xMS0xNCAgQ2hyaXMgRmxlaXphY2gg
IDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLkluc3BlY3Rvci5leHAgYi9XZWJDb3JlL1dl
YkNvcmUuSW5zcGVjdG9yLmV4cAppbmRleCA1NzY5OTRmLi4wMDA1OTRkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUuSW5zcGVjdG9yLmV4cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuSW5zcGVj
dG9yLmV4cApAQCAtMTYsMyArMTYsNSBAQCBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRFbFJLTlNfNlN0cmluZ0UKIF9fWk5LN1dlYkNv
cmUxOUluc3BlY3RvckNvbnRyb2xsZXIxN2RyYXdOb2RlSGlnaGxpZ2h0RVJOU18xNUdyYXBoaWNz
Q29udGV4dEUKIF9fWk5LN1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI3ZW5hYmxlZEV2CiBf
X1pOSzdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyN3NldHRpbmdFUktOU182U3RyaW5nRQor
X19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjFzdGFydFRpbWVsaW5lUHJvZmlsZXJF
dgorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjBzdG9wVGltZWxpbmVQcm9maWxl
ckV2CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5l
bC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4
IDExY2FkZjMuLjM3NzBlYmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZVBhbmVsLmpzCkBAIC0xNzIsNiArMTcyLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICBmb3JtYXR0ZWRSZWNvcmQuY291bnQgPSAxOwogICAg
ICAgICBmb3JtYXR0ZWRSZWNvcmQudHlwZSA9IHJlY29yZC50eXBlOwogICAgICAgICBmb3JtYXR0
ZWRSZWNvcmQuZW5kVGltZSA9ICh0eXBlb2YgcmVjb3JkLmVuZFRpbWUgIT09ICJ1bmRlZmluZWQi
KSA/IHJlY29yZC5lbmRUaW1lIC8gMTAwMCA6IGZvcm1hdHRlZFJlY29yZC5zdGFydFRpbWU7Cisg
ICAgICAgIGZvcm1hdHRlZFJlY29yZC5yZWNvcmQgPSByZWNvcmQ7CiAKICAgICAgICAgLy8gTWFr
ZSByZXNvdXJjZSByZWNlaXZlIHJlY29yZCBsYXN0IHNpbmNlIHJlcXVlc3Qgd2FzIHNlbnQ7IG1h
a2UgZmluaXNoIHJlY29yZCBsYXN0IHNpbmNlIHJlc3BvbnNlIHJlY2VpdmVkLgogICAgICAgICBp
ZiAocmVjb3JkLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUu
UmVzb3VyY2VTZW5kUmVxdWVzdCkgewpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
Yi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA5YzhkYmRkLi40MWUwZTAzIDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDA5LTExLTE2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBNYWtlIERSVCBzaG93IHdlYiBpbnNwZWN0b3IgZm9yIHRlc3RzIGluIGlu
c3BlY3Rvci8gZm9sZGVyLgorICAgICAgICAgIC0gVXBkYXRlZCBEUlQgdG8gc2hvdy9jbG9zZSBp
bnNwZWN0b3IgZm9yIGFsbCB0ZXN0cyB1bmRlciAvaW5zcGVjdG9yCisgICAgICAgICAgLSBJbnRy
b2R1Y2VkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQg
YW5kCisgICAgICAgICAgICBXZWJJbnNwZWN0b3I6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxl
ZCBiZXNpZGUgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQKKyAgICAgICAgICAtIFJlbW92
ZWQgcmVsb2FkIG9uIGVhY2ggaW5zcGVjdG9yIHRlc3QKKyAgICAgICAgICAtIFJlaW1wbGVtZW50
ZWQgdGltZWxpbmUgdGVzdHMgaW4gb3JkZXIgdG8gZ2V0IHJpZCBvZiByZWxvYWQgdGhlcmUuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDcyCisK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKHdlYmtp
dF93ZWJfaW5zcGVjdG9yX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl9pbnNwZWN0
b3Jfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9wcm9w
ZXJ0eSk6CisKIDIwMDktMTEtMTMgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVwZGF0ZSBmb3IgY2hhbmdlcyB0byBGcmFtZUxvYWRlckNsaWVudApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcCBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5jcHAKaW5kZXggZWUyODE1Yy4uZjdhNThhNyAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcAorKysgYi9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwCkBAIC04Myw3ICs4Myw4IEBA
IGVudW0gewogCiAgICAgUFJPUF9XRUJfVklFVywKICAgICBQUk9QX0lOU1BFQ1RFRF9VUkksCi0g
ICAgUFJPUF9KQVZBU0NSSVBUX1BST0ZJTElOR19FTkFCTEVECisgICAgUFJPUF9KQVZBU0NSSVBU
X1BST0ZJTElOR19FTkFCTEVELAorICAgIFBST1BfVElNRUxJTkVfUFJPRklMSU5HX0VOQUJMRUQg
ICAgCiB9OwogCiBHX0RFRklORV9UWVBFKFdlYktpdFdlYkluc3BlY3Rvciwgd2Via2l0X3dlYl9p
bnNwZWN0b3IsIEdfVFlQRV9PQkpFQ1QpCkBAIC0zMDAsNiArMzAxLDIyIEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfaW5zcGVjdG9yX2NsYXNzX2luaXQoV2ViS2l0V2ViSW5zcGVjdG9yQ2xhc3Mq
IGtsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFE
V1JJVEUpKTsKIAorICAgIC8qKgorICAgICogV2ViS2l0V2ViSW5zcGVjdG9yOnRpbWVsaW5lLXBy
b2ZpbGluZy1lbmFibGVkCisgICAgKgorICAgICogVGhpcyBpcyBlbmFibGluZyBUaW1lbGluZSBw
cm9maWxpbmcgaW4gdGhlIEluc3BlY3Rvci4KKyAgICAqCisgICAgKiBTaW5jZTogMS4xLjEKKyAg
ICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfVElNRUxJTkVfUFJPRklM
SU5HX0VOQUJMRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
dGltZWxpbmUtcHJvZmlsaW5nLWVuYWJsZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIkVuYWJsZSBUaW1lbGluZSBwcm9maWxpbmciKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJQcm9maWxlIHRoZSBXZWJDb3JlIGluc3Ry
dW1lbnRhdGlvbi4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
QUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBRFdSSVRFKSk7CisKICAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNp
emVvZihXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKSk7CiB9CiAKQEAgLTMzNyw2ICszNTQsMTUg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3Byb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY28KICAgICAgICAgICAgIGNvbnRyb2xsZXItPmRpc2Fi
bGVQcm9maWxlcigpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBQUk9QX1RJTUVM
SU5FX1BST0ZJTElOR19FTkFCTEVEOiB7CisgICAgICAgIGJvb2wgZW5hYmxlZCA9IGdfdmFsdWVf
Z2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
KiBjb250cm9sbGVyID0gcHJpdi0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgICAg
ICBpZiAoZW5hYmxlZCkKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPnN0YXJ0VGltZWxpbmVQcm9m
aWxlcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb250cm9sbGVyLT5zdG9wVGltZWxp
bmVQcm9maWxlcigpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNw
ZWMpOwogICAgICAgICBicmVhazsKQEAgLTM1OCw2ICszODQsOSBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX2luc3BlY3Rvcl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
X2lkLCBHVgogICAgIGNhc2UgUFJPUF9KQVZBU0NSSVBUX1BST0ZJTElOR19FTkFCTEVEOgogICAg
ICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5wYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPnByb2ZpbGVyRW5hYmxlZCgpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX1RJTUVMSU5FX1BST0ZJTElOR19FTkFCTEVEOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCBwcml2LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnRpbWVsaW5lQWdl
bnQoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDAzNDVjYTAuLmRhZjI3NDggMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDkt
MTEtMTYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1h
a2UgRFJUIHNob3cgd2ViIGluc3BlY3RvciBmb3IgdGVzdHMgaW4gaW5zcGVjdG9yLyBmb2xkZXIu
CisgICAgICAgICAgLSBVcGRhdGVkIERSVCB0byBzaG93L2Nsb3NlIGluc3BlY3RvciBmb3IgYWxs
IHRlc3RzIHVuZGVyIC9pbnNwZWN0b3IKKyAgICAgICAgICAtIEludHJvZHVjZWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCBhbmQKKyAgICAgICAgICAg
IFdlYkluc3BlY3Rvcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIGJlc2lkZSBzZXRKYXZh
U2NyaXB0UHJvZmlsaW5nRW5hYmxlZAorICAgICAgICAgIC0gUmVtb3ZlZCByZWxvYWQgb24gZWFj
aCBpbnNwZWN0b3IgdGVzdAorICAgICAgICAgIC0gUmVpbXBsZW1lbnRlZCB0aW1lbGluZSB0ZXN0
cyBpbiBvcmRlciB0byBnZXQgcmlkIG9mIHJlbG9hZCB0aGVyZS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NzIKKworICAgICAgICAqIFdlYklu
c3BlY3Rvci9XZWJJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvV2ViSW5zcGVj
dG9yLm1tOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3IgaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJs
ZWRdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yIHNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxl
ZDpdKToKKwogMjAwOS0xMS0xNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmggYi9XZWJLaXQvbWFjL1dlYkluc3BlY3Rv
ci9XZWJJbnNwZWN0b3IuaAppbmRleCBjMTY3MjZkLi5mYTEzYzhkIDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IuaAorKysgYi9XZWJLaXQvbWFjL1dlYklu
c3BlY3Rvci9XZWJJbnNwZWN0b3IuaApAQCAtNDksNiArNDksOCBAQAogCiAtIChCT09MKWlzSmF2
YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQ7CiAtICh2b2lkKXNldEphdmFTY3JpcHRQcm9maWxpbmdF
bmFibGVkOihCT09MKWVuYWJsZWQ7CistIChCT09MKWlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVk
OworLSAodm9pZClzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKIAog
LSAoQk9PTClpc1Byb2ZpbGluZ0phdmFTY3JpcHQ7CiAtICh2b2lkKXRvZ2dsZVByb2ZpbGluZ0ph
dmFTY3JpcHQ6KGlkKXNlbmRlcjsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L1dlYkluc3BlY3Rvci5tbSBiL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5t
bQppbmRleCBjY2IwOWM1Li4yNThkZDAxIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkluc3Bl
Y3Rvci9XZWJJbnNwZWN0b3IubW0KKysrIGIvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5z
cGVjdG9yLm1tCkBAIC0xNDgsNiArMTQ4LDI1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
ICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2FibGVQcm9maWxlcigpOwog
fQogCistIChCT09MKWlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkCit7CisgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBjb3JlKF93ZWJWaWV3KSkKKyAgICAgICAgcmV0dXJuIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+dGltZWxpbmVBZ2VudCgpID8gWUVTIDogTk87CisgICAgcmV0dXJuIE5POwor
fQorCistICh2b2lkKXNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZDooQk9PTCllbmFibGVkCit7
CisgICAgUGFnZSogcGFnZSA9IGNvcmUoX3dlYlZpZXcpOworICAgIGlmICghcGFnZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKGVuYWJsZWQpCisgICAgICAgIHBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+c3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7CisgICAgZWxzZQorICAgICAgICBw
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnN0b3BUaW1lbGluZVByb2ZpbGVyKCk7Cit9CisK
IC0gKHZvaWQpY2xvc2U6KGlkKXNlbmRlciAKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUo
X3dlYlZpZXcpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2lu
L0NoYW5nZUxvZwppbmRleCBkNGU4OWM4Li5hMzNkZDU2IDEwMDY0NAotLS0gYS9XZWJLaXQvd2lu
L0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDA5LTExLTE2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBNYWtlIERSVCBzaG93IHdlYiBpbnNwZWN0b3IgZm9yIHRlc3RzIGluIGluc3BlY3Rvci8gZm9s
ZGVyLgorICAgICAgICAgIC0gVXBkYXRlZCBEUlQgdG8gc2hvdy9jbG9zZSBpbnNwZWN0b3IgZm9y
IGFsbCB0ZXN0cyB1bmRlciAvaW5zcGVjdG9yCisgICAgICAgICAgLSBJbnRyb2R1Y2VkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQgYW5kCisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3I6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCBiZXNpZGUgc2V0
SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQKKyAgICAgICAgICAtIFJlbW92ZWQgcmVsb2FkIG9u
IGVhY2ggaW5zcGVjdG9yIHRlc3QKKyAgICAgICAgICAtIFJlaW1wbGVtZW50ZWQgdGltZWxpbmUg
dGVzdHMgaW4gb3JkZXIgdG8gZ2V0IHJpZCBvZiByZWxvYWQgdGhlcmUuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDcyCisKKyAgICAgICAgKiBJ
bnRlcmZhY2VzL0lXZWJJbnNwZWN0b3IuaWRsOgorICAgICAgICAqIFdlYkluc3BlY3Rvci5jcHA6
CisgICAgICAgIChXZWJJbnNwZWN0b3I6OmlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKToKKyAgICAg
ICAgKiBXZWJJbnNwZWN0b3IuaDoKKwogMjAwOS0xMS0xMyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0lu
dGVyZmFjZXMvSVdlYkluc3BlY3Rvci5pZGwgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYklu
c3BlY3Rvci5pZGwKaW5kZXggZTMxMzc2Yy4uNGQwZDk2YyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL0lXZWJJbnNwZWN0b3IuaWRsCisrKyBiL1dlYktpdC93aW4vSW50ZXJmYWNl
cy9JV2ViSW5zcGVjdG9yLmlkbApAQCAtNTQsNCArNTQsNiBAQCBpbnRlcmZhY2UgSVdlYkluc3Bl
Y3RvciA6IElVbmtub3duCiAKICAgICBIUkVTVUxUIGlzSmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJs
ZWQoQk9PTCogaXNQcm9maWxpbmdFbmFibGVkKTsKICAgICBIUkVTVUxUIHNldEphdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkKEJPT0wgZW5hYmxlZCk7CisgICAgSFJFU1VMVCBpc1RpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZChCT09MKiBpc0VuYWJsZWQpOworICAgIEhSRVNVTFQgc2V0VGltZWxpbmVQ
cm9maWxpbmdFbmFibGVkKEJPT0wgZW5hYmxlZCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvd2lu
L1dlYkluc3BlY3Rvci5jcHAgYi9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggOTc1
ODdmOS4uNTNlYzU2ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuY3BwCisr
KyBiL1dlYktpdC93aW4vV2ViSW5zcGVjdG9yLmNwcApAQCAtMjU5LDYgKzI1OSw0MSBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkluc3BlY3Rvcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGlu
Z0VuYWJsZWQoQk9PTCBlbmFibAogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkluc3BlY3Rvcjo6aXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoQk9P
TCogaXNFbmFibGVkKQoreworICAgIGlmICghaXNFbmFibGVkKQorICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOworCisgICAgKmlzRW5hYmxlZCA9IEZBTFNFOworCisgICAgaWYgKCFtX3dlYlZpZXcp
CisgICAgICAgIHJldHVybiBTX09LOworCisgICAgUGFnZSogcGFnZSA9IG1fd2ViVmlldy0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIFNfT0s7CisKKyAgICAqaXNFbmFi
bGVkID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT50aW1lbGluZUFnZW50KCkgIT0gMDsK
KyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNw
ZWN0b3I6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChCT09MIGVuYWJsZWQpCit7CisgICAg
aWYgKCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybiBTX09LOworCisgICAgUGFnZSogcGFnZSA9
IG1fd2ViVmlldy0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIFNfT0s7
CisKKyAgICBpZiAoZW5hYmxlZCkKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LT5zdGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKKyAgICBlbHNlCisgICAgICAgIHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS0+c3RvcFRpbWVsaW5lUHJvZmlsZXIoKTsKKworICAgIHJldHVybiBT
X09LOworfQorCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFICBXZWJJbnNwZWN0b3I6OmV2YWx1
YXRlSW5Gcm9udGVuZChVTE9ORyBjYWxsSWQsIEJTVFIgYlNjcmlwdCkKIHsKICAgICBpZiAoIW1f
d2ViVmlldykKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViSW5zcGVjdG9yLmggYi9XZWJLaXQv
d2luL1dlYkluc3BlY3Rvci5oCmluZGV4IDRmOWJlZGIuLjU4MWJmZTAgMTAwNjQ0Ci0tLSBhL1dl
YktpdC93aW4vV2ViSW5zcGVjdG9yLmgKKysrIGIvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuaApA
QCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaXNKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChCT09MKiBpc1Byb2ZpbGluZ0Vu
YWJsZWQpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRKYXZhU2Ny
aXB0UHJvZmlsaW5nRW5hYmxlZChCT09MKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoQk9PTCogaXNFbmFibGVkKTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGltZWxpbmVQcm9maWxpbmdF
bmFibGVkKEJPT0wpOwogICAgIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBldmFsdWF0ZUluRnJvbnRlbmQoVUxPTkcgY2FsbElkLCBCU1RSIHNjcmlwdCk7CiAKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRl
eCAwZTkzMWI1Li40YzM4YjdmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMDktMTEtMTYgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ha2UgRFJUIHNo
b3cgd2ViIGluc3BlY3RvciBmb3IgdGVzdHMgaW4gaW5zcGVjdG9yLyBmb2xkZXIuCisgICAgICAg
ICAgLSBVcGRhdGVkIERSVCB0byBzaG93L2Nsb3NlIGluc3BlY3RvciBmb3IgYWxsIHRlc3RzIHVu
ZGVyIC9pbnNwZWN0b3IKKyAgICAgICAgICAtIEludHJvZHVjZWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCBhbmQKKyAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIGJlc2lkZSBzZXRKYXZhU2NyaXB0UHJv
ZmlsaW5nRW5hYmxlZAorICAgICAgICAgIC0gUmVtb3ZlZCByZWxvYWQgb24gZWFjaCBpbnNwZWN0
b3IgdGVzdAorICAgICAgICAgIC0gUmVpbXBsZW1lbnRlZCB0aW1lbGluZSB0ZXN0cyBpbiBvcmRl
ciB0byBnZXQgcmlkIG9mIHJlbG9hZCB0aGVyZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NzIKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldFRpbWVsaW5lUHJvZmlsaW5n
RW5hYmxlZENhbGxiYWNrKToKKyAgICAgICAgKGNsb3NlV2ViSW5zcGVjdG9yQ2FsbGJhY2spOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoc2hvdWxkT3Blbldl
Ykluc3BlY3Rvcik6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoc2hvdWxkT3BlbldlYklu
c3BlY3Rvcik6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQpOgor
CiAyMDA5LTExLTE2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZGFmODg4Zi4uNGMyOGNhNyAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcApAQCAtODUwLDYgKzg1MCwxNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRUYWJLZXlDeWNs
ZXNUaHJvdWdoRWxlbWVudHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSgogICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVS
ZWYgc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0VGltZWxpbmVQ
cm9maWxpbmdFbmFibGVkKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBdKSk7
CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMg
SlNWYWx1ZVJlZiBzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZUNhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFjIGltcGxlbWVudGF0aW9u
CkBAIC05NzksNiArOTg5LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2hvd1dlYkluc3BlY3RvckNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW4KIHN0YXRpYyBKU1Zh
bHVlUmVmIGNsb3NlV2ViSW5zcGVjdG9yQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nh
c3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkp
OworICAgIGNvbnRyb2xsZXItPnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChmYWxzZSk7CiAg
ICAgY29udHJvbGxlci0+Y2xvc2VXZWJJbnNwZWN0b3IoKTsKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiB9CkBAIC0xMjY0LDYgKzEyNzUsNyBAQCBKU1N0YXRpY0Z1
bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAg
eyAic2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkIiwgc2V0U21hcnRJbnNlcnREZWxldGVFbmFi
bGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0U3RvcFByb3Zpc2lvbmFsRnJhbWVM
b2FkcyIsIHNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHNDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMiLCBzZXRUYWJLZXlDeWNsZXNU
aHJvdWdoRWxlbWVudHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRUaW1lbGluZVBy
b2ZpbGluZ0VuYWJsZWQiLCBzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWRDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSIsIHNldFVz
ZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkIiwgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbiIsIHNldFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNzlmZmI5OS4uMDY0
MWU5OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCkBAIC0yMTQsNiArMjE0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzaG93V2Vi
SW5zcGVjdG9yKCk7CiAgICAgdm9pZCBjbG9zZVdlYkluc3BlY3RvcigpOworICAgIHZvaWQgc2V0
VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCk7CiAgICAgdm9pZCBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElkLCBKU1N0cmluZ1JlZiBzY3JpcHQpOwogICAgIHZv
aWQgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQodW5zaWduZWQgd29ybGRJZCwgSlNPYmpl
Y3RSZWYgZ2xvYmFsT2JqZWN0LCBKU1N0cmluZ1JlZiBzY3JpcHQpOwogCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCA1NDA4YmEx
Li4yOTMxM2UzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVt
cFJlbmRlclRyZWUuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1w
UmVuZGVyVHJlZS5jcHAKQEAgLTExNCw2ICsxMTQsMTEgQEAgc3RhdGljIGJvb2wgc2hvdWxkTG9n
RnJhbWVMb2FkRGVsZWdhdGVzKGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKICAgICByZXR1cm4gc3Ry
c3RyKHBhdGhPclVSTCwgImxvYWRpbmcvIik7CiB9CiAKK3N0YXRpYyBib29sIHNob3VsZE9wZW5X
ZWJJbnNwZWN0b3IoY29uc3QgY2hhciogcGF0aE9yVVJMKQoreworICAgIHJldHVybiBzdHJzdHIo
cGF0aE9yVVJMLCAiaW5zcGVjdG9yLyIpOworfQorCiB2b2lkIGR1bXBGcmFtZVNjcm9sbFBvc2l0
aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKIApAQCAtNDU2LDYgKzQ2MSw5IEBAIHN0YXRp
YyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiB0ZXN0UGF0aE9yVVJMKQogICAgIGlmIChzaG91
bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXMocGF0aE9yVVJMLmNfc3RyKCkpKQogICAgICAgICBnTGF5
b3V0VGVzdENvbnRyb2xsZXItPnNldER1bXBGcmFtZUxvYWRDYWxsYmFja3ModHJ1ZSk7CiAKKyAg
ICBpZiAoc2hvdWxkT3BlbldlYkluc3BlY3RvcihwYXRoT3JVUkwuY19zdHIoKSkpCisgICAgICAg
IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+c2hvd1dlYkluc3BlY3RvcigpOworCiAgICAgV29ya1F1
ZXVlOjpzaGFyZWQoKS0+Y2xlYXIoKTsKICAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5zZXRGcm96
ZW4oZmFsc2UpOwogCkBAIC00OTcsNiArNTA1LDkgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25z
dCBzdHJpbmcmIHRlc3RQYXRoT3JVUkwpCiAgICAgICAgIHdlYlZpZXdMaXN0ID0gMDsKICAgICB9
CiAKKyAgICBpZiAoc2hvdWxkT3BlbldlYkluc3BlY3RvcihwYXRoT3JVUkwuY19zdHIoKSkpCisg
ICAgICAgIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+Y2xvc2VXZWJJbnNwZWN0b3IoKTsKKwogICAg
IC8vIEEgYmxhbmsgbG9hZCBzZWVtcyB0byBiZSBuZWNlc3NhcnkgdG8gcmVzZXQgc3RhdGUgYWZ0
ZXIgY2VydGFpbiB0ZXN0cy4KICAgICB3ZWJraXRfd2ViX3ZpZXdfb3Blbih3ZWJWaWV3LCAiYWJv
dXQ6YmxhbmsiKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggMTczZTUyNi4uOTY0ZDdiYSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250
cm9sbGVyR3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0
VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC0yMjksNiArMjI5LDE1IEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhib29sIGN5Y2xlcykK
ICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAidGFiLWtleS1jeWNsZXMtdGhy
b3VnaC1lbGVtZW50cyIsIGN5Y2xlcywgTlVMTCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChib29sIGZsYWcpCit7CisgICAgV2Vi
S2l0V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFt
ZSk7CisgICAgQVNTRVJUKHZpZXcpOworCisgICAgV2ViS2l0V2ViSW5zcGVjdG9yKiBpbnNwZWN0
b3IgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2luc3BlY3Rvcih2aWV3KTsKKyAgICBnX29iamVjdF9z
ZXQoR19PQkpFQ1QoaW5zcGVjdG9yKSwgInRpbWVsaW5lLXByb2ZpbGluZy1lbmFibGVkIiwgZmxh
ZywgTlVMTCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZURhc2hib2Fy
ZENvbXBhdGliaWxpdHlNb2RlKGJvb2wgZmxhZykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0K
aW5kZXggYzBhMGI3NC4uNWY0YmM3YyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMTEwMiw2ICsxMTAyLDExIEBAIHN0YXRpYyBi
b29sIHNob3VsZExvZ0hpc3RvcnlEZWxlZ2F0ZXMoY29uc3QgY2hhciogcGF0aE9yVVJMKQogICAg
IHJldHVybiBzdHJzdHIocGF0aE9yVVJMLCAiZ2xvYmFsaGlzdG9yeS8iKTsKIH0KIAorc3RhdGlj
IGJvb2wgc2hvdWxkT3BlbldlYkluc3BlY3Rvcihjb25zdCBjaGFyKiBwYXRoT3JVUkwpCit7Cisg
ICAgcmV0dXJuIHN0cnN0cihwYXRoT3JVUkwsICJpbnNwZWN0b3IvIik7Cit9CisKIHN0YXRpYyB2
b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpCiB7CiAgICAg
V2ViVmlldyAqd2ViVmlldyA9IFttYWluRnJhbWUgd2ViVmlld107CkBAIC0xMTc4LDcgKzExODMs
MTAgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RQYXRoT3JVUkwpCiAg
ICAgICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEhpc3RvcnlEZWxlZ2F0ZTpoaXN0b3J5RGVs
ZWdhdGVdOwogICAgIGVsc2UKICAgICAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0SGlzdG9y
eURlbGVnYXRlOm5pbF07Ci0gICAgCisKKyAgICBpZiAoc2hvdWxkT3BlbldlYkluc3BlY3Rvcihw
YXRoT3JVUkwuY19zdHIoKSkpCisgICAgICAgIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+c2hvd1dl
Ykluc3BlY3RvcigpOworCiAgICAgaWYgKFtXZWJIaXN0b3J5IG9wdGlvbmFsU2hhcmVkSGlzdG9y
eV0pCiAgICAgICAgIFtXZWJIaXN0b3J5IHNldE9wdGlvbmFsU2hhcmVkSGlzdG9yeTpuaWxdOwog
ICAgIGxhc3RNb3VzZVBvc2l0aW9uID0gTlNaZXJvUG9pbnQ7CkBAIC0xMjI4LDkgKzEyMzYsMTIg
QEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RQYXRoT3JVUkwpCiAKICAg
ICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKTsKIAorICAgIGlm
IChzaG91bGRPcGVuV2ViSW5zcGVjdG9yKHBhdGhPclVSTC5jX3N0cigpKSkKKyAgICAgICAgZ0xh
eW91dFRlc3RDb250cm9sbGVyLT5jbG9zZVdlYkluc3BlY3RvcigpOworCiAgICAgW21haW5GcmFt
ZSBsb2FkSFRNTFN0cmluZzpAIjxodG1sPjwvaHRtbD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJhYm91dDpibGFuayJdXTsKICAgICBbbWFpbkZyYW1lIHN0b3BMb2FkaW5nXTsKLSAg
ICAKKwogICAgIFtwb29sIHJlbGVhc2VdOwogCiAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSBv
dXIgbWFpbiB3aW5kb3cgbGVmdCBvcGVuIHdoZW4gd2UncmUgZG9uZQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1t
CmluZGV4IDMzNDUzODguLmI0MzVmNTQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTMxMSw2ICsz
MTEsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGFiS2V5Q3ljbGVzVGhyb3Vn
aEVsZW1lbnRzKGJvb2wgY3ljbGVzKQogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldFRhYktl
eUN5Y2xlc1Rocm91Z2hFbGVtZW50czpjeWNsZXNdOwogfQogCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAg
IFtbW21haW5GcmFtZSB3ZWJWaWV3XSBpbnNwZWN0b3JdIHNldFRpbWVsaW5lUHJvZmlsaW5nRW5h
YmxlZDplbmFibGVkXTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlRGFz
aGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUoYm9vbCBmbGFnKQogewogICAgIFtbbWFpbkZyYW1lIHdl
YlZpZXddIF9zZXREYXNoYm9hcmRCZWhhdmlvcjpXZWJEYXNoYm9hcmRCZWhhdmlvclVzZUJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUgdG86ZmxhZ107CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBkNDg2ZDA2Li41MzUxYWVjIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUu
Y3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5j
cHAKQEAgLTY4OCw2ICs2ODgsMTEgQEAgc3RhdGljIGJvb2wgc2hvdWxkTG9nSGlzdG9yeURlbGVn
YXRlcyhjb25zdCBjaGFyKiBwYXRoT3JVUkwpCiAgICAgcmV0dXJuIHN0cnN0cihwYXRoT3JVUkws
ICIvZ2xvYmFsaGlzdG9yeS8iKSB8fCBzdHJzdHIocGF0aE9yVVJMLCAiXFxnbG9iYWxoaXN0b3J5
XFwiKTsKIH0KIAorc3RhdGljIGJvb2wgc2hvdWxkT3BlbldlYkluc3BlY3Rvcihjb25zdCBjaGFy
KiBwYXRoT3JVUkwpCit7CisgICAgcmV0dXJuIHN0cnN0cihwYXRoT3JVUkwsICIvaW5zcGVjdG9y
LyIpIHx8IHN0cnN0cihwYXRoT3JVUkwsICJcXGluc3BlY3RvclxcIik7Cit9CisKIHN0YXRpYyB2
b2lkIHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMoSVdlYlByZWZlcmVuY2VzKiBwcmVm
ZXJlbmNlcykKIHsKICNpZmRlZiBVU0VfTUFDX0ZPTlRTCkBAIC04NTksNiArODY0LDkgQEAgc3Rh
dGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RQYXRoT3JVUkwpCiAKICAgICByZXNl
dFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKTsKIAorICAgIGlmIChzaG91
bGRPcGVuV2ViSW5zcGVjdG9yKHBhdGhPclVSTC5jX3N0cigpKSkKKyAgICAgICAgZ0xheW91dFRl
c3RDb250cm9sbGVyLT5zaG93V2ViSW5zcGVjdG9yKCk7CisKICAgICBwcmV2VGVzdEJGSXRlbSA9
IDA7CiAgICAgaWYgKHdlYlZpZXcpIHsKICAgICAgICAgQ09NUHRyPElXZWJCYWNrRm9yd2FyZExp
c3Q+IGJmTGlzdDsKQEAgLTg5NSw2ICs5MDMsOSBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0
IHN0cmluZyYgdGVzdFBhdGhPclVSTCkKIAogICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0
YXRlQmVmb3JlVGVzdGluZygpOwogCisgICAgaWYgKHNob3VsZE9wZW5XZWJJbnNwZWN0b3IocGF0
aE9yVVJMLmNfc3RyKCkpKQorICAgICAgICBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmNsb3NlV2Vi
SW5zcGVjdG9yKCk7CisKICAgICBmcmFtZS0+c3RvcExvYWRpbmcoKTsKIAogICAgIGlmICg6OmdM
YXlvdXRUZXN0Q29udHJvbGxlci0+Y2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKCkp
IHsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0
Q29udHJvbGxlcldpbi5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IDAzMjBiNDIuLmM4NjQ5YmIgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5j
cHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9s
bGVyV2luLmNwcApAQCAtMzk4LDYgKzM5OCwyMyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoYm9vbCBzaG91bGRDeWNsZSkKICAgICB2
aWV3UHJpdmF0ZS0+c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKHNob3VsZEN5Y2xlID8g
VFJVRSA6IEZBTFNFKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGltZWxp
bmVQcm9maWxpbmdFbmFibGVkKGJvb2wgZmxhZykKK3sKKyAgICBDT01QdHI8SVdlYlZpZXc+IHdl
YlZpZXc7CisgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB2aWV3UHJpdmF0ZTsKKyAg
ICBpZiAoRkFJTEVEKHdlYlZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZ2aWV3UHJpdmF0ZSkpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBDT01QdHI8SVdlYkluc3BlY3Rvcj4gaW5zcGVjdG9yOworICAg
IGlmIChGQUlMRUQodmlld1ByaXZhdGUtPmluc3BlY3RvcigmaW5zcGVjdG9yKSkpCisgICAgICAg
IHJldHVybjsKKworICAgIGluc3BlY3Rvci0+c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGZs
YWcpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VEYXNoYm9hcmRDb21w
YXRpYmlsaXR5TW9kZShib29sIGZsYWcpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43319</attachid>
            <date>2009-11-16 12:35:05 -0800</date>
            <delta_ts>2009-11-17 05:04:01 -0800</delta_ts>
            <desc>[PATCH] Review comments addressed</desc>
            <filename>drt</filename>
            <type>text/plain</type>
            <size>50042</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NWZjYTNhLi42ZTMxMTlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMDktMTEt
MTYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ha2Ug
RFJUIHNob3cgd2ViIGluc3BlY3RvciBmb3IgdGVzdHMgaW4gaW5zcGVjdG9yLyBmb2xkZXIuCisg
ICAgICAgICAgLSBVcGRhdGVkIERSVCB0byBzaG93L2Nsb3NlIGluc3BlY3RvciBmb3IgYWxsIHRl
c3RzIHVuZGVyIC9pbnNwZWN0b3IKKyAgICAgICAgICAtIEludHJvZHVjZWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCBhbmQKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIGJlc2lkZSBzZXRKYXZhU2Ny
aXB0UHJvZmlsaW5nRW5hYmxlZAorICAgICAgICAgIC0gUmVtb3ZlZCByZWxvYWQgb24gZWFjaCBp
bnNwZWN0b3IgdGVzdAorICAgICAgICAgIC0gUmVpbXBsZW1lbnRlZCB0aW1lbGluZSB0ZXN0cyBp
biBvcmRlciB0byBnZXQgcmlkIG9mIHJlbG9hZCB0aGVyZS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NzIKKworICAgICAgICAqIGluc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qczoKKyAgICAgICAgKG9ubG9hZCk6CisgICAgICAgIChldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKG5vdGlmeURvbmUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9yZXNvdXJjZXMvdGltZWxpbmUtaWZyYW1lLWRhdGEuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL3RpbWVsaW5lLWxheW91dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3RpbWVsaW5lLWxheW91dC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGlu
ZS1tYXJrLXRpbWVsaW5lLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXBhaW50
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS1wYXJzZS1odG1sLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXJlY2FsY3VsYXRlLXN0eWxlcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXJlY2FsY3VsYXRlLXN0eWxlcy5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTEtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTEuaHRtbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0yLmh0bWw6CisgICAgICAgICogaW5zcGVj
dG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxp
bmUtdGVzdC5qczoKKyAgICAgICAgKHByaW50VGltZWxpbmVSZWNvcmRzKToKKyAgICAgICAgKCk6
CisgICAgICAgIChkdW1wVGltZWxpbmVSZWNvcmRzKToKKyAgICAgICAgKHByaW50UHJvcHMpOgor
ICAgICAgICAoZnJvbnRlbmRfZ2V0VGltZWxpbmVSZXN1bHRzKToKKwogMjAwOS0xMS0xNSAgQ2hy
aXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGluZyBicm9r
ZW4gbGF5b3V0IHRlc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKaW5k
ZXggZjg3YmJjMC4uNmU5NzllMyAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dC5qcwpAQCAtNiw1MiArNiwxOCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogCi0vLyBXZSBp
Z25vcmUgaW5pdGlhbCBsb2FkIG9mIHRoZSBwYWdlLCBlbmFibGUgaW5zcGVjdG9yIGFuZCBpbml0
aWF0ZSByZWxvYWQuIFRoaXMgYWxsb3dzIGluc3BlY3RvciBjb250cm9sbGVyCi0vLyB0byBjYXB0
dXJlIGV2ZW50cyB0aGF0IGhhcHBlbiBkdXJpbmcgdGhlIGluaXRpYWwgcGFnZSBsb2FkLgotdmFy
IGlnbm9yZUxvYWQgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCI/cmVsb2FkIikgPT09
IC0xOwotaWYgKGlnbm9yZUxvYWQpIHsKLSAgICAvLyBTdGFydCBpbiBhIHRpbWVyLCBhcyBzeW5j
aHJvbm91cyBvcGVuaW5nIG9mIHdlYiBpbnNwZWN0b3IgbWF5IGZhaWwgb24gV2luZG93cwotICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVj
dG9yKCk7Ci0gICAgfSwgMCk7Ci19Ci0KIGZ1bmN0aW9uIG9ubG9hZCgpCiB7Ci0gICAgaWYgKGln
bm9yZUxvYWQpIHsKLSAgICAgICAgLy8gSW5qZWN0IHNjcmlwdHMgaW50byB0aGUgZnJvbnRlbmQg
b24gdGhlIGZpcnN0IHBhc3MuICBTb21lIG90aGVyIGxvZ2ljIG1heSB3YW50IHRvCi0gICAgICAg
IC8vIHVzZSB0aGVtIGJlZm9yZSB0aGUgcmVsb2FkLgotICAgICAgICB2YXIgdG9JbmplY3QgPSBb
XTsKLSAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB3aW5kb3cpIHsKLSAgICAgICAgICAgIGlmIChu
YW1lLmluZGV4T2YoImZyb250ZW5kXyIpID09PSAwICYmIHR5cGVvZiB3aW5kb3dbbmFtZV0gPT09
ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICAgICAgdG9JbmplY3QucHVzaCh3aW5kb3dbbmFtZV0u
dG9TdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSW52b2tlIGEgc2V0dXAgbWV0aG9k
IGlmIGl0IGhhcyBiZWVuIHNwZWNpZmllZAotICAgICAgICBpZiAod2luZG93WyJmcm9udGVuZF9z
ZXR1cCJdKSAKLSAgICAgICAgICAgIHRvSW5qZWN0LnB1c2goImZyb250ZW5kX3NldHVwKCk7Iik7
Ci0KLSAgICAgICAgZXZhbHVhdGVJbldlYkluc3BlY3Rvcih0b0luamVjdC5qb2luKCJcbiIpLCBm
dW5jdGlvbihhcmcpIHsKLSAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmICs9ICI/cmVs
b2FkIjsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICB2YXIgb3V0
cHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIG91dHB1dEVs
ZW1lbnQuaWQgPSAib3V0cHV0IjsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG91dHB1
dEVsZW1lbnQpOwogCi0gICAgLy8gTWFrZSBzdXJlIHdlYiBpbnNwZWN0b3IgaGFzIHNldHRsZWQg
ZG93biBiZWZvcmUgZXhlY3V0aW5nIHVzZXIgY29kZQotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0
b3IoInRydWUiLCBkb2l0KTsKLQotICAgIC8vIE1ha2Ugc3VyZSB3ZWIgaW5zcGVjdG9yIHdpbmRv
dyBpcyBjbG9zZWQgYmVmb3JlIHRoZSB0ZXN0IGlzIGludGVycnVwdGVkLgotICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFsZXJ0KCJJbnRlcm5hbCB0aW1lb3V0IGV4Y2VlZGVk
LiIpCi0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7Ci0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLSAgICB9LCAx
MDAwMCk7CisgICAgdmFyIHRvSW5qZWN0ID0gW107CisgICAgZm9yICh2YXIgbmFtZSBpbiB3aW5k
b3cpIHsKKyAgICAgICAgaWYgKG5hbWUuaW5kZXhPZigiZnJvbnRlbmRfIikgPT09IDAgJiYgdHlw
ZW9mIHdpbmRvd1tuYW1lXSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHRvSW5qZWN0LnB1
c2god2luZG93W25hbWVdLnRvU3RyaW5nKCkpOworICAgIH0KKyAgICBldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKHRvSW5qZWN0LmpvaW4oIlxuIiksIGRvaXQpOwogfQogCiBmdW5jdGlvbiBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKHNjcmlwdCwgY2FsbGJhY2spCkBAIC02MSwxNiArMjcsMTYgQEAgZnVu
Y3Rpb24gZXZhbHVhdGVJbldlYkluc3BlY3RvcihzY3JpcHQsIGNhbGxiYWNrKQogICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ldmFsdWF0ZUluV2ViSW5zcGVj
dG9yKGNhbGxJZCwgc2NyaXB0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbGJhY2so
KTsKICAgICB9LCAwKTsKIH0KIAogZnVuY3Rpb24gbm90aWZ5RG9uZSgpCiB7CiAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xvc2VXZWJJbnNwZWN0b3Io
KTsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfQogICAgIH0sIDAp
OwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3RpbWVs
aW5lLWlmcmFtZS1kYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Rp
bWVsaW5lLWlmcmFtZS1kYXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNzRmMTZhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZXMvdGltZWxpbmUtaWZyYW1lLWRhdGEuaHRtbApAQCAtMCwwICsxLDE3IEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdD4KK2NvbnNvbGUubWFya1RpbWVsaW5lKCJTQ1JJUFQgVEFHIik7CisK
K2Z1bmN0aW9uIGlmcmFtZU9ubG9hZCgpCit7CisgICAgd2luZG93LnBhcmVudC5pZnJhbWVMb2Fk
ZWQgPSB0cnVlOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0iaWZyYW1l
T25sb2FkKCkiPgorICAgIDxkaXY+Rm9vPC9kaXY+Cis8L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1sYXlvdXQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLWxheW91dC1leHBlY3RlZC50eHQKaW5k
ZXggYWQ2NTEzMy4uNTFjMTBkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lLWxheW91dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lLWxheW91dC1leHBlY3RlZC50eHQKQEAgLTUsNCArNSw0IEBAIExheW91dCBQcm9wZXJ0
aWVzOgogKyBjaGlsZHJlbiA6ICogREVGSU5FRCAqCiArIGVuZFRpbWUgOiAqIERFRklORUQgKgog
KyB0eXBlIDogMQotCitUZXN0IGRhdGEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci90aW1lbGluZS1sYXlvdXQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1s
YXlvdXQuaHRtbAppbmRleCA5NDU4YmRmLi44MjJmMmQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdGltZWxpbmUtbGF5b3V0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RpbWVsaW5lLWxheW91dC5odG1sCkBAIC00LDI1ICs0LDE2IEBACiA8c2NyaXB0IHNyYz0i
dGltZWxpbmUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBhbmFseXpl
VGltZWxpbmVEYXRhKHRpbWVsaW5lUmVjb3JkcykgCitmdW5jdGlvbiBwZXJmb3JtQWN0aW9ucygp
CiB7Ci0gICAgLy8gVW5jb21tZW50IHRvIGRlYnVnZ2luZyB0aGUgbGlzdCBvZiBkYXRhIHJldHVy
bmVkLgotICAgIC8vIGR1bXBUaW1lbGluZVJlY29yZHModGltZWxpbmVSZWNvcmRzKTsKLQotICAg
IC8vIFNlYXJjaCBmb3IgdGhlIGZpcnN0IExheW91dCByZWNvcmQgeW91IGNhbiBmaW5kCi0gICAg
dmFyIG51bVJlY29yZHMgPSB0aW1lbGluZVJlY29yZHMubGVuZ3RoOwotICAgIGZvciAodmFyIGkg
PSAwIDsgaSA8IG51bVJlY29yZHM7ICsraSkgewotICAgICAgICB2YXIgcmVjb3JkID0gdGltZWxp
bmVSZWNvcmRzW2ldOwotICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRS
ZWNvcmRUeXBlLkxheW91dCkgewotICAgICAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZFByb3Bl
cnRpZXMocmVjb3JkKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQorICAg
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVu
dC5pbm5lckhUTUwgPSAiVGVzdCBkYXRhIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGVsZW1lbnQpOwogfQogCiBmdW5jdGlvbiBkb2l0KCkgCiB7Ci0gICAgcmV0cmlldmVUaW1lbGlu
ZURhdGEoYW5hbHl6ZVRpbWVsaW5lRGF0YSk7CisgICAgcHJpbnRUaW1lbGluZVJlY29yZHMocGVy
Zm9ybUFjdGlvbnMsICJMYXlvdXQiKTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbWFyay10aW1lbGluZS5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3RpbWVsaW5lLW1hcmstdGltZWxpbmUuaHRtbAppbmRleCA1M2IwOThiLi5k
YThjNDEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbWFyay10
aW1lbGluZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1tYXJrLXRp
bWVsaW5lLmh0bWwKQEAgLTQsNDIgKzQsMTQgQEAKIDxzY3JpcHQgc3JjPSJ0aW1lbGluZS10ZXN0
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLXZhciB0aW1lbGluZU1hcmsgPSAiTUFSSyBUSU1F
TElORSI7Ci0KLWZ1bmN0aW9uIGZpbmRNYXJrVGltZWxpbmUocmVjb3JkKSAKK2Z1bmN0aW9uIHBl
cmZvcm1BY3Rpb25zKCkKIHsKLSAgICBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRS
ZWNvcmRUeXBlLk1hcmtUaW1lbGluZSAmJiByZWNvcmQuZGF0YS5tZXNzYWdlID09PSB0aW1lbGlu
ZU1hcmspIHsKLSAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZFByb3BlcnRpZXMocmVjb3JkKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgdmFyIG51bUNoaWxkcmVuID0gcmVj
b3JkLmNoaWxkcmVuID8gcmVjb3JkLmNoaWxkcmVuLmxlbmd0aCA6IDA7Ci0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7Ci0gICAgICAgIGlmIChmaW5kTWFya1RpbWVs
aW5lKHJlY29yZC5jaGlsZHJlbltpXSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1mdW5jdGlvbiBhbmFseXplVGltZWxpbmVEYXRhKHRp
bWVsaW5lUmVjb3JkcykgCi17Ci0gICAgLy8gVW5jb21tZW50IHRvIGRlYnVnZ2luZyB0aGUgbGlz
dCBvZiBkYXRhIHJldHVybmVkLgotICAgIC8vIGR1bXBUaW1lbGluZVJlY29yZHModGltZWxpbmVS
ZWNvcmRzKTsKLQotICAgIHZhciBmb3VuZCA9IGZhbHNlOwotICAgIHZhciBudW1SZWNvcmRzID0g
dGltZWxpbmVSZWNvcmRzLmxlbmd0aDsKLSAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBudW1SZWNv
cmRzOyArK2kpIHsKLSAgICAgICAgdmFyIHJlY29yZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsKLSAg
ICAgICAgaWYgKGZvdW5kID0gZmluZE1hcmtUaW1lbGluZShyZWNvcmQpKQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIGlmICghZm91bmQpCi0gICAgICAgIG91dHB1dCgiQ291bGRuJ3Qg
ZmluZCB0aW1lbGluZSBtYXJrOiAiICsgdGltZWxpbmVNYXJrKTsKKyAgICBjb25zb2xlLm1hcmtU
aW1lbGluZSgiTUFSSyBUSU1FTElORSIpOwogfQogCiBmdW5jdGlvbiBkb2l0KCkgCiB7Ci0gICAg
cmV0cmlldmVUaW1lbGluZURhdGEoYW5hbHl6ZVRpbWVsaW5lRGF0YSk7CisgICAgcHJpbnRUaW1l
bGluZVJlY29yZHMocGVyZm9ybUFjdGlvbnMsICJNYXJrVGltZWxpbmUiKTsKIH0KIAogPC9zY3Jp
cHQ+CkBAIC01MCw5ICsyMiw1IEBAIGZ1bmN0aW9uIGRvaXQoKQogVGVzdHMgdGhlIFRpbWVsaW5l
IEFQSSBtYXJrIGZlYXR1cmUKIDwvcD4KIAotPHNjcmlwdD4KLSAgICBjb25zb2xlLm1hcmtUaW1l
bGluZSh0aW1lbGluZU1hcmspOwotPC9zY3JpcHQ+Ci0KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1wYWludC5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXBhaW50Lmh0bWwKaW5kZXggYWM4NDk0MS4uMjFkODky
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXBhaW50Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXBhaW50Lmh0bWwKQEAgLTQsMjUg
KzQsMTUgQEAKIDxzY3JpcHQgc3JjPSJ0aW1lbGluZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQ+CiAKLWZ1bmN0aW9uIGFuYWx5emVUaW1lbGluZURhdGEodGltZWxpbmVSZWNvcmRzKSAKK2Z1
bmN0aW9uIHBlcmZvcm1BY3Rpb25zKCkKIHsKLSAgICAvLyBVbmNvbW1lbnQgdG8gZGVidWdnaW5n
IHRoZSBsaXN0IG9mIGRhdGEgcmV0dXJuZWQuCi0gICAgLy8gZHVtcFRpbWVsaW5lUmVjb3Jkcyh0
aW1lbGluZVJlY29yZHMpOwotCi0gICAgLy8gU2VhcmNoIGZvciB0aGUgZmlyc3QgUGFpbnQgcmVj
b3JkIHlvdSBjYW4gZmluZAotICAgIHZhciBudW1SZWNvcmRzID0gdGltZWxpbmVSZWNvcmRzLmxl
bmd0aDsKLSAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBudW1SZWNvcmRzOyArK2kpIHsKLSAgICAg
ICAgdmFyIHJlY29yZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsKLSAgICAgICAgaWYgKHJlY29yZC50
eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5QYWludCkgewotICAgICAgICAgICAgcHJp
bnRUaW1lbGluZVJlY29yZFByb3BlcnRpZXMocmVjb3JkKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgfQorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKIH0KIAogZnVuY3Rpb24gZG9p
dCgpIAogewotICAgIHJldHJpZXZlVGltZWxpbmVEYXRhKGFuYWx5emVUaW1lbGluZURhdGEpOwor
ICAgIHByaW50VGltZWxpbmVSZWNvcmRzKHBlcmZvcm1BY3Rpb25zLCAiUGFpbnQiKTsKIH0KIAog
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtcGFy
c2UtaHRtbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtcGFy
c2UtaHRtbC1leHBlY3RlZC50eHQKaW5kZXggOThjMzM3Yi4uZDQyYThlNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1wYXJzZS1odG1sLWV4cGVjdGVkLnR4
dApAQCAtNSw0ICs1LDQgQEAgUGFyc2VIVE1MIFByb3BlcnRpZXM6CiArIGNoaWxkcmVuIDogKiBE
RUZJTkVEICoKICsgZW5kVGltZSA6ICogREVGSU5FRCAqCiArIHR5cGUgOiA0Ci0KK1Rlc3QgZGF0
YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1wYXJzZS1odG1sLmh0bWwKaW5k
ZXggNzE1ZWI2Yy4uMTFkOGY1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lLXBhcnNlLWh0bWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxp
bmUtcGFyc2UtaHRtbC5odG1sCkBAIC00LDI1ICs0LDE2IEBACiA8c2NyaXB0IHNyYz0idGltZWxp
bmUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1mdW5jdGlvbiBhbmFseXplVGltZWxp
bmVEYXRhKHRpbWVsaW5lUmVjb3JkcykgCitmdW5jdGlvbiBwZXJmb3JtQWN0aW9ucygpCiB7Ci0g
ICAgLy8gVW5jb21tZW50IHRvIGRlYnVnZ2luZyB0aGUgbGlzdCBvZiBkYXRhIHJldHVybmVkLgot
ICAgIC8vIGR1bXBUaW1lbGluZVJlY29yZHModGltZWxpbmVSZWNvcmRzKTsKLQotICAgIC8vIFNl
YXJjaCBmb3IgdGhlIGZpcnN0IFBhcnNlSFRNTCByZWNvcmQgeW91IGNhbiBmaW5kCi0gICAgdmFy
IG51bVJlY29yZHMgPSB0aW1lbGluZVJlY29yZHMubGVuZ3RoOwotICAgIGZvciAodmFyIGkgPSAw
IDsgaSA8IG51bVJlY29yZHM7ICsraSkgewotICAgICAgICB2YXIgcmVjb3JkID0gdGltZWxpbmVS
ZWNvcmRzW2ldOwotICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNv
cmRUeXBlLlBhcnNlSFRNTCkgewotICAgICAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZFByb3Bl
cnRpZXMocmVjb3JkKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQorICAg
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVu
dC5pbm5lckhUTUwgPSAiVGVzdCBkYXRhIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGVsZW1lbnQpOwogfQogCiBmdW5jdGlvbiBkb2l0KCkgCiB7Ci0gICAgcmV0cmlldmVUaW1lbGlu
ZURhdGEoYW5hbHl6ZVRpbWVsaW5lRGF0YSk7CisgICAgcHJpbnRUaW1lbGluZVJlY29yZHMocGVy
Zm9ybUFjdGlvbnMsICJQYXJzZUhUTUwiKTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtcmVjYWxjdWxhdGUtc3R5bGVzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1yZWNhbGN1bGF0ZS1zdHlsZXMt
ZXhwZWN0ZWQudHh0CmluZGV4IGIzOGRjZWQuLmU1MzJhMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci90aW1lbGluZS1yZWNhbGN1bGF0ZS1zdHlsZXMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1yZWNhbGN1bGF0ZS1zdHlsZXMtZXhw
ZWN0ZWQudHh0CkBAIC01LDQgKzUsNCBAQCBSZWNhbGN1bGF0ZVN0eWxlcyBQcm9wZXJ0aWVzOgog
KyBjaGlsZHJlbiA6ICogREVGSU5FRCAqCiArIGVuZFRpbWUgOiAqIERFRklORUQgKgogKyB0eXBl
IDogMgotCitUZXN0IGRhdGEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS1yZWNhbGN1bGF0ZS1zdHlsZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS1yZWNhbGN1bGF0ZS1zdHlsZXMuaHRtbAppbmRleCAxMmZhMWVmLi5jNGU0ZDM0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtcmVjYWxjdWxhdGUtc3R5bGVz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXJlY2FsY3VsYXRlLXN0
eWxlcy5odG1sCkBAIC0yLDI3ICsyLDI2IEBACiA8aGVhZD4KIDxzY3JpcHQgc3JjPSJpbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0idGltZWxpbmUtdGVzdC5qcyI+PC9z
Y3JpcHQ+CisKKzxzdHlsZT4KKy50ZXN0LXN0eWxlIHsKKyAgICBjb2xvcjogcmVkOworfQorPC9z
dHlsZT4KKwogPHNjcmlwdD4KIAotZnVuY3Rpb24gYW5hbHl6ZVRpbWVsaW5lRGF0YSh0aW1lbGlu
ZVJlY29yZHMpIAorZnVuY3Rpb24gcGVyZm9ybUFjdGlvbnMoKQogewotICAgIC8vIFVuY29tbWVu
dCB0byBkZWJ1Z2dpbmcgdGhlIGxpc3Qgb2YgZGF0YSByZXR1cm5lZC4KLSAgICAvLyBkdW1wVGlt
ZWxpbmVSZWNvcmRzKHRpbWVsaW5lUmVjb3Jkcyk7Ci0KLSAgICAvLyBTZWFyY2ggZm9yIHRoZSBm
aXJzdCBSZWNhbGN1bGF0ZVN0eWxlcyByZWNvcmQgeW91IGNhbiBmaW5kCi0gICAgdmFyIG51bVJl
Y29yZHMgPSB0aW1lbGluZVJlY29yZHMubGVuZ3RoOwotICAgIGZvciAodmFyIGkgPSAwIDsgaSA8
IG51bVJlY29yZHM7ICsraSkgewotICAgICAgICB2YXIgcmVjb3JkID0gdGltZWxpbmVSZWNvcmRz
W2ldOwotICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBl
LlJlY2FsY3VsYXRlU3R5bGVzKSB7Ci0gICAgICAgICAgICBwcmludFRpbWVsaW5lUmVjb3JkUHJv
cGVydGllcyhyZWNvcmQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Cisg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbGVt
ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXN0eWxlIjsKKyAgICBlbGVtZW50LmlubmVySFRNTCA9ICJU
ZXN0IGRhdGEiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiB9CiAK
IGZ1bmN0aW9uIGRvaXQoKSAKIHsKLSAgICByZXRyaWV2ZVRpbWVsaW5lRGF0YShhbmFseXplVGlt
ZWxpbmVEYXRhKTsKKyAgICBwcmludFRpbWVsaW5lUmVjb3JkcyhwZXJmb3JtQWN0aW9ucywgIlJl
Y2FsY3VsYXRlU3R5bGVzIik7CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0xLWV4cGVjdGVkLnR4dAppbmRleCAz
MDExNDQxLi5iZGZhNWI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxp
bmUtc2NyaXB0LXRhZy0xLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dGltZWxpbmUtc2NyaXB0LXRhZy0xLWV4cGVjdGVkLnR4dApAQCAtMywxMiArMywxMSBAQCBUZXN0
cyB0aGUgVGltZWxpbmUgQVBJIGluc3RydW1lbnRhdGlvbiBvZiBhbiBIVE1MIHNjcmlwdCB0YWcu
CiBQYXJzZUhUTUwKIC0tLS0+IEV2YWx1YXRlU2NyaXB0CiAtLS0tLS0tLT4gTWFya1RpbWVsaW5l
IDogU0NSSVBUIFRBRwotCiBFdmFsdWF0ZVNjcmlwdCBQcm9wZXJ0aWVzOgogKyBzdGFydFRpbWUg
OiAqIERFRklORUQgKgogKyBkYXRhIDogewogKy0gdXJsIDogKiBERUZJTkVEICoKLSstIGxpbmVO
dW1iZXIgOiA3NgorKy0gbGluZU51bWJlciA6IDMKICsgfQogKyBjaGlsZHJlbiA6ICogREVGSU5F
RCAqCiArIGVuZFRpbWUgOiAqIERFRklORUQgKgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lLXNjcmlwdC10YWctMS5odG1sCmluZGV4IGY4ZWY3YjcuLjhlYTFhMzYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTEuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0xLmh0bWwKQEAg
LTMsNjYgKzMsMzYgQEAKIDxzY3JpcHQgc3JjPSJpbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0idGltZWxpbmUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotdmFy
IHRpbWVsaW5lTWFyayA9ICJTQ1JJUFQgVEFHIjsKIAotZnVuY3Rpb24gYW5hbHl6ZUV2YWx1YXRl
U2NyaXB0KHJlY29yZCkgCitmdW5jdGlvbiBydW5BZnRlcklmcmFtZUlzTG9hZGVkKGNvbnRpbnVh
dGlvbikKIHsKLSAgICB2YXIgbnVtQ2hpbGRyZW4gPSByZWNvcmQuY2hpbGRyZW4gPyByZWNvcmQu
Y2hpbGRyZW4ubGVuZ3RoIDogMDsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUNoaWxkcmVu
OyArK2kpIHsKLSAgICAgICAgdmFyIGNoaWxkID0gcmVjb3JkLmNoaWxkcmVuW2ldOwotICAgICAg
ICBpZiAoY2hpbGQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5cGUuTWFya1RpbWVsaW5l
Ci0gICAgICAgICAgICAmJiBjaGlsZC5kYXRhLm1lc3NhZ2UgPT09IHRpbWVsaW5lTWFyawotICAg
ICAgICAgICAgJiYgcmVjb3JkLmRhdGEudXJsLmluZGV4T2YoInRpbWVsaW5lLXNjcmlwdC10YWct
MS5odG1sIikgIT09IC0xKSB7Ci0KLSAgICAgICAgICAgIC8vIEZpbmlzaCBwcmludGluZyB0aGUg
cmVjb3JkIGFzIGEgdHJlZQotICAgICAgICAgICAgZHVtcFRpbWVsaW5lUmVjb3JkKHJlY29yZCwg
MSk7Ci0gICAgICAgICAgICBvdXRwdXQoIiIpOwotCi0gICAgICAgICAgICAvLyBOb3cgcHJpbnQg
dGhlIGltcG9ydGFudCBmaWVsZHMgb2YgdGhlIHJlY29yZAotICAgICAgICAgICAgcHJpbnRUaW1l
bGluZVJlY29yZFByb3BlcnRpZXMocmVjb3JkKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotZnVuY3Rpb24gYW5hbHl6
ZVBhcnNlSFRNTChyZWNvcmQpIAotewotICAgIC8vIE5vdywgZHVtcCB0aGUgc3BlY2lmaWMgU2Ny
aXB0IHRhZyB0aGF0IGluY2x1ZGVzIHRoZSBNYXJrZXIgYW5kIGR1bXAgaXQgaW4gZGV0YWlsLgot
ICAgIHZhciBudW1DaGlsZHJlbiA9IHJlY29yZC5jaGlsZHJlbiA/IHJlY29yZC5jaGlsZHJlbi5s
ZW5ndGggOiAwOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewot
ICAgICAgICB2YXIgY2hpbGQgPSByZWNvcmQuY2hpbGRyZW5baV07Ci0gICAgICAgIGlmIChjaGls
ZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5FdmFsdWF0ZVNjcmlwdCkKLSAgICAg
ICAgICAgIGlmIChhbmFseXplRXZhbHVhdGVTY3JpcHQoY2hpbGQpKQotICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19ICAKLQotLy8gTG9vayBm
b3IgdGhlIFBhcnNlSHRtbC0+RXZhbHVhdGVTY3JpcHQtPk1hcmtUaW1lbGluZSB0aGF0IGNvcnJl
bGF0ZXMgCi0vLyB0byB0aGUgPHNjcmlwdD4gdGFnIGJlbG93LgotZnVuY3Rpb24gYW5hbHl6ZVRp
bWVsaW5lRGF0YSh0aW1lbGluZVJlY29yZHMpIAotewotICAgIC8vIFVuY29tbWVudCB0byBkZWJ1
Z2dpbmcgdGhlIGxpc3Qgb2YgZGF0YSByZXR1cm5lZC4KLSAgICAvLyBkdW1wVGltZWxpbmVSZWNv
cmRzKHRpbWVsaW5lUmVjb3Jkcyk7Ci0KLSAgICAvLyBTZWFyY2ggZm9yIGEgUGFyc2VIVE1MIHJl
Y29yZAotICAgIHZhciBudW1SZWNvcmRzID0gdGltZWxpbmVSZWNvcmRzLmxlbmd0aDsKLSAgICBm
b3IgKHZhciBpID0gMCA7IGkgPCBudW1SZWNvcmRzOyArK2kpIHsKLSAgICAgICAgdmFyIHJlY29y
ZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsKLSAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSB0aW1l
bGluZUFnZW50UmVjb3JkVHlwZS5QYXJzZUhUTUwpIHsKLSAgICAgICAgICAgIC8vIFVuY29tbWVu
dCB0byBkZWJ1ZyB0aGUgUGFyc2VIVE1MIGRhdGEgcmVjb3JkCi0gICAgICAgICAgICAvLyBkdW1w
VGltZWxpbmVSZWNvcmQocmVjb3JkLCAwKTsKLSAgICAgICAgICAgIG91dHB1dCgiUGFyc2VIVE1M
Iik7Ci0gICAgICAgICAgICBpZiAoIWFuYWx5emVQYXJzZUhUTUwocmVjb3JkKSkKLSAgICAgICAg
ICAgICAgICBvdXRwdXQoIkZhaWxlZCB0byBmaW5kIHRpbWVsaW5lIG1hcms6ICIgKyB0aW1lbGlu
ZU1hcmspOwotICAgICAgICB9CisgICAgZnVuY3Rpb24gc3RlcCgpCisgICAgeworICAgICAgICBp
ZiAoIXdpbmRvdy5pZnJhbWVMb2FkZWQpCisgICAgICAgICAgICBzZXRUaW1lb3V0KHN0ZXAsIDEw
MCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnRpbnVhdGlvbigpOwogICAgIH0KKyAg
ICBzZXRUaW1lb3V0KHN0ZXAsIDEwMCk7CiB9CiAKIGZ1bmN0aW9uIGRvaXQoKSAKIHsKLSAgICBy
ZXRyaWV2ZVRpbWVsaW5lRGF0YShhbmFseXplVGltZWxpbmVEYXRhKTsKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRU
aW1lbGluZVByb2ZpbGluZ0VuYWJsZWQodHJ1ZSk7CisKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgaWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMv
dGltZWxpbmUtaWZyYW1lLWRhdGEuaHRtbCI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChpZnJhbWUpOworCisgICAgcnVuQWZ0ZXJJZnJhbWVJc0xvYWRlZChmdW5jdGlvbigpIHsKKyAg
ICAgICAgcHJpbnRUaW1lbGluZVJlY29yZHMobnVsbCwgbnVsbCwgZnVuY3Rpb24ocmVjb3JkKSB7
CisgICAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBl
LkV2YWx1YXRlU2NyaXB0KQorICAgICAgICAgICAgICAgIHByaW50VGltZWxpbmVSZWNvcmRQcm9w
ZXJ0aWVzKHJlY29yZCk7CisgICAgICAgICAgICBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gdGlt
ZWxpbmVBZ2VudFJlY29yZFR5cGUuUGFyc2VIVE1MKQorICAgICAgICAgICAgICAgIGR1bXBUaW1l
bGluZVJlY29yZChyZWNvcmQpOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogPC9zY3JpcHQ+
CkBAIC03Myw5ICs0Myw1IEBAIGZ1bmN0aW9uIGRvaXQoKQogVGVzdHMgdGhlIFRpbWVsaW5lIEFQ
SSBpbnN0cnVtZW50YXRpb24gb2YgYW4gSFRNTCBzY3JpcHQgdGFnLgogPC9wPgogCi08c2NyaXB0
PgotICAgICAvLyBNYXJrIHRoaXMgc2NyaXB0IHRhZyBzbyB3ZSBjYW4gZmluZCBpdCBpbiB0aGUg
dGltZWxpbmUgZGF0YS4KLSAgICAgY29uc29sZS5tYXJrVGltZWxpbmUodGltZWxpbmVNYXJrKTsK
LTwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0yLWV4cGVjdGVkLnR4dAppbmRleCAxZDIxNTM3
Li5hY2Q3ZjE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2Ny
aXB0LXRhZy0yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxp
bmUtc2NyaXB0LXRhZy0yLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDUgQEAKIFRlc3RzIHRoZSBU
aW1lbGluZSBBUEkgaW5zdHJ1bWVudGF0aW9uIG9mIGEgc2NyaXB0IHRhZyB3aXRoIGFuIGV4dGVy
bmFsIHNjcmlwdC4KIAotUGFyc2VIVE1MCi0tLS0tPiBFdmFsdWF0ZVNjcmlwdAotLS0tLS0tLS0+
IE1hcmtUaW1lbGluZSA6IFNDUklQVCBUQUcKLQogRXZhbHVhdGVTY3JpcHQgUHJvcGVydGllczoK
ICsgc3RhcnRUaW1lIDogKiBERUZJTkVEICoKICsgZGF0YSA6IHsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTIuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTIuaHRtbAppbmRleCAxOTZiNjVmLi4wM2Mx
YmZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRh
Zy0yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWct
Mi5odG1sCkBAIC0zLDY1ICszLDMxIEBACiA8c2NyaXB0IHNyYz0iaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InRpbWVsaW5lLXRlc3QuanMiPjwvc2NyaXB0PgogPHNj
cmlwdD4KLXZhciB0aW1lbGluZU1hcmsgPSAiU0NSSVBUIFRBRyI7CiAKLWZ1bmN0aW9uIGFuYWx5
emVFdmFsdWF0ZVNjcmlwdChyZWNvcmQpIAorZnVuY3Rpb24gcnVuQWZ0ZXJTY3JpcHRJc0V2YWx1
YXRlZChjb250aW51YXRpb24pCiB7Ci0gICAgdmFyIG51bUNoaWxkcmVuID0gcmVjb3JkLmNoaWxk
cmVuID8gcmVjb3JkLmNoaWxkcmVuLmxlbmd0aCA6IDA7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBudW1DaGlsZHJlbjsgKytpKSB7Ci0gICAgICAgIHZhciBjaGlsZCA9IHJlY29yZC5jaGlsZHJl
bltpXTsKLSAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBl
Lk1hcmtUaW1lbGluZQotICAgICAgICAgICAgJiYgY2hpbGQuZGF0YS5tZXNzYWdlID09PSB0aW1l
bGluZU1hcmsKLSAgICAgICAgICAgICYmIHJlY29yZC5kYXRhLnVybC5pbmRleE9mKCJ0aW1lbGlu
ZS1zY3JpcHQtdGFnLTIuanMiKSAhPT0gLTEpIHsKLQotICAgICAgICAgICAgLy8gRmluaXNoIHBy
aW50aW5nIHRoZSByZWNvcmQgYXMgYSB0cmVlCi0gICAgICAgICAgICBkdW1wVGltZWxpbmVSZWNv
cmQocmVjb3JkLCAxKTsKLSAgICAgICAgICAgIG91dHB1dCgiIik7Ci0KLSAgICAgICAgICAgIC8v
IE5vdyBwcmludCB0aGUgaW1wb3J0YW50IGZpZWxkcyBvZiB0aGUgcmVjb3JkCi0gICAgICAgICAg
ICBwcmludFRpbWVsaW5lUmVjb3JkUHJvcGVydGllcyhyZWNvcmQpOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICBmdW5jdGlvbiBzdGVwKCkKKyAgICB7CisgICAgICAg
IGlmICghd2luZG93LnNjcmlwdEV2YWx1YXRlZCkKKyAgICAgICAgICAgIHNldFRpbWVvdXQoc3Rl
cCwgMTAwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29udGludWF0aW9uKCk7CiAgICAg
fQotICAgIHJldHVybiBmYWxzZTsKKyAgICBzZXRUaW1lb3V0KHN0ZXAsIDEwMCk7CiB9CiAKLWZ1
bmN0aW9uIGFuYWx5emVQYXJzZUhUTUwocmVjb3JkKSAKLXsKLSAgICB2YXIgbnVtQ2hpbGRyZW4g
PSByZWNvcmQuY2hpbGRyZW4gPyByZWNvcmQuY2hpbGRyZW4ubGVuZ3RoIDogMDsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKLSAgICAgICAgdmFyIGNoaWxkID0g
cmVjb3JkLmNoaWxkcmVuW2ldOwotICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gdGltZWxpbmVB
Z2VudFJlY29yZFR5cGUuRXZhbHVhdGVTY3JpcHQpCi0gICAgICAgICAgICBpZiAoYW5hbHl6ZUV2
YWx1YXRlU2NyaXB0KGNoaWxkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOwotfSAgCi0KLS8vIExvb2sgZm9yIHRoZSBQYXJzZUh0bWwtPkV2
YWx1YXRlU2NyaXB0LT5NYXJrVGltZWxpbmUgdGhhdCBjb3JyZWxhdGVzIAotLy8gdG8gdGhlIDxz
Y3JpcHQ+IHRhZyBiZWxvdy4KLWZ1bmN0aW9uIGFuYWx5emVUaW1lbGluZURhdGEodGltZWxpbmVS
ZWNvcmRzKSAKK2Z1bmN0aW9uIGRvaXQoKSAKIHsKLSAgICAvLyBVbmNvbW1lbnQgdG8gZGVidWdn
aW5nIHRoZSBsaXN0IG9mIGRhdGEgcmV0dXJuZWQuCi0gICAgLy8gZHVtcFRpbWVsaW5lUmVjb3Jk
cyh0aW1lbGluZVJlY29yZHMpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxl
ZCh0cnVlKTsKIAotICAgIC8vIFNlYXJjaCBmb3IgYSBQYXJzZUhUTUwgcmVjb3JkCi0gICAgdmFy
IG51bVJlY29yZHMgPSB0aW1lbGluZVJlY29yZHMubGVuZ3RoOwotICAgIGZvciAodmFyIGkgPSAw
IDsgaSA8IG51bVJlY29yZHM7ICsraSkgewotICAgICAgICB2YXIgcmVjb3JkID0gdGltZWxpbmVS
ZWNvcmRzW2ldOwotICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNv
cmRUeXBlLlBhcnNlSFRNTCkgewotICAgICAgICAgICAgLy8gVW5jb21tZW50IHRvIGRlYnVnIHRo
ZSBQYXJzZUhUTUwgZGF0YSByZWNvcmQKLSAgICAgICAgICAgIC8vIGR1bXBUaW1lbGluZVJlY29y
ZChyZWNvcmQsIDApOwotICAgICAgICAgICAgb3V0cHV0KCJQYXJzZUhUTUwiKTsKLSAgICAgICAg
ICAgIGlmICghYW5hbHl6ZVBhcnNlSFRNTChyZWNvcmQpKQotICAgICAgICAgICAgICAgIG91dHB1
dCgiRmFpbGVkIHRvIGZpbmQgdGltZWxpbmUgbWFyazogIiArIHRpbWVsaW5lTWFyayk7Ci0gICAg
ICAgIH0KLSAgICB9Ci19CisgICAgdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNjcmlwdCIpOworICAgIHNjcmlwdC5zcmMgPSAidGltZWxpbmUtc2NyaXB0LXRhZy0yLmpzIjsK
KyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7CiAKLWZ1bmN0aW9uIGRvaXQo
KSAKLXsKLSAgICByZXRyaWV2ZVRpbWVsaW5lRGF0YShhbmFseXplVGltZWxpbmVEYXRhKTsKKyAg
ICBydW5BZnRlclNjcmlwdElzRXZhbHVhdGVkKGZ1bmN0aW9uKCkgeworICAgICAgICBwcmludFRp
bWVsaW5lUmVjb3JkcyhudWxsLCAiRXZhbHVhdGVTY3JpcHQiKTsKKyAgICB9KTsKIH0KIAogPC9z
Y3JpcHQ+CkBAIC03Miw2ICszOCw1IEBAIGZ1bmN0aW9uIGRvaXQoKQogVGVzdHMgdGhlIFRpbWVs
aW5lIEFQSSBpbnN0cnVtZW50YXRpb24gb2YgYSBzY3JpcHQgdGFnIHdpdGggYW4gZXh0ZXJuYWwg
c2NyaXB0LgogPC9wPgogCi08c2NyaXB0IHNyYz0idGltZWxpbmUtc2NyaXB0LXRhZy0yLmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTIuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGlt
ZWxpbmUtc2NyaXB0LXRhZy0yLmpzCmluZGV4IDBmYjI3M2YuLjY0MDI0ZjEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTIuanMKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi5qcwpAQCAtMSArMSwyIEBA
Ci1jb25zb2xlLm1hcmtUaW1lbGluZSh0aW1lbGluZU1hcmspOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKK2NvbnNvbGUubWFya1RpbWVsaW5lKCJTQ1JJUFQgVEFHIik7Cit3aW5kb3cuc2Ny
aXB0RXZhbHVhdGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXRlc3QuanMK
aW5kZXggMTk4NjViMi4uMDBiYjc3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3RpbWVsaW5lLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXRl
c3QuanMKQEAgLTEsNyArMSwzIEBACi0vLyBVc2VkIHRvIG1hcmsgdGltZWxpbmUgcmVjb3JkcyBh
cyBiZWxvbmdpbmcgdG8gdGhlIHRlc3QgZnJhbWV3b3JrLgotdmFyIHRpbWVsaW5lT3ZlcmhlYWRN
YXJrID0gIioqKk92ZXJoZWFkKioqIjsKLQotLy8gVGltZWxpbmVBZ2VudCByZWNvcmQgdHlwZSBk
ZWZpbml0aW9ucyBmcm9tIHRoZSBpbnNwZWN0b3IKIHZhciB0aW1lbGluZUFnZW50UmVjb3JkVHlw
ZSA9IHt9OwogCiAvLyBTY3J1YiB2YWx1ZXMgd2hlbiBwcmludGluZyBvdXQgdGhlc2UgcHJvcGVy
dGllcyBpbiB0aGUgcmVjb3JkIG9yIGRhdGEgZmllbGQuCkBAIC0xMiwyNyArOCw0MCBAQCB2YXIg
dGltZWxpbmVOb25EZXRlcm1pbmlzdGljUHJvcHMgPSB7CiAgICAgdXJsIDogMQogfTsKIAotLy8g
Q2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGRvaXQoKSBmdW5jdGlvbiBpbiB0aGUgbWFpbiB0
ZXN0IHBhZ2UuCi0vLyBQYXNzIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGdldCBhbiBhcnJheSBvZiB0
aW1lbGluZSBkYXRhIHRvIHByb2Nlc3MuCi1mdW5jdGlvbiByZXRyaWV2ZVRpbWVsaW5lRGF0YShh
bmFseXplRnVuY3Rpb24pCitmdW5jdGlvbiBwcmludFRpbWVsaW5lUmVjb3JkcyhwZXJmb3JtQWN0
aW9ucywgdHlwZU5hbWUsIGZvcm1hdHRlcikKIHsKKyAgICBpZiAocGVyZm9ybUFjdGlvbnMpIHsK
KyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCh0cnVlKTsKKyAg
ICAgICAgcGVyZm9ybUFjdGlvbnMoKTsKKyAgICB9CisKICAgICBldmFsdWF0ZUluV2ViSW5zcGVj
dG9yKCJXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlIiwgZnVuY3Rpb24ocmVz
dWx0KSB7CiAgICAgICAgIHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlID0gcmVzdWx0OwogICAgIH0p
OwogCi0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfZ2V0VGltZWxpbmVSZXN1
bHRzKCkiLCBmdW5jdGlvbih0aW1lbGluZVJlY29yZHMpIHsKKyAgICBldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKCJmcm9udGVuZF9nZXRUaW1lbGluZVJlc3VsdHMiLCBmdW5jdGlvbih0aW1lbGluZVJl
Y29yZHMpIHsKICAgICAgICAgaWYgKHR5cGVvZih0aW1lbGluZVJlY29yZHMpID09PSAic3RyaW5n
IikKICAgICAgICAgICAgIG91dHB1dCgiRXJyb3IgZmV0Y2hpbmcgVGltZWxpbmUgcmVzdWx0czog
IiArIHRpbWVsaW5lUmVjb3Jkcyk7Ci0gICAgICAgIGVsc2UgCi0gICAgICAgICAgICBhbmFseXpl
RnVuY3Rpb24odGltZWxpbmVSZWNvcmRzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRpbWVsaW5lUmVjb3Jkcy5sZW5ndGg7ICsraSkgeworICAgICAg
ICAgICAgICAgIGlmICh0eXBlTmFtZSAmJiB0aW1lbGluZVJlY29yZHNbaV0udHlwZSA9PT0gdGlt
ZWxpbmVBZ2VudFJlY29yZFR5cGVbdHlwZU5hbWVdKQorICAgICAgICAgICAgICAgICAgICBwcmlu
dFRpbWVsaW5lUmVjb3JkUHJvcGVydGllcyh0aW1lbGluZVJlY29yZHNbaV0pOworICAgICAgICAg
ICAgICAgIGlmIChmb3JtYXR0ZXIpCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcih0aW1l
bGluZVJlY29yZHNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoZmFsc2UpOwogICAgICAgICBub3RpZnlE
b25lKCk7CiAgICAgfSk7Ci0gICAgbWFya1RpbWVsaW5lUmVjb3JkQXNPdmVyaGVhZCgib25sb2Fk
IiArIChpZ25vcmVMb2FkID8gIjppZ25vcmVMb2FkIjogIiIpKTsKIH0KIAogLy8gRHVtcCBqdXN0
IHRoZSByZWNvcmQgbmFtZSwgaW5kZW50aW5nIG91dHB1dCBvbiBzZXBhcmF0ZSBsaW5lcyBmb3Ig
c3VicmVjb3JkcwogZnVuY3Rpb24gZHVtcFRpbWVsaW5lUmVjb3JkKHJlY29yZCwgbGV2ZWwpIAog
eworICAgIGlmICh0eXBlb2YgbGV2ZWwgIT09ICJudW1iZXIiKQorICAgICAgICBsZXZlbCA9IDA7
CiAgICAgdmFyIHByZWZpeCA9ICIiOwogICAgIHZhciBzdWZmaXggPSAiIjsKICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxldmVsIDsgKytpKQpAQCAtNDksMTggKzU4LDExIEBAIGZ1bmN0aW9uIGR1
bXBUaW1lbGluZVJlY29yZChyZWNvcmQsIGxldmVsKQogICAgICAgICBkdW1wVGltZWxpbmVSZWNv
cmQocmVjb3JkLmNoaWxkcmVuW2ldLCBsZXZlbCArIDEpOwogfQogCi0vLyBEdW1wcyBhbiBlbnRp
cmUgbGlzdCBvZiByZWNvcmRzLCBjdWxsaW5nIG91dCB0aG9zZSBtYXJrZWQgYXMgb3ZlcmhlYWQK
IGZ1bmN0aW9uIGR1bXBUaW1lbGluZVJlY29yZHModGltZWxpbmVSZWNvcmRzKSB7Ci0gICAgdmFy
IG51bVJlY29yZHMgPSB0aW1lbGluZVJlY29yZHMubGVuZ3RoOwotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbnVtUmVjb3JkczsgKytpKSB7Ci0gICAgICAgIHZhciByZWNvcmQgPSB0aW1lbGluZVJl
Y29yZHNbaV07Ci0gICAgICAgIGlmICghaXNUaW1lbGluZU92ZXJoZWFkUmVjb3JkKHJlY29yZCkp
Ci0gICAgICAgICAgICBkdW1wVGltZWxpbmVSZWNvcmQocmVjb3JkLCAwKTsKLSAgICB9CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aW1lbGluZVJlY29yZHMubGVuZ3RoOyArK2kpCisgICAgICAg
IGR1bXBUaW1lbGluZVJlY29yZCh0aW1lbGluZVJlY29yZHNbaV0sIDApOwogfQogCi0vLyBTb3J0
IHRoZSBmaWVsZHMsIHRoZW4gc3RyaXAgb3V0IHN0YXJ0VGltZSBhbmQgZW5kVGltZSwgdGhleSBh
cmUgbm90IGRldGVybWluaXN0aWMuCi0vLyBBbHNvIHJlbW92ZSBjaGlsZHJlbiAtIHRoYXQgZmll
bGQgaXNuJ3QgaW1wb3J0YW50IGZvciB0aGUgcHJpbnRvdXQuCiBmdW5jdGlvbiBwcmludFRpbWVs
aW5lUmVjb3JkUHJvcGVydGllcyhyZWNvcmQpCiB7CiAgICAgb3V0cHV0KHRpbWVsaW5lQWdlbnRU
eXBlVG9TdHJpbmcocmVjb3JkLnR5cGUpICsgIiBQcm9wZXJ0aWVzOiIpOwpAQCAtNzUsNyArNzcs
NyBAQCBmdW5jdGlvbiBpc05vbkRldGVybWluaXN0aWNQcm9wKHByb3BOYW1lKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotZnVuY3Rpb24gcHJpbnRQcm9wcyAocmVjb3JkLCBsZXZlbCkKK2Z1bmN0
aW9uIHByaW50UHJvcHMocmVjb3JkLCBsZXZlbCkKIHsKICAgICB2YXIgcHJvcHMgPSBuZXcgQXJy
YXkoKTsKICAgICBmb3IgKHZhciBwcm9wIGluIHJlY29yZCkgewpAQCAtMTAyLDI4ICsxMDQsNiBA
QCBmdW5jdGlvbiBwcmludFByb3BzIChyZWNvcmQsIGxldmVsKQogICAgIH0KIH0KIAotLy8gUmVj
b3JkcyB0aGF0IGhhdmUgYmVlbiBtYXJrZWQgd2l0aCBjb25zb2xlLm1hcmtUaW1lbGluZSh0aW1l
bGluZU1hcmspCi0vLyBhcmUgYSBwYXJ0IG9mIHRoZSB0ZXN0IGZyYW1ld29yayBhbmQgbm90IGEg
cGFydCBvZiB0aGUgdGVzdCBiZWluZyBwZXJmb3JtZWQKLWZ1bmN0aW9uIGlzVGltZWxpbmVPdmVy
aGVhZFJlY29yZChyZWNvcmQpIHsKLSAgICBpZiAocmVjb3JkLnR5cGUgPT09IDExICYmIHJlY29y
ZC5kYXRhLm1lc3NhZ2UuaW5kZXhPZih0aW1lbGluZU92ZXJoZWFkTWFyaykgIT09IC0xKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB2YXIgbnVtQ2hpbGRyZW4gPSByZWNvcmQuY2hpbGRyZW4g
PyAgcmVjb3JkLmNoaWxkcmVuLmxlbmd0aCA6IDA7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
dW1DaGlsZHJlbjsgKytpKSB7Ci0gICAgICAgIGlmIChpc1RpbWVsaW5lT3ZlcmhlYWRSZWNvcmQo
cmVjb3JkLmNoaWxkcmVuW2ldKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vIFRoaXMgbWFyayB3aWxsIGhlbHAgdGhlIHRlc3QgYW5h
bHlzaXMgY3VsbCBvdXQgcmVjb3JkcyB0aGF0IGFyZSBvdmVyaGVhZC4KLWZ1bmN0aW9uIG1hcmtU
aW1lbGluZVJlY29yZEFzT3ZlcmhlYWQoYXJnKQotewotICAgIHZhciBzdWZmaXggPSAnJzsKLSAg
ICBpZiAoYXJnKQotICAgICAgICBzdWZmaXggPSAiOiAiICsgYXJnOwotICAgIGNvbnNvbGUubWFy
a1RpbWVsaW5lKHRpbWVsaW5lT3ZlcmhlYWRNYXJrICsgc3VmZml4KTsKLX0KLQogZnVuY3Rpb24g
dGltZWxpbmVBZ2VudFR5cGVUb1N0cmluZyhudW1lcmljVHlwZSkKIHsKICAgICBmb3IgKHZhciBw
cm9wIGluIHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlKSB7CkBAIC0xMzQsMjMgKzExNCwxMSBAQCBm
dW5jdGlvbiB0aW1lbGluZUFnZW50VHlwZVRvU3RyaW5nKG51bWVyaWNUeXBlKQogfQogCiAvLyBJ
bmplY3RlZCBpbnRvIEluc3BlY3RvciB3aW5kb3cKLWZ1bmN0aW9uIGZyb250ZW5kX3N0YXJ0VGlt
ZWxpbmVQcm9maWxlcigpCi17Ci0gICAgd2luZG93LnRpbWVsaW5lUmVzdWx0cyA9IG5ldyBBcnJh
eSgpOwotICAgIHdpbmRvdy5XZWJJbnNwZWN0b3IuYWRkUmVjb3JkVG9UaW1lbGluZSA9IGZ1bmN0
aW9uKGFyZykgewotICAgICAgICB3aW5kb3cudGltZWxpbmVSZXN1bHRzLnB1c2goYXJnKTsKLSAg
ICB9OwotICAgIHdpbmRvdy5JbnNwZWN0b3JDb250cm9sbGVyLnN0YXJ0VGltZWxpbmVQcm9maWxl
cigpOwotICAgIHJldHVybiAnZG9uZSc7Ci19Ci0KLS8vIEluamVjdGVkIGludG8gSW5zcGVjdG9y
IHdpbmRvdwogZnVuY3Rpb24gZnJvbnRlbmRfZ2V0VGltZWxpbmVSZXN1bHRzKCkgewotICAgIHJl
dHVybiB3aW5kb3cudGltZWxpbmVSZXN1bHRzOwotfQotCi0vLyBJbmplY3RlZCBpbnRvIEluc3Bl
Y3RvciB3aW5kb3cKLS8vIGZyb250ZW5kX3NldHVwIGFsd2F5cyBnZXRzIGNhbGxlZCBiZWZvcmUg
dGhlIHBhZ2UgaXMgcmVsb2FkZWQuCi1mdW5jdGlvbiBmcm9udGVuZF9zZXR1cCgpIHsKLSAgICBm
cm9udGVuZF9zdGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKKyAgICB2YXIgcmVzdWx0ID0gW107Cisg
ICAgdmFyIGl0ZW1zID0gV2ViSW5zcGVjdG9yLnBhbmVscy50aW1lbGluZS5faXRlbXM7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkgeworICAgICAgICByZXN1bHQu
cHVzaChpdGVtc1tpXS5yZWNvcmQpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNjRj
MTQzLi5hYjdkNGEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDA5LTExLTE2ICBQYXZlbCBGZWxkbWFuICA8
cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0
Y2hlci4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBNYWtlIERSVCBzaG93IHdlYiBpbnNwZWN0
b3IgZm9yIHRlc3RzIGluIGluc3BlY3Rvci8gZm9sZGVyLgorICAgICAgICAgIC0gVXBkYXRlZCBE
UlQgdG8gc2hvdy9jbG9zZSBpbnNwZWN0b3IgZm9yIGFsbCB0ZXN0cyB1bmRlciAvaW5zcGVjdG9y
CisgICAgICAgICAgLSBJbnRyb2R1Y2VkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGlu
ZVByb2ZpbGluZ0VuYWJsZWQgYW5kCisgICAgICAgICAgICBXZWJJbnNwZWN0b3I6OnNldFRpbWVs
aW5lUHJvZmlsaW5nRW5hYmxlZCBiZXNpZGUgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQK
KyAgICAgICAgICAtIFJlbW92ZWQgcmVsb2FkIG9uIGVhY2ggaW5zcGVjdG9yIHRlc3QKKyAgICAg
ICAgICAtIFJlaW1wbGVtZW50ZWQgdGltZWxpbmUgdGVzdHMgaW4gb3JkZXIgdG8gZ2V0IHJpZCBv
ZiByZWxvYWQgdGhlcmUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMxNDcyCisKKyAgICAgICAgKiBXZWJDb3JlLkluc3BlY3Rvci5leHA6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9mb3JtYXRSZWNvcmQpOgorCiAyMDA5
LTExLTE0ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuSW5z
cGVjdG9yLmV4cCBiL1dlYkNvcmUvV2ViQ29yZS5JbnNwZWN0b3IuZXhwCmluZGV4IDU3Njk5NGYu
LjAwMDU5NGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5JbnNwZWN0b3IuZXhwCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5JbnNwZWN0b3IuZXhwCkBAIC0xNiwzICsxNiw1IEBAIF9fWk43V2Vi
Q29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI1ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZEVsUktO
U182U3RyaW5nRQogX19aTks3V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE3ZHJhd05vZGVI
aWdobGlnaHRFUk5TXzE1R3JhcGhpY3NDb250ZXh0RQogX19aTks3V2ViQ29yZTE5SW5zcGVjdG9y
Q29udHJvbGxlcjdlbmFibGVkRXYKIF9fWk5LN1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXI3
c2V0dGluZ0VSS05TXzZTdHJpbmdFCitfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIy
MXN0YXJ0VGltZWxpbmVQcm9maWxlckV2CitfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXIyMHN0b3BUaW1lbGluZVByb2ZpbGVyRXYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RpbWVsaW5lUGFuZWwuanMKaW5kZXggMTFjYWRmMy4uMzc3MGViYyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKQEAgLTE3Miw2ICsxNzIsNyBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZvcm1hdHRl
ZFJlY29yZC5jb3VudCA9IDE7CiAgICAgICAgIGZvcm1hdHRlZFJlY29yZC50eXBlID0gcmVjb3Jk
LnR5cGU7CiAgICAgICAgIGZvcm1hdHRlZFJlY29yZC5lbmRUaW1lID0gKHR5cGVvZiByZWNvcmQu
ZW5kVGltZSAhPT0gInVuZGVmaW5lZCIpID8gcmVjb3JkLmVuZFRpbWUgLyAxMDAwIDogZm9ybWF0
dGVkUmVjb3JkLnN0YXJ0VGltZTsKKyAgICAgICAgZm9ybWF0dGVkUmVjb3JkLnJlY29yZCA9IHJl
Y29yZDsKIAogICAgICAgICAvLyBNYWtlIHJlc291cmNlIHJlY2VpdmUgcmVjb3JkIGxhc3Qgc2lu
Y2UgcmVxdWVzdCB3YXMgc2VudDsgbWFrZSBmaW5pc2ggcmVjb3JkIGxhc3Qgc2luY2UgcmVzcG9u
c2UgcmVjZWl2ZWQuCiAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZXNvdXJjZVNlbmRSZXF1ZXN0KSB7CmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDljOGRi
ZGQuLjQxZTBlMDMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMTEtMTYgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3Ro
eSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ha2UgRFJUIHNob3cgd2ViIGlu
c3BlY3RvciBmb3IgdGVzdHMgaW4gaW5zcGVjdG9yLyBmb2xkZXIuCisgICAgICAgICAgLSBVcGRh
dGVkIERSVCB0byBzaG93L2Nsb3NlIGluc3BlY3RvciBmb3IgYWxsIHRlc3RzIHVuZGVyIC9pbnNw
ZWN0b3IKKyAgICAgICAgICAtIEludHJvZHVjZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRp
bWVsaW5lUHJvZmlsaW5nRW5hYmxlZCBhbmQKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvcjo6c2V0
VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIGJlc2lkZSBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5h
YmxlZAorICAgICAgICAgIC0gUmVtb3ZlZCByZWxvYWQgb24gZWFjaCBpbnNwZWN0b3IgdGVzdAor
ICAgICAgICAgIC0gUmVpbXBsZW1lbnRlZCB0aW1lbGluZSB0ZXN0cyBpbiBvcmRlciB0byBnZXQg
cmlkIG9mIHJlbG9hZCB0aGVyZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzE0NzIKKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJpbnNwZWN0
b3IuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9pbnNwZWN0b3JfY2xhc3NfaW5pdCk6CisgICAg
ICAgICh3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0
X3dlYl9pbnNwZWN0b3JfZ2V0X3Byb3BlcnR5KToKKwogMjAwOS0xMS0xMyAgQWRhbSBSb2JlbiAg
PGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIGZvciBjaGFuZ2VzIHRvIEZyYW1l
TG9hZGVyQ2xpZW50CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNw
ZWN0b3IuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcAppbmRl
eCBlZTI4MTVjLi43OGE2YmQ4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJpbnNwZWN0b3IuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rv
ci5jcHAKQEAgLTgzLDcgKzgzLDggQEAgZW51bSB7CiAKICAgICBQUk9QX1dFQl9WSUVXLAogICAg
IFBST1BfSU5TUEVDVEVEX1VSSSwKLSAgICBQUk9QX0pBVkFTQ1JJUFRfUFJPRklMSU5HX0VOQUJM
RUQKKyAgICBQUk9QX0pBVkFTQ1JJUFRfUFJPRklMSU5HX0VOQUJMRUQsCisgICAgUFJPUF9USU1F
TElORV9QUk9GSUxJTkdfRU5BQkxFRCAgICAKIH07CiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0V2Vi
SW5zcGVjdG9yLCB3ZWJraXRfd2ViX2luc3BlY3RvciwgR19UWVBFX09CSkVDVCkKQEAgLTMwMCw2
ICszMDEsMjIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfY2xhc3NfaW5pdChX
ZWJLaXRXZWJJbnNwZWN0b3JDbGFzcyoga2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwogCisgICAgLyoqCisgICAgKiBXZWJLaXRX
ZWJJbnNwZWN0b3I6dGltZWxpbmUtcHJvZmlsaW5nLWVuYWJsZWQKKyAgICAqCisgICAgKiBUaGlz
IGlzIGVuYWJsaW5nIFRpbWVsaW5lIHByb2ZpbGluZyBpbiB0aGUgSW5zcGVjdG9yLgorICAgICoK
KyAgICAqIFNpbmNlOiAxLjEuMQorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJPUF9USU1FTElORV9QUk9GSUxJTkdfRU5BQkxFRCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ0aW1lbGluZS1wcm9maWxpbmctZW5hYmxlZCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIFRpbWVsaW5lIHBy
b2ZpbGluZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlBy
b2ZpbGUgdGhlIFdlYkNvcmUgaW5zdHJ1bWVudGF0aW9uLiIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKwogICAgIGdfdHlwZV9jbGFz
c19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYkluc3BlY3RvclByaXZhdGUpKTsK
IH0KIApAQCAtMzM3LDYgKzM1NCwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rv
cl9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjbwogICAgICAg
ICAgICAgY29udHJvbGxlci0+ZGlzYWJsZVByb2ZpbGVyKCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KKyAgICBjYXNlIFBST1BfVElNRUxJTkVfUFJPRklMSU5HX0VOQUJMRUQ6IHsKKyAgICAgICAg
Ym9vbCBlbmFibGVkID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBwcml2LT5wYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCk7CisgICAgICAgIGlmIChlbmFibGVkKQorICAgICAgICAgICAgY29udHJv
bGxlci0+c3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGNvbnRyb2xsZXItPnN0b3BUaW1lbGluZVByb2ZpbGVyKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzU4LDYgKzM4
NCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9wcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWCiAgICAgY2FzZSBQUk9QX0pBVkFTQ1JJUFRf
UFJPRklMSU5HX0VOQUJMRUQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHBy
aXYtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+cHJvZmlsZXJFbmFibGVkKCkpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVElNRUxJTkVfUFJPRklMSU5HX0VOQUJMRUQ6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPnBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+dGltZWxpbmVBZ2VudCgpICE9IDApOworICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAwMzQ1Y2EwLi5kYWYyNzQ4
IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDA5LTExLTE2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBNYWtlIERSVCBzaG93IHdlYiBpbnNwZWN0b3IgZm9y
IHRlc3RzIGluIGluc3BlY3Rvci8gZm9sZGVyLgorICAgICAgICAgIC0gVXBkYXRlZCBEUlQgdG8g
c2hvdy9jbG9zZSBpbnNwZWN0b3IgZm9yIGFsbCB0ZXN0cyB1bmRlciAvaW5zcGVjdG9yCisgICAg
ICAgICAgLSBJbnRyb2R1Y2VkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGluZVByb2Zp
bGluZ0VuYWJsZWQgYW5kCisgICAgICAgICAgICBXZWJJbnNwZWN0b3I6OnNldFRpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZCBiZXNpZGUgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQKKyAgICAg
ICAgICAtIFJlbW92ZWQgcmVsb2FkIG9uIGVhY2ggaW5zcGVjdG9yIHRlc3QKKyAgICAgICAgICAt
IFJlaW1wbGVtZW50ZWQgdGltZWxpbmUgdGVzdHMgaW4gb3JkZXIgdG8gZ2V0IHJpZCBvZiByZWxv
YWQgdGhlcmUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMxNDcyCisKKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmg6CisgICAg
ICAgICogV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbToKKyAgICAgICAgKC1bV2ViSW5zcGVj
dG9yIGlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkXSk6CisgICAgICAgICgtW1dlYkluc3BlY3Rv
ciBzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQ6XSk6CisKIDIwMDktMTEtMTQgIENocmlzIEZs
ZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rv
ci5oIGIvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgKaW5kZXggYzE2NzI2
ZC4uZmExM2M4ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVj
dG9yLmgKKysrIGIvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLmgKQEAgLTQ5
LDYgKzQ5LDggQEAKIAogLSAoQk9PTClpc0phdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkOwogLSAo
dm9pZClzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZDooQk9PTCllbmFibGVkOworLSAoQk9P
TClpc1RpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZDsKKy0gKHZvaWQpc2V0VGltZWxpbmVQcm9maWxp
bmdFbmFibGVkOihCT09MKWVuYWJsZWQ7CiAKIC0gKEJPT0wpaXNQcm9maWxpbmdKYXZhU2NyaXB0
OwogLSAodm9pZCl0b2dnbGVQcm9maWxpbmdKYXZhU2NyaXB0OihpZClzZW5kZXI7CmRpZmYgLS1n
aXQgYS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IubW0gYi9XZWJLaXQvbWFj
L1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IubW0KaW5kZXggY2NiMDljNS4uMjU4ZGQwMSAxMDA2
NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tCisrKyBiL1dl
YktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbQpAQCAtMTQ4LDYgKzE0OCwyNSBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLT5kaXNhYmxlUHJvZmlsZXIoKTsKIH0KIAorLSAoQk9PTClpc1RpbWVsaW5lUHJvZmls
aW5nRW5hYmxlZAoreworICAgIGlmIChQYWdlKiBwYWdlID0gY29yZShfd2ViVmlldykpCisgICAg
ICAgIHJldHVybiBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnRpbWVsaW5lQWdlbnQoKSA/
IFlFUyA6IE5POworICAgIHJldHVybiBOTzsKK30KKworLSAodm9pZClzZXRUaW1lbGluZVByb2Zp
bGluZ0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAoreworICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKF93ZWJW
aWV3KTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChlbmFibGVk
KQorICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnN0YXJ0VGltZWxpbmVQcm9m
aWxlcigpOworICAgIGVsc2UKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
dG9wVGltZWxpbmVQcm9maWxlcigpOworfQorCiAtICh2b2lkKWNsb3NlOihpZClzZW5kZXIgCiB7
CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlKF93ZWJWaWV3KSkKZGlmZiAtLWdpdCBhL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZDRlODljOC4uYTMz
ZGQ1NiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAwOS0xMS0xNiAgUGF2ZWwgRmVsZG1hbiAgPHBm
ZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNo
ZXIuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSBEUlQgc2hvdyB3ZWIgaW5zcGVjdG9y
IGZvciB0ZXN0cyBpbiBpbnNwZWN0b3IvIGZvbGRlci4KKyAgICAgICAgICAtIFVwZGF0ZWQgRFJU
IHRvIHNob3cvY2xvc2UgaW5zcGVjdG9yIGZvciBhbGwgdGVzdHMgdW5kZXIgL2luc3BlY3Rvcgor
ICAgICAgICAgIC0gSW50cm9kdWNlZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VGltZWxpbmVQ
cm9maWxpbmdFbmFibGVkIGFuZAorICAgICAgICAgICAgV2ViSW5zcGVjdG9yOjpzZXRUaW1lbGlu
ZVByb2ZpbGluZ0VuYWJsZWQgYmVzaWRlIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkCisg
ICAgICAgICAgLSBSZW1vdmVkIHJlbG9hZCBvbiBlYWNoIGluc3BlY3RvciB0ZXN0CisgICAgICAg
ICAgLSBSZWltcGxlbWVudGVkIHRpbWVsaW5lIHRlc3RzIGluIG9yZGVyIHRvIGdldCByaWQgb2Yg
cmVsb2FkIHRoZXJlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMTQ3MgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViSW5zcGVjdG9yLmlkbDoK
KyAgICAgICAgKiBXZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjppc1Rp
bWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3I6OnNldFRpbWVs
aW5lUHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViSW5zcGVjdG9yLmg6CisKIDIwMDkt
MTEtMTMgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZp
eApkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJJbnNwZWN0b3IuaWRsIGIv
V2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJJbnNwZWN0b3IuaWRsCmluZGV4IGUzMTM3NmMuLjRk
MGQ5NmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViSW5zcGVjdG9yLmlk
bAorKysgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkluc3BlY3Rvci5pZGwKQEAgLTU0LDQg
KzU0LDYgQEAgaW50ZXJmYWNlIElXZWJJbnNwZWN0b3IgOiBJVW5rbm93bgogCiAgICAgSFJFU1VM
VCBpc0phdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKEJPT0wqIGlzUHJvZmlsaW5nRW5hYmxlZCk7
CiAgICAgSFJFU1VMVCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChCT09MIGVuYWJsZWQp
OworICAgIEhSRVNVTFQgaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoQk9PTCogaXNFbmFibGVk
KTsKKyAgICBIUkVTVUxUIHNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChCT09MIGVuYWJsZWQp
OwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuY3BwIGIvV2ViS2l0L3dp
bi9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IDk3NTg3ZjkuLmU0YWMzMmIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC93aW4vV2ViSW5zcGVjdG9yLmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5j
cHAKQEAgLTI3MiwzICsyNzIsMzggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSAgV2ViSW5z
cGVjdG9yOjpldmFsdWF0ZUluRnJvbnRlbmQoVUxPTkcgY2FsbElkLCBCU1RSIGIKICAgICBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoY2FsbElk
LCBzY3JpcHQpOwogICAgIHJldHVybiBTX09LOwogfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkluc3BlY3Rvcjo6aXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoQk9PTCogaXNFbmFi
bGVkKQoreworICAgIGlmICghaXNFbmFibGVkKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwor
CisgICAgKmlzRW5hYmxlZCA9IEZBTFNFOworCisgICAgaWYgKCFtX3dlYlZpZXcpCisgICAgICAg
IHJldHVybiBTX09LOworCisgICAgUGFnZSogcGFnZSA9IG1fd2ViVmlldy0+cGFnZSgpOworICAg
IGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIFNfT0s7CisKKyAgICAqaXNFbmFibGVkID0gcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT50aW1lbGluZUFnZW50KCkgIT0gMDsKKyAgICByZXR1
cm4gU19PSzsKK30KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0b3I6OnNl
dFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChCT09MIGVuYWJsZWQpCit7CisgICAgaWYgKCFtX3dl
YlZpZXcpCisgICAgICAgIHJldHVybiBTX09LOworCisgICAgUGFnZSogcGFnZSA9IG1fd2ViVmll
dy0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIFNfT0s7CisKKyAgICBp
ZiAoZW5hYmxlZCkKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zdGFydFRp
bWVsaW5lUHJvZmlsZXIoKTsKKyAgICBlbHNlCisgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+c3RvcFRpbWVsaW5lUHJvZmlsZXIoKTsKKworICAgIHJldHVybiBTX09LOworfQpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuaCBiL1dlYktpdC93aW4vV2ViSW5z
cGVjdG9yLmgKaW5kZXggNGY5YmVkYi4uMDUzYTU5MyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9X
ZWJJbnNwZWN0b3IuaAorKysgYi9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5oCkBAIC01OSw5ICs1
OSwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
aXNKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChCT09MKiBpc1Byb2ZpbGluZ0VuYWJsZWQpOwog
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRKYXZhU2NyaXB0UHJvZmls
aW5nRW5hYmxlZChCT09MKTsKLSAgICAKKwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBldmFsdWF0ZUluRnJvbnRlbmQoVUxPTkcgY2FsbElkLCBCU1RSIHNjcmlwdCk7CiAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNUaW1lbGluZVByb2ZpbGlu
Z0VuYWJsZWQoQk9PTCogaXNFbmFibGVkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKEJPT0wpOworCiBwcml2YXRlOgog
ICAgIFdlYkluc3BlY3RvcihXZWJWaWV3Kik7CiAgICAgfldlYkluc3BlY3RvcigpOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDBlOTMxYjUuLjRjMzhiN2YgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysg
Yi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0xMS0xNiAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSBEUlQgc2hv
dyB3ZWIgaW5zcGVjdG9yIGZvciB0ZXN0cyBpbiBpbnNwZWN0b3IvIGZvbGRlci4KKyAgICAgICAg
ICAtIFVwZGF0ZWQgRFJUIHRvIHNob3cvY2xvc2UgaW5zcGVjdG9yIGZvciBhbGwgdGVzdHMgdW5k
ZXIgL2luc3BlY3RvcgorICAgICAgICAgIC0gSW50cm9kdWNlZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIGFuZAorICAgICAgICAgICAgV2ViSW5zcGVj
dG9yOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQgYmVzaWRlIHNldEphdmFTY3JpcHRQcm9m
aWxpbmdFbmFibGVkCisgICAgICAgICAgLSBSZW1vdmVkIHJlbG9hZCBvbiBlYWNoIGluc3BlY3Rv
ciB0ZXN0CisgICAgICAgICAgLSBSZWltcGxlbWVudGVkIHRpbWVsaW5lIHRlc3RzIGluIG9yZGVy
IHRvIGdldCByaWQgb2YgcmVsb2FkIHRoZXJlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTQ3MgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0VGltZWxpbmVQcm9maWxpbmdF
bmFibGVkQ2FsbGJhY2spOgorICAgICAgICAoY2xvc2VXZWJJbnNwZWN0b3JDYWxsYmFjayk6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChzaG91bGRPcGVuV2Vi
SW5zcGVjdG9yKToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChzaG91bGRPcGVuV2ViSW5z
cGVjdG9yKToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisK
IDIwMDktMTEtMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBkYWY4ODhmLi40YzI4Y2E3IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCkBAIC04NTAsNiArODUwLDE2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFRhYktleUN5Y2xl
c1Rocm91Z2hFbGVtZW50c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKCiAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJl
ZiBzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxl
ciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRUaW1lbGluZVBy
b2ZpbGluZ0VuYWJsZWQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsK
KyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBK
U1ZhbHVlUmVmIHNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24K
QEAgLTk3OSw2ICs5ODksNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzaG93V2ViSW5zcGVjdG9yQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bgogc3RhdGljIEpTVmFs
dWVSZWYgY2xvc2VXZWJJbnNwZWN0b3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2Fz
dDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7
CisgICAgY29udHJvbGxlci0+c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGZhbHNlKTsKICAg
ICBjb250cm9sbGVyLT5jbG9zZVdlYkluc3BlY3RvcigpOwogICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KQEAgLTEyNjQsNiArMTI3NSw3IEBAIEpTU3RhdGljRnVu
Y3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7
ICJzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQiLCBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJs
ZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRTdG9wUHJvdmlzaW9uYWxGcmFtZUxv
YWRzIiwgc2V0U3RvcFByb3Zpc2lvbmFsRnJhbWVMb2Fkc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgInNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyIsIHNldFRhYktleUN5Y2xlc1Ro
cm91Z2hFbGVtZW50c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldFRpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZCIsIHNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgInNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlIiwgc2V0VXNl
RGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
ZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQiLCBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWRDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uIiwgc2V0VXNl
clN0eWxlU2hlZXRMb2NhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA3OWZmYjk5Li4wNjQx
ZTk5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgKQEAgLTIxNCw2ICsyMTQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNob3dXZWJJ
bnNwZWN0b3IoKTsKICAgICB2b2lkIGNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgdm9pZCBzZXRU
aW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKTsKICAgICB2b2lkIGV2YWx1YXRl
SW5XZWJJbnNwZWN0b3IobG9uZyBjYWxsSWQsIEpTU3RyaW5nUmVmIHNjcmlwdCk7CiAgICAgdm9p
ZCBldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCh1bnNpZ25lZCB3b3JsZElkLCBKU09iamVj
dFJlZiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nUmVmIHNjcmlwdCk7CiAKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDU0MDhiYTEu
LjI5MzEzZTMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1w
UmVuZGVyVHJlZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBS
ZW5kZXJUcmVlLmNwcApAQCAtMTE0LDYgKzExNCwxMSBAQCBzdGF0aWMgYm9vbCBzaG91bGRMb2dG
cmFtZUxvYWREZWxlZ2F0ZXMoY29uc3QgY2hhciogcGF0aE9yVVJMKQogICAgIHJldHVybiBzdHJz
dHIocGF0aE9yVVJMLCAibG9hZGluZy8iKTsKIH0KIAorc3RhdGljIGJvb2wgc2hvdWxkT3Blbldl
Ykluc3BlY3Rvcihjb25zdCBjaGFyKiBwYXRoT3JVUkwpCit7CisgICAgcmV0dXJuIHN0cnN0cihw
YXRoT3JVUkwsICJpbnNwZWN0b3IvIik7Cit9CisKIHZvaWQgZHVtcEZyYW1lU2Nyb2xsUG9zaXRp
b24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogewogCkBAIC00NTYsNiArNDYxLDkgQEAgc3RhdGlj
IHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RQYXRoT3JVUkwpCiAgICAgaWYgKHNob3Vs
ZExvZ0ZyYW1lTG9hZERlbGVnYXRlcyhwYXRoT3JVUkwuY19zdHIoKSkpCiAgICAgICAgIGdMYXlv
dXRUZXN0Q29udHJvbGxlci0+c2V0RHVtcEZyYW1lTG9hZENhbGxiYWNrcyh0cnVlKTsKIAorICAg
IGlmIChzaG91bGRPcGVuV2ViSW5zcGVjdG9yKHBhdGhPclVSTC5jX3N0cigpKSkKKyAgICAgICAg
Z0xheW91dFRlc3RDb250cm9sbGVyLT5zaG93V2ViSW5zcGVjdG9yKCk7CisKICAgICBXb3JrUXVl
dWU6OnNoYXJlZCgpLT5jbGVhcigpOwogICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnNldEZyb3pl
bihmYWxzZSk7CiAKQEAgLTQ5Nyw2ICs1MDUsOSBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0
IHN0cmluZyYgdGVzdFBhdGhPclVSTCkKICAgICAgICAgd2ViVmlld0xpc3QgPSAwOwogICAgIH0K
IAorICAgIGlmIChzaG91bGRPcGVuV2ViSW5zcGVjdG9yKHBhdGhPclVSTC5jX3N0cigpKSkKKyAg
ICAgICAgZ0xheW91dFRlc3RDb250cm9sbGVyLT5jbG9zZVdlYkluc3BlY3RvcigpOworCiAgICAg
Ly8gQSBibGFuayBsb2FkIHNlZW1zIHRvIGJlIG5lY2Vzc2FyeSB0byByZXNldCBzdGF0ZSBhZnRl
ciBjZXJ0YWluIHRlc3RzLgogICAgIHdlYmtpdF93ZWJfdmlld19vcGVuKHdlYlZpZXcsICJhYm91
dDpibGFuayIpOwogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
TGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCAxNzNlNTI2Li45NjRkN2JhIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTIyOSw2ICsyMjksMTUgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGJvb2wgY3ljbGVzKQog
ICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChzZXR0aW5ncyksICJ0YWIta2V5LWN5Y2xlcy10aHJv
dWdoLWVsZW1lbnRzIiwgY3ljbGVzLCBOVUxMKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGJvb2wgZmxhZykKK3sKKyAgICBXZWJL
aXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1l
KTsKKyAgICBBU1NFUlQodmlldyk7CisKKyAgICBXZWJLaXRXZWJJbnNwZWN0b3IqIGluc3BlY3Rv
ciA9IHdlYmtpdF93ZWJfdmlld19nZXRfaW5zcGVjdG9yKHZpZXcpOworICAgIGdfb2JqZWN0X3Nl
dChHX09CSkVDVChpbnNwZWN0b3IpLCAidGltZWxpbmUtcHJvZmlsaW5nLWVuYWJsZWQiLCBmbGFn
LCBOVUxMKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlRGFzaGJvYXJk
Q29tcGF0aWJpbGl0eU1vZGUoYm9vbCBmbGFnKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpp
bmRleCBjMGEwYjc0Li41ZjRiYzdjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xMTAyLDYgKzExMDIsMTEgQEAgc3RhdGljIGJv
b2wgc2hvdWxkTG9nSGlzdG9yeURlbGVnYXRlcyhjb25zdCBjaGFyKiBwYXRoT3JVUkwpCiAgICAg
cmV0dXJuIHN0cnN0cihwYXRoT3JVUkwsICJnbG9iYWxoaXN0b3J5LyIpOwogfQogCitzdGF0aWMg
Ym9vbCBzaG91bGRPcGVuV2ViSW5zcGVjdG9yKGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKK3sKKyAg
ICByZXR1cm4gc3Ryc3RyKHBhdGhPclVSTCwgImluc3BlY3Rvci8iKTsKK30KKwogc3RhdGljIHZv
aWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCkKIHsKICAgICBX
ZWJWaWV3ICp3ZWJWaWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsKQEAgLTExNzgsNyArMTE4Mywx
MCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgdGVzdFBhdGhPclVSTCkKICAg
ICAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0SGlzdG9yeURlbGVnYXRlOmhpc3RvcnlEZWxl
Z2F0ZV07CiAgICAgZWxzZQogICAgICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRIaXN0b3J5
RGVsZWdhdGU6bmlsXTsKLSAgICAKKworICAgIGlmIChzaG91bGRPcGVuV2ViSW5zcGVjdG9yKHBh
dGhPclVSTC5jX3N0cigpKSkKKyAgICAgICAgZ0xheW91dFRlc3RDb250cm9sbGVyLT5zaG93V2Vi
SW5zcGVjdG9yKCk7CisKICAgICBpZiAoW1dlYkhpc3Rvcnkgb3B0aW9uYWxTaGFyZWRIaXN0b3J5
XSkKICAgICAgICAgW1dlYkhpc3Rvcnkgc2V0T3B0aW9uYWxTaGFyZWRIaXN0b3J5Om5pbF07CiAg
ICAgbGFzdE1vdXNlUG9zaXRpb24gPSBOU1plcm9Qb2ludDsKQEAgLTEyMjgsOSArMTIzNiwxMiBA
QCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgdGVzdFBhdGhPclVSTCkKIAogICAg
IHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpOwogCisgICAgaWYg
KHNob3VsZE9wZW5XZWJJbnNwZWN0b3IocGF0aE9yVVJMLmNfc3RyKCkpKQorICAgICAgICBnTGF5
b3V0VGVzdENvbnRyb2xsZXItPmNsb3NlV2ViSW5zcGVjdG9yKCk7CisKICAgICBbbWFpbkZyYW1l
IGxvYWRIVE1MU3RyaW5nOkAiPGh0bWw+PC9odG1sPiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImFib3V0OmJsYW5rIl1dOwogICAgIFttYWluRnJhbWUgc3RvcExvYWRpbmddOwotICAg
IAorCiAgICAgW3Bvb2wgcmVsZWFzZV07CiAKICAgICAvLyBXZSBzaG91bGQgb25seSBoYXZlIG91
ciBtYWluIHdpbmRvdyBsZWZ0IG9wZW4gd2hlbiB3ZSdyZSBkb25lCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0K
aW5kZXggMzM0NTM4OC4uYjQzNWY1NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMzExLDYgKzMx
MSwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdo
RWxlbWVudHMoYm9vbCBjeWNsZXMpCiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0VGFiS2V5
Q3ljbGVzVGhyb3VnaEVsZW1lbnRzOmN5Y2xlc107CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAg
W1tbbWFpbkZyYW1lIHdlYlZpZXddIGluc3BlY3Rvcl0gc2V0VGltZWxpbmVQcm9maWxpbmdFbmFi
bGVkOmVuYWJsZWRdOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VEYXNo
Ym9hcmRDb21wYXRpYmlsaXR5TW9kZShib29sIGZsYWcpCiB7CiAgICAgW1ttYWluRnJhbWUgd2Vi
Vmlld10gX3NldERhc2hib2FyZEJlaGF2aW9yOldlYkRhc2hib2FyZEJlaGF2aW9yVXNlQmFja3dh
cmRDb21wYXRpYmlsaXR5TW9kZSB0bzpmbGFnXTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGQ0ODZkMDYuLjUzNTFhZWMgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5j
cHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cApAQCAtNjg4LDYgKzY4OCwxMSBAQCBzdGF0aWMgYm9vbCBzaG91bGRMb2dIaXN0b3J5RGVsZWdh
dGVzKGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKICAgICByZXR1cm4gc3Ryc3RyKHBhdGhPclVSTCwg
Ii9nbG9iYWxoaXN0b3J5LyIpIHx8IHN0cnN0cihwYXRoT3JVUkwsICJcXGdsb2JhbGhpc3Rvcnlc
XCIpOwogfQogCitzdGF0aWMgYm9vbCBzaG91bGRPcGVuV2ViSW5zcGVjdG9yKGNvbnN0IGNoYXIq
IHBhdGhPclVSTCkKK3sKKyAgICByZXR1cm4gc3Ryc3RyKHBhdGhPclVSTCwgIi9pbnNwZWN0b3Iv
IikgfHwgc3Ryc3RyKHBhdGhPclVSTCwgIlxcaW5zcGVjdG9yXFwiKTsKK30KKwogc3RhdGljIHZv
aWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyhJV2ViUHJlZmVyZW5jZXMqIHByZWZl
cmVuY2VzKQogewogI2lmZGVmIFVTRV9NQUNfRk9OVFMKQEAgLTg1OSw2ICs4NjQsOSBAQCBzdGF0
aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgdGVzdFBhdGhPclVSTCkKIAogICAgIHJlc2V0
V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpOwogCisgICAgaWYgKHNob3Vs
ZE9wZW5XZWJJbnNwZWN0b3IocGF0aE9yVVJMLmNfc3RyKCkpKQorICAgICAgICBnTGF5b3V0VGVz
dENvbnRyb2xsZXItPnNob3dXZWJJbnNwZWN0b3IoKTsKKwogICAgIHByZXZUZXN0QkZJdGVtID0g
MDsKICAgICBpZiAod2ViVmlldykgewogICAgICAgICBDT01QdHI8SVdlYkJhY2tGb3J3YXJkTGlz
dD4gYmZMaXN0OwpAQCAtODk1LDYgKzkwMyw5IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qg
c3RyaW5nJiB0ZXN0UGF0aE9yVVJMKQogCiAgICAgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3Rh
dGVCZWZvcmVUZXN0aW5nKCk7CiAKKyAgICBpZiAoc2hvdWxkT3BlbldlYkluc3BlY3RvcihwYXRo
T3JVUkwuY19zdHIoKSkpCisgICAgICAgIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+Y2xvc2VXZWJJ
bnNwZWN0b3IoKTsKKwogICAgIGZyYW1lLT5zdG9wTG9hZGluZygpOwogCiAgICAgaWYgKDo6Z0xh
eW91dFRlc3RDb250cm9sbGVyLT5jbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUoKSkg
ewpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggMDMyMGI0Mi4uYzg2NDliYiAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xs
ZXJXaW4uY3BwCkBAIC0zOTgsNiArMzk4LDIzIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhib29sIHNob3VsZEN5Y2xlKQogICAgIHZp
ZXdQcml2YXRlLT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoc2hvdWxkQ3ljbGUgPyBU
UlVFIDogRkFMU0UpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGlu
ZVByb2ZpbGluZ0VuYWJsZWQoYm9vbCBmbGFnKQoreworICAgIENPTVB0cjxJV2ViVmlldz4gd2Vi
VmlldzsKKyAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCisgICAgICAg
IHJldHVybjsKKworICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHZpZXdQcml2YXRlOworICAg
IGlmIChGQUlMRUQod2ViVmlldy0+UXVlcnlJbnRlcmZhY2UoJnZpZXdQcml2YXRlKSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViSW5zcGVjdG9yPiBpbnNwZWN0b3I7CisgICAg
aWYgKEZBSUxFRCh2aWV3UHJpdmF0ZS0+aW5zcGVjdG9yKCZpbnNwZWN0b3IpKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaW5zcGVjdG9yLT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoZmxh
Zyk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZURhc2hib2FyZENvbXBh
dGliaWxpdHlNb2RlKGJvb2wgZmxhZykKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43355</attachid>
            <date>2009-11-17 05:04:01 -0800</date>
            <delta_ts>2009-11-17 05:04:01 -0800</delta_ts>
            <desc>[PATCH] I am going to land.</desc>
            <filename>drt</filename>
            <type>text/plain</type>
            <size>65894</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MjE1YzUxLi4xNGRlNjc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMDktMTEt
MTcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ha2Ug
RFJUIHNob3cgd2ViIGluc3BlY3RvciBmb3IgdGVzdHMgaW4gaW5zcGVjdG9yLyBmb2xkZXIuCisg
ICAgICAgIC0gVXBkYXRlZCBEUlQgdG8gc2hvdy9jbG9zZSBpbnNwZWN0b3IgZm9yIGFsbCB0ZXN0
cyB1bmRlciAvaW5zcGVjdG9yCisgICAgICAgIC0gSW50cm9kdWNlZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIGFuZAorICAgICAgICAgIFdlYkluc3Bl
Y3Rvcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkIGJlc2lkZSBzZXRKYXZhU2NyaXB0UHJv
ZmlsaW5nRW5hYmxlZAorICAgICAgICAtIFJlbW92ZWQgcmVsb2FkIG9uIGVhY2ggaW5zcGVjdG9y
IHRlc3QKKyAgICAgICAgLSBSZW5hbWVkIGZhc3QvaW5zcGVjdG9yIHRvIGZhc3QvaW5zcGVjdG9y
LXN1cHBvcnQgaW4gb3JkZXIgbm90IHRvIHRyaWdnZXIKKyAgICAgICAgaW5zcGVjdG9yIGZvciB0
aG9zZS4KKyAgICAgICAgLSBSZWltcGxlbWVudGVkIHRpbWVsaW5lIHRlc3RzIGluIG9yZGVyIHRv
IGdldCByaWQgb2YgcmVsb2FkIHRoZXJlLgorICAgICAgICAtIE1vdmVkIHRlc3RzIHRoYXQgZG9u
J3QgcmVxdWlyZSBoYXJuZXNzIGludG8gdGhlIGZhc3QgZ3JvdXAuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDcyCisKKyAgICAgICAgKiBmYXN0
L2luc3BlY3Rvci1zdXBwb3J0L2Nzc1VSTFF1b3Rlcy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJv
bSBMYXlvdXRUZXN0cy9mYXN0L2luc3BlY3Rvci9jc3NVUkxRdW90ZXMtZXhwZWN0ZWQudHh0Lgor
ICAgICAgICAqIGZhc3QvaW5zcGVjdG9yLXN1cHBvcnQvY3NzVVJMUXVvdGVzLmh0bWw6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2luc3BlY3Rvci9jc3NVUkxRdW90ZXMuaHRtbC4KKyAg
ICAgICAgKiBmYXN0L2luc3BlY3Rvci1zdXBwb3J0L21hdGNoZWRydWxlcy5odG1sOiBSZW5hbWVk
IGZyb20gTGF5b3V0VGVzdHMvZmFzdC9pbnNwZWN0b3IvbWF0Y2hlZHJ1bGVzLmh0bWwuCisgICAg
ICAgICogZmFzdC9pbnNwZWN0b3Itc3VwcG9ydC9zdHlsZS5odG1sOiBSZW5hbWVkIGZyb20gTGF5
b3V0VGVzdHMvZmFzdC9pbnNwZWN0b3Ivc3R5bGUuaHRtbC4KKyAgICAgICAgKiBmYXN0L2luc3Bl
Y3Rvci1zdXBwb3J0L3VuY2F1Z2h0LWRvbTEtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dDogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci91bmNhdWdodC1kb20xLWV4Y2VwdGlvbi1leHBl
Y3RlZC50eHQuCisgICAgICAgICogZmFzdC9pbnNwZWN0b3Itc3VwcG9ydC91bmNhdWdodC1kb20x
LWV4Y2VwdGlvbi5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuY2F1
Z2h0LWRvbTEtZXhjZXB0aW9uLmh0bWwuCisgICAgICAgICogZmFzdC9pbnNwZWN0b3Itc3VwcG9y
dC91bmNhdWdodC1kb20zLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdW5jYXVnaHQtZG9tMy1leGNlcHRpb24tZXhwZWN0ZWQudHh0Lgor
ICAgICAgICAqIGZhc3QvaW5zcGVjdG9yLXN1cHBvcnQvdW5jYXVnaHQtZG9tMy1leGNlcHRpb24u
aHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2luc3BlY3Rvci91bmNhdWdodC1kb20zLWV4
Y2VwdGlvbi5odG1sLgorICAgICAgICAqIGZhc3QvaW5zcGVjdG9yLXN1cHBvcnQvdW5jYXVnaHQt
ZG9tOC1leGNlcHRpb24tZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3VuY2F1Z2h0LWRvbTgtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBm
YXN0L2luc3BlY3Rvci1zdXBwb3J0L3VuY2F1Z2h0LWRvbTgtZXhjZXB0aW9uLmh0bWw6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5jYXVnaHQtZG9tOC1leGNlcHRpb24uaHRt
bC4KKyAgICAgICAgKiBpbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanM6CisgICAgICAgIChvbmxv
YWQpOgorICAgICAgICAoZXZhbHVhdGVJbldlYkluc3BlY3Rvcik6CisgICAgICAgIChub3RpZnlE
b25lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVzb3VyY2VzL3RpbWVsaW5lLWlmcmFtZS1kYXRh
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS1sYXlvdXQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS1sYXlvdXQuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvdGltZWxpbmUtbWFyay10aW1lbGluZS5odG1sOgorICAgICAgICAqIGlu
c3BlY3Rvci90aW1lbGluZS1wYWludC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGlu
ZS1wYXJzZS1odG1sLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUt
cGFyc2UtaHRtbC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS1yZWNhbGN1bGF0
ZS1zdHlsZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS1yZWNh
bGN1bGF0ZS1zdHlsZXMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0
LXRhZy0xLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0
LXRhZy0xLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTIuanM6CisgICAg
ICAgICogaW5zcGVjdG9yL3RpbWVsaW5lLXRlc3QuanM6CisgICAgICAgIChwcmludFRpbWVsaW5l
UmVjb3Jkcyk6CisgICAgICAgICgpOgorICAgICAgICAoZHVtcFRpbWVsaW5lUmVjb3Jkcyk6Cisg
ICAgICAgIChwcmludFByb3BzKToKKyAgICAgICAgKGZyb250ZW5kX2dldFRpbWVsaW5lUmVzdWx0
cyk6CisKIDIwMDktMTEtMTcgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2luc3BlY3Rvci1zdXBwb3J0L2Nzc1VSTFF1b3Rlcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2luc3BlY3Rvci1zdXBwb3J0L2Nzc1VSTFF1b3Rlcy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY1OGQyNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQvY3NzVVJMUXVvdGVzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK0FMRVJUOiB1cmwoZmlsZTovLy91bnF1b3RlZCkg
KFVSTCBzaG91bGQgbm90IGJlIHF1b3RlZCkKK0FMRVJUOiB1cmwoZmlsZTovLy9ub1F1b3Rlc05l
ZWRlZCkgKFVSTCBzaG91bGQgbm90IGJlIHF1b3RlZCkKK0FMRVJUOiB1cmwoJ2ZpbGU6Ly8vc2hv
dWxkKFF1b3RlKScpIChVUkwgc2hvdWxkIGJlIHF1b3RlZCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9pbnNwZWN0b3Itc3VwcG9ydC9jc3NVUkxRdW90ZXMuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQvY3NzVVJMUXVvdGVzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgwYjlhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQvY3NzVVJMUXVvdGVzLmh0bWwKQEAgLTAsMCAr
MSwxMyBAQAorPGRpdiBpZD0idGVzdFVucXVvdGVkIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTog
dXJsKGZpbGU6Ly8vdW5xdW90ZWQpIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3ROb1F1b3Rlc05lZWRl
ZCIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVybCgnZmlsZTovLy9ub1F1b3Rlc05lZWRlZCcp
Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3RTaG91bGRRdW90ZSIgc3R5bGU9ImJhY2tncm91bmQtaW1h
Z2U6IHVybCgnZmlsZTovLy9zaG91bGQoUXVvdGUpJykiPjwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0
aW9uIHRlc3QoaWQsIHJlYXNvbikgeworICAgIGFsZXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGlkKS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWltYWdlIikgKyAiICgiICsg
cmVhc29uICsgIikiKTsKK30KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwordGVzdCgidGVzdFVucXVvdGVkIiwg
IlVSTCBzaG91bGQgbm90IGJlIHF1b3RlZCIpOwordGVzdCgidGVzdE5vUXVvdGVzTmVlZGVkIiwg
IlVSTCBzaG91bGQgbm90IGJlIHF1b3RlZCIpOwordGVzdCgidGVzdFNob3VsZFF1b3RlIiwgIlVS
TCBzaG91bGQgYmUgcXVvdGVkIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQvbWF0Y2hlZHJ1bGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2luc3BlY3Rvci1zdXBwb3J0L21hdGNoZWRydWxlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjMxYTVmZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2luc3BlY3Rvci1zdXBwb3J0L21hdGNoZWRydWxlcy5odG1sCkBAIC0wLDAgKzEsMTcg
QEAKKzxodG1sPgorPHN0eWxlPgorZGl2IHsKKyAgY29sb3I6IHJlZDsKK30KKworZGl2OjpzZWxl
Y3Rpb24geworICBiYWNrZ3JvdW5kLWNvbG9yOiBsaW1lOworfQorPC9zdHlsZT4KKworPGRpdiBp
ZD0iZm9vIj5IZWxsbyB3b3JsZDwvZGl2PgorCis8c2NyaXB0PgorZG9jdW1lbnQud3JpdGUoJzxw
PlRoZSBudW1iZXIgb2YgbWF0Y2hlZCBydWxlcyBpczogJyArIAorZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0TWF0Y2hlZENTU1J1bGVzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb28nKSwgJycp
Lmxlbmd0aCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW5zcGVj
dG9yLXN1cHBvcnQvc3R5bGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBv
cnQvc3R5bGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTRhMzJm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbnNwZWN0b3Itc3VwcG9ydC9z
dHlsZS5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorZGl2IHsgYmFja2dyb3Vu
ZDogcHVycGxlOyBtYXJnaW46IDFlbTsgY29sb3I6IHdoaXRlOyBmb250OiAyNHB4ICdMdWNpZGEg
R3JhbmRlJzsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorTm90ZSB0aGF0IGJhY2tncm91
bmQgYW5kIGZvbnQgYXJlIGJvdGggYnVnZ3kgcmlnaHQgbm93IQorPGRpdiBpZD0iZm9vIj5UZXN0
PC9kaXY+Cis8c2NyaXB0PgordmFyIHJ1bGVMaXN0ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
TWF0Y2hlZENTU1J1bGVzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb28nKSwgJycpOwordmFy
IGRlY2wgPSBydWxlTGlzdFswXS5zdHlsZTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgZGVjbC5sZW5n
dGg7IGkrKykgeworICB2YXIgc2hvcnRoYW5kID0gZGVjbC5nZXRQcm9wZXJ0eVNob3J0aGFuZChk
ZWNsW2ldKTsKKyAgZG9jdW1lbnQud3JpdGUoZGVjbFtpXSArICI6ICIgKyBkZWNsLmdldFByb3Bl
cnR5VmFsdWUoZGVjbFtpXSkpOworICBpZiAoc2hvcnRoYW5kKSB7CisgICAgIGRvY3VtZW50Lndy
aXRlKCIgKG9yaWdpbmFsIHByb3BlcnR5IHdhcyAiICsgc2hvcnRoYW5kCisgICAgICAgICAgICsg
KGRlY2wuaXNQcm9wZXJ0eUltcGxpY2l0KGRlY2xbaV0pID8gIiBhbmQgcHJvcGVydHkgd2FzIGlt
cGxpY2l0bHkgc2V0LikiIDogIikiKSk7CisgIH0KKyAgZG9jdW1lbnQud3JpdGUoICI8YnI+Iik7
Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQvdW5jYXVnaHQtZG9tMS1leGNlcHRpb24tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9pbnNwZWN0b3Itc3VwcG9ydC91bmNhdWdodC1kb20xLWV4
Y2VwdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZmU4YTU2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1
cHBvcnQvdW5jYXVnaHQtZG9tMS1leGNlcHRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBA
QAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBJTkRFWF9TSVpFX0VSUjogRE9NIEV4Y2VwdGlv
biAxOiBJbmRleCBvciBzaXplIHdhcyBuZWdhdGl2ZSwgb3IgZ3JlYXRlciB0aGFuIHRoZSBhbGxv
d2VkIHZhbHVlLgorVGhpcyB0ZXN0cyB0aGF0IHdlIGFyZSBnZXR0aW5nIHRoZSBjb3JyZWN0IG1l
c3NhZ2UgZm9yIERPTSBFeGNlcHRpb24gMTogSU5ERVhfU0laRV9FUlIuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2luc3BlY3Rvci1zdXBwb3J0L3VuY2F1Z2h0LWRvbTEtZXhjZXB0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2luc3BlY3Rvci1zdXBwb3J0L3VuY2F1Z2h0LWRvbTEt
ZXhjZXB0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVlOGM5
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQv
dW5jYXVnaHQtZG9tMS1leGNlcHRpb24uaHRtbApAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KKworZnVuY3Rpb24gb25sb2FkKCkKK3sKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKKyAgICAvLyBGb2xsb3dpbmcgY29kZSBnZW5lcmF0ZXMgYW4gZXhjZXB0aW9uLgor
ICAgIHZhciBwID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoKTsKKyAgICBwLnRleHRDb250ZW50
ID0gImZvbyI7CisgICAgcC5zcGxpdFRleHQoMTAwMDApOworfQorCis8L3NjcmlwdD4KKzwvaGVh
ZD4KKworPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8cD4KK1RoaXMgdGVzdHMgdGhhdCB3ZSBh
cmUgZ2V0dGluZyB0aGUgY29ycmVjdCBtZXNzYWdlIGZvciBET00gRXhjZXB0aW9uIDE6IElOREVY
X1NJWkVfRVJSLgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2luc3BlY3Rvci1zdXBwb3J0L3VuY2F1Z2h0LWRvbTMtZXhjZXB0aW9uLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQvdW5jYXVnaHQtZG9t
My1leGNlcHRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjI4N2Y5M2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2luc3BlY3Rv
ci1zdXBwb3J0L3VuY2F1Z2h0LWRvbTMtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA5OiBISUVSQVJDSFlfUkVRVUVTVF9FUlI6IERP
TSBFeGNlcHRpb24gMzogQSBOb2RlIHdhcyBpbnNlcnRlZCBzb21ld2hlcmUgaXQgZG9lc24ndCBi
ZWxvbmcuCitUaGlzIHRlc3RzIHRoYXQgd2UgYXJlIGdldHRpbmcgdGhlIGNvcnJlY3QgbWVzc2Fn
ZSBmb3IgRE9NIEV4Y2VwdGlvbiAzOiBISUVSQVJDSFlfUkVRVUVTVF9FUlIuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2luc3BlY3Rvci1zdXBwb3J0L3VuY2F1Z2h0LWRvbTMtZXhjZXB0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2luc3BlY3Rvci1zdXBwb3J0L3VuY2F1Z2h0LWRv
bTMtZXhjZXB0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ0
NDUxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBv
cnQvdW5jYXVnaHQtZG9tMy1leGNlcHRpb24uaHRtbApAQCAtMCwwICsxLDIxIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdD4KKworZnVuY3Rpb24gb25sb2FkKCkKK3sKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgZG9jdW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgpKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ib25sb2FkKCki
PgorPHA+CitUaGlzIHRlc3RzIHRoYXQgd2UgYXJlIGdldHRpbmcgdGhlIGNvcnJlY3QgbWVzc2Fn
ZSBmb3IgRE9NIEV4Y2VwdGlvbiAzOiBISUVSQVJDSFlfUkVRVUVTVF9FUlIuCis8L3A+CisKKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1
cHBvcnQvdW5jYXVnaHQtZG9tOC1leGNlcHRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9pbnNwZWN0b3Itc3VwcG9ydC91bmNhdWdodC1kb204LWV4Y2VwdGlvbi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y3OTNhMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQvdW5jYXVnaHQtZG9t
OC1leGNlcHRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDk6IE5PVF9GT1VORF9FUlI6IERPTSBFeGNlcHRpb24gODogQW4gYXR0ZW1wdCB3YXMg
bWFkZSB0byByZWZlcmVuY2UgYSBOb2RlIGluIGEgY29udGV4dCB3aGVyZSBpdCBkb2VzIG5vdCBl
eGlzdC4KK1RoaXMgdGVzdHMgdGhhdCB3ZSBhcmUgZ2V0dGluZyB0aGUgY29ycmVjdCBtZXNzYWdl
IGZvciBET00gRXhjZXB0aW9uIDg6IE5PVF9GT1VORF9FUlIuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2luc3BlY3Rvci1zdXBwb3J0L3VuY2F1Z2h0LWRvbTgtZXhjZXB0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2luc3BlY3Rvci1zdXBwb3J0L3VuY2F1Z2h0LWRvbTgtZXhjZXB0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQzOTJhZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQvdW5jYXVn
aHQtZG9tOC1leGNlcHRpb24uaHRtbApAQCAtMCwwICsxLDIxIEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdD4KKworZnVuY3Rpb24gb25sb2FkKCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgZG9jdW1lbnQuYXBwZW5kQ2hpbGQoKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisK
Kzxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPHA+CitUaGlzIHRlc3RzIHRoYXQgd2UgYXJlIGdl
dHRpbmcgdGhlIGNvcnJlY3QgbWVzc2FnZSBmb3IgRE9NIEV4Y2VwdGlvbiA4OiBOT1RfRk9VTkRf
RVJSLgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2luc3BlY3Rvci9jc3NVUkxRdW90ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9pbnNwZWN0b3IvY3NzVVJMUXVvdGVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjY1OGQyNy4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2luc3Bl
Y3Rvci9jc3NVUkxRdW90ZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCww
IEBACi1BTEVSVDogdXJsKGZpbGU6Ly8vdW5xdW90ZWQpIChVUkwgc2hvdWxkIG5vdCBiZSBxdW90
ZWQpCi1BTEVSVDogdXJsKGZpbGU6Ly8vbm9RdW90ZXNOZWVkZWQpIChVUkwgc2hvdWxkIG5vdCBi
ZSBxdW90ZWQpCi1BTEVSVDogdXJsKCdmaWxlOi8vL3Nob3VsZChRdW90ZSknKSAoVVJMIHNob3Vs
ZCBiZSBxdW90ZWQpCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yL2Nz
c1VSTFF1b3Rlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbnNwZWN0b3IvY3NzVVJMUXVvdGVz
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MGI5YTguLjAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9pbnNwZWN0b3IvY3NzVVJMUXVvdGVzLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMyArMCwwIEBACi08ZGl2IGlkPSJ0ZXN0VW5xdW90ZWQiIHN0eWxlPSJiYWNr
Z3JvdW5kLWltYWdlOiB1cmwoZmlsZTovLy91bnF1b3RlZCkiPjwvZGl2PgotPGRpdiBpZD0idGVz
dE5vUXVvdGVzTmVlZGVkIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogdXJsKCdmaWxlOi8vL25v
UXVvdGVzTmVlZGVkJykiPjwvZGl2PgotPGRpdiBpZD0idGVzdFNob3VsZFF1b3RlIiBzdHlsZT0i
YmFja2dyb3VuZC1pbWFnZTogdXJsKCdmaWxlOi8vL3Nob3VsZChRdW90ZSknKSI+PC9kaXY+Ci08
c2NyaXB0PgotZnVuY3Rpb24gdGVzdChpZCwgcmVhc29uKSB7Ci0gICAgYWxlcnQoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtaW1h
Z2UiKSArICIgKCIgKyByZWFzb24gKyAiKSIpOwotfQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci10ZXN0KCJ0
ZXN0VW5xdW90ZWQiLCAiVVJMIHNob3VsZCBub3QgYmUgcXVvdGVkIik7Ci10ZXN0KCJ0ZXN0Tm9R
dW90ZXNOZWVkZWQiLCAiVVJMIHNob3VsZCBub3QgYmUgcXVvdGVkIik7Ci10ZXN0KCJ0ZXN0U2hv
dWxkUXVvdGUiLCAiVVJMIHNob3VsZCBiZSBxdW90ZWQiKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9pbnNwZWN0b3IvbWF0Y2hlZHJ1bGVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2luc3BlY3Rvci9tYXRjaGVkcnVsZXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzFhNWZmNC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2luc3Bl
Y3Rvci9tYXRjaGVkcnVsZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLTxo
dG1sPgotPHN0eWxlPgotZGl2IHsKLSAgY29sb3I6IHJlZDsKLX0KLQotZGl2OjpzZWxlY3Rpb24g
ewotICBiYWNrZ3JvdW5kLWNvbG9yOiBsaW1lOwotfQotPC9zdHlsZT4KLQotPGRpdiBpZD0iZm9v
Ij5IZWxsbyB3b3JsZDwvZGl2PgotCi08c2NyaXB0PgotZG9jdW1lbnQud3JpdGUoJzxwPlRoZSBu
dW1iZXIgb2YgbWF0Y2hlZCBydWxlcyBpczogJyArIAotZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
TWF0Y2hlZENTU1J1bGVzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb28nKSwgJycpLmxlbmd0
aCk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yL3N0
eWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2luc3BlY3Rvci9zdHlsZS5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTRhMzJmLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvaW5zcGVjdG9yL3N0eWxlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBA
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci08L3Nj
cmlwdD4KLTxzdHlsZT4KLWRpdiB7IGJhY2tncm91bmQ6IHB1cnBsZTsgbWFyZ2luOiAxZW07IGNv
bG9yOiB3aGl0ZTsgZm9udDogMjRweCAnTHVjaWRhIEdyYW5kZSc7IH0KLTwvc3R5bGU+Ci08L2hl
YWQ+Ci08Ym9keT4KLU5vdGUgdGhhdCBiYWNrZ3JvdW5kIGFuZCBmb250IGFyZSBib3RoIGJ1Z2d5
IHJpZ2h0IG5vdyEKLTxkaXYgaWQ9ImZvbyI+VGVzdDwvZGl2PgotPHNjcmlwdD4KLXZhciBydWxl
TGlzdCA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldE1hdGNoZWRDU1NSdWxlcyhkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZm9vJyksICcnKTsKLXZhciBkZWNsID0gcnVsZUxpc3RbMF0uc3R5bGU7
Ci1mb3IgKHZhciBpID0gMDsgaSA8IGRlY2wubGVuZ3RoOyBpKyspIHsKLSAgdmFyIHNob3J0aGFu
ZCA9IGRlY2wuZ2V0UHJvcGVydHlTaG9ydGhhbmQoZGVjbFtpXSk7Ci0gIGRvY3VtZW50LndyaXRl
KGRlY2xbaV0gKyAiOiAiICsgZGVjbC5nZXRQcm9wZXJ0eVZhbHVlKGRlY2xbaV0pKTsKLSAgaWYg
KHNob3J0aGFuZCkgewotICAgICBkb2N1bWVudC53cml0ZSgiIChvcmlnaW5hbCBwcm9wZXJ0eSB3
YXMgIiArIHNob3J0aGFuZAotICAgICAgICAgICArIChkZWNsLmlzUHJvcGVydHlJbXBsaWNpdChk
ZWNsW2ldKSA/ICIgYW5kIHByb3BlcnR5IHdhcyBpbXBsaWNpdGx5IHNldC4pIiA6ICIpIikpOwot
ICB9Ci0gIGRvY3VtZW50LndyaXRlKCAiPGJyPiIpOwotfQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qu
anMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKaW5kZXggZjg3YmJj
MC4uY2EwYWE4MyAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcwpAQCAt
Niw3MiArNiwzNCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogCi0vLyBXZSBpZ25vcmUgaW5p
dGlhbCBsb2FkIG9mIHRoZSBwYWdlLCBlbmFibGUgaW5zcGVjdG9yIGFuZCBpbml0aWF0ZSByZWxv
YWQuIFRoaXMgYWxsb3dzIGluc3BlY3RvciBjb250cm9sbGVyCi0vLyB0byBjYXB0dXJlIGV2ZW50
cyB0aGF0IGhhcHBlbiBkdXJpbmcgdGhlIGluaXRpYWwgcGFnZSBsb2FkLgotdmFyIGlnbm9yZUxv
YWQgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCI/cmVsb2FkIikgPT09IC0xOwotaWYg
KGlnbm9yZUxvYWQpIHsKLSAgICAvLyBTdGFydCBpbiBhIHRpbWVyLCBhcyBzeW5jaHJvbm91cyBv
cGVuaW5nIG9mIHdlYiBpbnNwZWN0b3IgbWF5IGZhaWwgb24gV2luZG93cwotICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zaG93V2ViSW5zcGVjdG9yKCk7Ci0g
ICAgfSwgMCk7Ci19Ci0KIGZ1bmN0aW9uIG9ubG9hZCgpCiB7Ci0gICAgaWYgKGlnbm9yZUxvYWQp
IHsKLSAgICAgICAgLy8gSW5qZWN0IHNjcmlwdHMgaW50byB0aGUgZnJvbnRlbmQgb24gdGhlIGZp
cnN0IHBhc3MuICBTb21lIG90aGVyIGxvZ2ljIG1heSB3YW50IHRvCi0gICAgICAgIC8vIHVzZSB0
aGVtIGJlZm9yZSB0aGUgcmVsb2FkLgotICAgICAgICB2YXIgdG9JbmplY3QgPSBbXTsKLSAgICAg
ICAgZm9yICh2YXIgbmFtZSBpbiB3aW5kb3cpIHsKLSAgICAgICAgICAgIGlmIChuYW1lLmluZGV4
T2YoImZyb250ZW5kXyIpID09PSAwICYmIHR5cGVvZiB3aW5kb3dbbmFtZV0gPT09ICJmdW5jdGlv
biIpCi0gICAgICAgICAgICAgICAgdG9JbmplY3QucHVzaCh3aW5kb3dbbmFtZV0udG9TdHJpbmco
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSW52b2tlIGEgc2V0dXAgbWV0aG9kIGlmIGl0IGhh
cyBiZWVuIHNwZWNpZmllZAotICAgICAgICBpZiAod2luZG93WyJmcm9udGVuZF9zZXR1cCJdKSAK
LSAgICAgICAgICAgIHRvSW5qZWN0LnB1c2goImZyb250ZW5kX3NldHVwKCk7Iik7Ci0KLSAgICAg
ICAgZXZhbHVhdGVJbldlYkluc3BlY3Rvcih0b0luamVjdC5qb2luKCJcbiIpLCBmdW5jdGlvbihh
cmcpIHsKLSAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmICs9ICI/cmVsb2FkIjsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICB2YXIgb3V0cHV0RWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIG91dHB1dEVsZW1lbnQuaWQg
PSAib3V0cHV0IjsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG91dHB1dEVsZW1lbnQp
OwogCi0gICAgLy8gTWFrZSBzdXJlIHdlYiBpbnNwZWN0b3IgaGFzIHNldHRsZWQgZG93biBiZWZv
cmUgZXhlY3V0aW5nIHVzZXIgY29kZQotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoInRydWUi
LCBkb2l0KTsKLQotICAgIC8vIE1ha2Ugc3VyZSB3ZWIgaW5zcGVjdG9yIHdpbmRvdyBpcyBjbG9z
ZWQgYmVmb3JlIHRoZSB0ZXN0IGlzIGludGVycnVwdGVkLgotICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGFsZXJ0KCJJbnRlcm5hbCB0aW1lb3V0IGV4Y2VlZGVkLiIpCi0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7Ci0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLSAgICB9LCAxMDAwMCk7Cisg
ICAgdmFyIHRvSW5qZWN0ID0gW107CisgICAgZm9yICh2YXIgbmFtZSBpbiB3aW5kb3cpIHsKKyAg
ICAgICAgaWYgKG5hbWUuaW5kZXhPZigiZnJvbnRlbmRfIikgPT09IDAgJiYgdHlwZW9mIHdpbmRv
d1tuYW1lXSA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHRvSW5qZWN0LnB1c2god2luZG93
W25hbWVdLnRvU3RyaW5nKCkpOworICAgIH0KKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKHRv
SW5qZWN0LmpvaW4oIlxuIiksIGRvaXQpOwogfQogCiBmdW5jdGlvbiBldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKHNjcmlwdCwgY2FsbGJhY2spCiB7CiAgICAgdmFyIGNhbGxJZCA9IGxhc3RDYWxsSWQr
KzsKICAgICBjYWxsYmFja3NbY2FsbElkXSA9IGNhbGxiYWNrOwotICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGNhbGxJ
ZCwgc2NyaXB0KTsKLSAgICB9LCAwKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9y
KGNhbGxJZCwgc2NyaXB0KTsKIH0KIAogZnVuY3Rpb24gbm90aWZ5RG9uZSgpCiB7Ci0gICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xvc2VXZWJJbnNwZWN0
b3IoKTsKKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJ0cnVlIiwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLSAgICB9LCAwKTsKKyAg
ICB9KTsKIH0KIAogZnVuY3Rpb24gb3V0cHV0KHRleHQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3RpbWVsaW5lLWlmcmFtZS1kYXRhLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3RpbWVsaW5lLWlmcmFtZS1kYXRhLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRmMTZhNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvdGltZWxpbmUtaWZyYW1lLWRhdGEuaHRt
bApAQCAtMCwwICsxLDE3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2NvbnNvbGUubWFy
a1RpbWVsaW5lKCJTQ1JJUFQgVEFHIik7CisKK2Z1bmN0aW9uIGlmcmFtZU9ubG9hZCgpCit7Cisg
ICAgd2luZG93LnBhcmVudC5pZnJhbWVMb2FkZWQgPSB0cnVlOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+CisKKzxib2R5IG9ubG9hZD0iaWZyYW1lT25sb2FkKCkiPgorICAgIDxkaXY+Rm9vPC9kaXY+
Cis8L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1sYXlvdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVs
aW5lLWxheW91dC1leHBlY3RlZC50eHQKaW5kZXggYWQ2NTEzMy4uNTFjMTBkNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLWxheW91dC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLWxheW91dC1leHBlY3RlZC50eHQKQEAg
LTUsNCArNSw0IEBAIExheW91dCBQcm9wZXJ0aWVzOgogKyBjaGlsZHJlbiA6ICogREVGSU5FRCAq
CiArIGVuZFRpbWUgOiAqIERFRklORUQgKgogKyB0eXBlIDogMQotCitUZXN0IGRhdGEKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1sYXlvdXQuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1sYXlvdXQuaHRtbAppbmRleCA5NDU4YmRmLi44MjJm
MmQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbGF5b3V0Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLWxheW91dC5odG1sCkBAIC00
LDI1ICs0LDE2IEBACiA8c2NyaXB0IHNyYz0idGltZWxpbmUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0PgogCi1mdW5jdGlvbiBhbmFseXplVGltZWxpbmVEYXRhKHRpbWVsaW5lUmVjb3Jkcykg
CitmdW5jdGlvbiBwZXJmb3JtQWN0aW9ucygpCiB7Ci0gICAgLy8gVW5jb21tZW50IHRvIGRlYnVn
Z2luZyB0aGUgbGlzdCBvZiBkYXRhIHJldHVybmVkLgotICAgIC8vIGR1bXBUaW1lbGluZVJlY29y
ZHModGltZWxpbmVSZWNvcmRzKTsKLQotICAgIC8vIFNlYXJjaCBmb3IgdGhlIGZpcnN0IExheW91
dCByZWNvcmQgeW91IGNhbiBmaW5kCi0gICAgdmFyIG51bVJlY29yZHMgPSB0aW1lbGluZVJlY29y
ZHMubGVuZ3RoOwotICAgIGZvciAodmFyIGkgPSAwIDsgaSA8IG51bVJlY29yZHM7ICsraSkgewot
ICAgICAgICB2YXIgcmVjb3JkID0gdGltZWxpbmVSZWNvcmRzW2ldOwotICAgICAgICBpZiAocmVj
b3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlLkxheW91dCkgewotICAgICAgICAg
ICAgcHJpbnRUaW1lbGluZVJlY29yZFByb3BlcnRpZXMocmVjb3JkKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQorICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVudC5pbm5lckhUTUwgPSAiVGVzdCBkYXRhIjsKKyAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOwogfQogCiBmdW5jdGlvbiBkb2l0
KCkgCiB7Ci0gICAgcmV0cmlldmVUaW1lbGluZURhdGEoYW5hbHl6ZVRpbWVsaW5lRGF0YSk7Cisg
ICAgcHJpbnRUaW1lbGluZVJlY29yZHMocGVyZm9ybUFjdGlvbnMsICJMYXlvdXQiKTsKIH0KIAog
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtbWFy
ay10aW1lbGluZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLW1hcmstdGlt
ZWxpbmUuaHRtbAppbmRleCA1M2IwOThiLi5kYThjNDEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdGltZWxpbmUtbWFyay10aW1lbGluZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci90aW1lbGluZS1tYXJrLXRpbWVsaW5lLmh0bWwKQEAgLTQsNDIgKzQsMTQgQEAK
IDxzY3JpcHQgc3JjPSJ0aW1lbGluZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLXZh
ciB0aW1lbGluZU1hcmsgPSAiTUFSSyBUSU1FTElORSI7Ci0KLWZ1bmN0aW9uIGZpbmRNYXJrVGlt
ZWxpbmUocmVjb3JkKSAKK2Z1bmN0aW9uIHBlcmZvcm1BY3Rpb25zKCkKIHsKLSAgICBpZiAocmVj
b3JkLnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlLk1hcmtUaW1lbGluZSAmJiByZWNv
cmQuZGF0YS5tZXNzYWdlID09PSB0aW1lbGluZU1hcmspIHsKLSAgICAgICAgcHJpbnRUaW1lbGlu
ZVJlY29yZFByb3BlcnRpZXMocmVjb3JkKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgdmFyIG51bUNoaWxkcmVuID0gcmVjb3JkLmNoaWxkcmVuID8gcmVjb3JkLmNoaWxkcmVu
Lmxlbmd0aCA6IDA7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7
Ci0gICAgICAgIGlmIChmaW5kTWFya1RpbWVsaW5lKHJlY29yZC5jaGlsZHJlbltpXSkpCi0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1mdW5j
dGlvbiBhbmFseXplVGltZWxpbmVEYXRhKHRpbWVsaW5lUmVjb3JkcykgCi17Ci0gICAgLy8gVW5j
b21tZW50IHRvIGRlYnVnZ2luZyB0aGUgbGlzdCBvZiBkYXRhIHJldHVybmVkLgotICAgIC8vIGR1
bXBUaW1lbGluZVJlY29yZHModGltZWxpbmVSZWNvcmRzKTsKLQotICAgIHZhciBmb3VuZCA9IGZh
bHNlOwotICAgIHZhciBudW1SZWNvcmRzID0gdGltZWxpbmVSZWNvcmRzLmxlbmd0aDsKLSAgICBm
b3IgKHZhciBpID0gMCA7IGkgPCBudW1SZWNvcmRzOyArK2kpIHsKLSAgICAgICAgdmFyIHJlY29y
ZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsKLSAgICAgICAgaWYgKGZvdW5kID0gZmluZE1hcmtUaW1l
bGluZShyZWNvcmQpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmICghZm91bmQp
Ci0gICAgICAgIG91dHB1dCgiQ291bGRuJ3QgZmluZCB0aW1lbGluZSBtYXJrOiAiICsgdGltZWxp
bmVNYXJrKTsKKyAgICBjb25zb2xlLm1hcmtUaW1lbGluZSgiTUFSSyBUSU1FTElORSIpOwogfQog
CiBmdW5jdGlvbiBkb2l0KCkgCiB7Ci0gICAgcmV0cmlldmVUaW1lbGluZURhdGEoYW5hbHl6ZVRp
bWVsaW5lRGF0YSk7CisgICAgcHJpbnRUaW1lbGluZVJlY29yZHMocGVyZm9ybUFjdGlvbnMsICJN
YXJrVGltZWxpbmUiKTsKIH0KIAogPC9zY3JpcHQ+CkBAIC01MCw5ICsyMiw1IEBAIGZ1bmN0aW9u
IGRvaXQoKQogVGVzdHMgdGhlIFRpbWVsaW5lIEFQSSBtYXJrIGZlYXR1cmUKIDwvcD4KIAotPHNj
cmlwdD4KLSAgICBjb25zb2xlLm1hcmtUaW1lbGluZSh0aW1lbGluZU1hcmspOwotPC9zY3JpcHQ+
Ci0KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1wYWludC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXBhaW50
Lmh0bWwKaW5kZXggYWM4NDk0MS4uMjFkODkyZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lLXBhaW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Rp
bWVsaW5lLXBhaW50Lmh0bWwKQEAgLTQsMjUgKzQsMTUgQEAKIDxzY3JpcHQgc3JjPSJ0aW1lbGlu
ZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKLWZ1bmN0aW9uIGFuYWx5emVUaW1lbGlu
ZURhdGEodGltZWxpbmVSZWNvcmRzKSAKK2Z1bmN0aW9uIHBlcmZvcm1BY3Rpb25zKCkKIHsKLSAg
ICAvLyBVbmNvbW1lbnQgdG8gZGVidWdnaW5nIHRoZSBsaXN0IG9mIGRhdGEgcmV0dXJuZWQuCi0g
ICAgLy8gZHVtcFRpbWVsaW5lUmVjb3Jkcyh0aW1lbGluZVJlY29yZHMpOwotCi0gICAgLy8gU2Vh
cmNoIGZvciB0aGUgZmlyc3QgUGFpbnQgcmVjb3JkIHlvdSBjYW4gZmluZAotICAgIHZhciBudW1S
ZWNvcmRzID0gdGltZWxpbmVSZWNvcmRzLmxlbmd0aDsKLSAgICBmb3IgKHZhciBpID0gMCA7IGkg
PCBudW1SZWNvcmRzOyArK2kpIHsKLSAgICAgICAgdmFyIHJlY29yZCA9IHRpbWVsaW5lUmVjb3Jk
c1tpXTsKLSAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlw
ZS5QYWludCkgewotICAgICAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZFByb3BlcnRpZXMocmVj
b3JkKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRp
c3BsYXkoKTsKIH0KIAogZnVuY3Rpb24gZG9pdCgpIAogewotICAgIHJldHJpZXZlVGltZWxpbmVE
YXRhKGFuYWx5emVUaW1lbGluZURhdGEpOworICAgIHByaW50VGltZWxpbmVSZWNvcmRzKHBlcmZv
cm1BY3Rpb25zLCAiUGFpbnQiKTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtcGFyc2UtaHRtbC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtcGFyc2UtaHRtbC1leHBlY3RlZC50eHQKaW5kZXggOThj
MzM3Yi4uZDQyYThlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5l
LXBhcnNlLWh0bWwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS1wYXJzZS1odG1sLWV4cGVjdGVkLnR4dApAQCAtNSw0ICs1LDQgQEAgUGFyc2VIVE1MIFBy
b3BlcnRpZXM6CiArIGNoaWxkcmVuIDogKiBERUZJTkVEICoKICsgZW5kVGltZSA6ICogREVGSU5F
RCAqCiArIHR5cGUgOiA0Ci0KK1Rlc3QgZGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1wYXJzZS1odG1sLmh0bWwKaW5kZXggNzE1ZWI2Yy4uMTFkOGY1YSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXBhcnNlLWh0bWwuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtcGFyc2UtaHRtbC5odG1sCkBAIC00LDI1ICs0
LDE2IEBACiA8c2NyaXB0IHNyYz0idGltZWxpbmUtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
PgogCi1mdW5jdGlvbiBhbmFseXplVGltZWxpbmVEYXRhKHRpbWVsaW5lUmVjb3JkcykgCitmdW5j
dGlvbiBwZXJmb3JtQWN0aW9ucygpCiB7Ci0gICAgLy8gVW5jb21tZW50IHRvIGRlYnVnZ2luZyB0
aGUgbGlzdCBvZiBkYXRhIHJldHVybmVkLgotICAgIC8vIGR1bXBUaW1lbGluZVJlY29yZHModGlt
ZWxpbmVSZWNvcmRzKTsKLQotICAgIC8vIFNlYXJjaCBmb3IgdGhlIGZpcnN0IFBhcnNlSFRNTCBy
ZWNvcmQgeW91IGNhbiBmaW5kCi0gICAgdmFyIG51bVJlY29yZHMgPSB0aW1lbGluZVJlY29yZHMu
bGVuZ3RoOwotICAgIGZvciAodmFyIGkgPSAwIDsgaSA8IG51bVJlY29yZHM7ICsraSkgewotICAg
ICAgICB2YXIgcmVjb3JkID0gdGltZWxpbmVSZWNvcmRzW2ldOwotICAgICAgICBpZiAocmVjb3Jk
LnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlLlBhcnNlSFRNTCkgewotICAgICAgICAg
ICAgcHJpbnRUaW1lbGluZVJlY29yZFByb3BlcnRpZXMocmVjb3JkKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQorICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVudC5pbm5lckhUTUwgPSAiVGVzdCBkYXRhIjsKKyAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOwogfQogCiBmdW5jdGlvbiBkb2l0
KCkgCiB7Ci0gICAgcmV0cmlldmVUaW1lbGluZURhdGEoYW5hbHl6ZVRpbWVsaW5lRGF0YSk7Cisg
ICAgcHJpbnRUaW1lbGluZVJlY29yZHMocGVyZm9ybUFjdGlvbnMsICJQYXJzZUhUTUwiKTsKIH0K
IAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUt
cmVjYWxjdWxhdGUtc3R5bGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1yZWNhbGN1bGF0ZS1zdHlsZXMtZXhwZWN0ZWQudHh0CmluZGV4IGIzOGRjZWQuLmU1
MzJhMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1yZWNhbGN1
bGF0ZS1zdHlsZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1l
bGluZS1yZWNhbGN1bGF0ZS1zdHlsZXMtZXhwZWN0ZWQudHh0CkBAIC01LDQgKzUsNCBAQCBSZWNh
bGN1bGF0ZVN0eWxlcyBQcm9wZXJ0aWVzOgogKyBjaGlsZHJlbiA6ICogREVGSU5FRCAqCiArIGVu
ZFRpbWUgOiAqIERFRklORUQgKgogKyB0eXBlIDogMgotCitUZXN0IGRhdGEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1yZWNhbGN1bGF0ZS1zdHlsZXMuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1yZWNhbGN1bGF0ZS1zdHlsZXMuaHRtbApp
bmRleCAxMmZhMWVmLi5jNGU0ZDM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dGltZWxpbmUtcmVjYWxjdWxhdGUtc3R5bGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3RpbWVsaW5lLXJlY2FsY3VsYXRlLXN0eWxlcy5odG1sCkBAIC0yLDI3ICsyLDI2IEBACiA8
aGVhZD4KIDxzY3JpcHQgc3JjPSJpbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0idGltZWxpbmUtdGVzdC5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKy50ZXN0LXN0eWxl
IHsKKyAgICBjb2xvcjogcmVkOworfQorPC9zdHlsZT4KKwogPHNjcmlwdD4KIAotZnVuY3Rpb24g
YW5hbHl6ZVRpbWVsaW5lRGF0YSh0aW1lbGluZVJlY29yZHMpIAorZnVuY3Rpb24gcGVyZm9ybUFj
dGlvbnMoKQogewotICAgIC8vIFVuY29tbWVudCB0byBkZWJ1Z2dpbmcgdGhlIGxpc3Qgb2YgZGF0
YSByZXR1cm5lZC4KLSAgICAvLyBkdW1wVGltZWxpbmVSZWNvcmRzKHRpbWVsaW5lUmVjb3Jkcyk7
Ci0KLSAgICAvLyBTZWFyY2ggZm9yIHRoZSBmaXJzdCBSZWNhbGN1bGF0ZVN0eWxlcyByZWNvcmQg
eW91IGNhbiBmaW5kCi0gICAgdmFyIG51bVJlY29yZHMgPSB0aW1lbGluZVJlY29yZHMubGVuZ3Ro
OwotICAgIGZvciAodmFyIGkgPSAwIDsgaSA8IG51bVJlY29yZHM7ICsraSkgewotICAgICAgICB2
YXIgcmVjb3JkID0gdGltZWxpbmVSZWNvcmRzW2ldOwotICAgICAgICBpZiAocmVjb3JkLnR5cGUg
PT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlLlJlY2FsY3VsYXRlU3R5bGVzKSB7Ci0gICAgICAg
ICAgICBwcmludFRpbWVsaW5lUmVjb3JkUHJvcGVydGllcyhyZWNvcmQpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXN0eWxlIjsK
KyAgICBlbGVtZW50LmlubmVySFRNTCA9ICJUZXN0IGRhdGEiOworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZWxlbWVudCk7CiB9CiAKIGZ1bmN0aW9uIGRvaXQoKSAKIHsKLSAgICByZXRy
aWV2ZVRpbWVsaW5lRGF0YShhbmFseXplVGltZWxpbmVEYXRhKTsKKyAgICBwcmludFRpbWVsaW5l
UmVjb3JkcyhwZXJmb3JtQWN0aW9ucywgIlJlY2FsY3VsYXRlU3R5bGVzIik7CiB9CiAKIDwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10
YWctMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0
LXRhZy0xLWV4cGVjdGVkLnR4dAppbmRleCAzMDExNDQxLi5iZGZhNWI0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0xLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0xLWV4cGVjdGVk
LnR4dApAQCAtMywxMiArMywxMSBAQCBUZXN0cyB0aGUgVGltZWxpbmUgQVBJIGluc3RydW1lbnRh
dGlvbiBvZiBhbiBIVE1MIHNjcmlwdCB0YWcuCiBQYXJzZUhUTUwKIC0tLS0+IEV2YWx1YXRlU2Ny
aXB0CiAtLS0tLS0tLT4gTWFya1RpbWVsaW5lIDogU0NSSVBUIFRBRwotCiBFdmFsdWF0ZVNjcmlw
dCBQcm9wZXJ0aWVzOgogKyBzdGFydFRpbWUgOiAqIERFRklORUQgKgogKyBkYXRhIDogewogKy0g
dXJsIDogKiBERUZJTkVEICoKLSstIGxpbmVOdW1iZXIgOiA3NgorKy0gbGluZU51bWJlciA6IDMK
ICsgfQogKyBjaGlsZHJlbiA6ICogREVGSU5FRCAqCiArIGVuZFRpbWUgOiAqIERFRklORUQgKgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMS5odG1sCmlu
ZGV4IGY4ZWY3YjcuLjhlYTFhMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90
aW1lbGluZS1zY3JpcHQtdGFnLTEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGlt
ZWxpbmUtc2NyaXB0LXRhZy0xLmh0bWwKQEAgLTMsNjYgKzMsMzYgQEAKIDxzY3JpcHQgc3JjPSJp
bnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0idGltZWxpbmUtdGVzdC5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotdmFyIHRpbWVsaW5lTWFyayA9ICJTQ1JJUFQgVEFHIjsK
IAotZnVuY3Rpb24gYW5hbHl6ZUV2YWx1YXRlU2NyaXB0KHJlY29yZCkgCitmdW5jdGlvbiBydW5B
ZnRlcklmcmFtZUlzTG9hZGVkKGNvbnRpbnVhdGlvbikKIHsKLSAgICB2YXIgbnVtQ2hpbGRyZW4g
PSByZWNvcmQuY2hpbGRyZW4gPyByZWNvcmQuY2hpbGRyZW4ubGVuZ3RoIDogMDsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKLSAgICAgICAgdmFyIGNoaWxkID0g
cmVjb3JkLmNoaWxkcmVuW2ldOwotICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gdGltZWxpbmVB
Z2VudFJlY29yZFR5cGUuTWFya1RpbWVsaW5lCi0gICAgICAgICAgICAmJiBjaGlsZC5kYXRhLm1l
c3NhZ2UgPT09IHRpbWVsaW5lTWFyawotICAgICAgICAgICAgJiYgcmVjb3JkLmRhdGEudXJsLmlu
ZGV4T2YoInRpbWVsaW5lLXNjcmlwdC10YWctMS5odG1sIikgIT09IC0xKSB7Ci0KLSAgICAgICAg
ICAgIC8vIEZpbmlzaCBwcmludGluZyB0aGUgcmVjb3JkIGFzIGEgdHJlZQotICAgICAgICAgICAg
ZHVtcFRpbWVsaW5lUmVjb3JkKHJlY29yZCwgMSk7Ci0gICAgICAgICAgICBvdXRwdXQoIiIpOwot
Ci0gICAgICAgICAgICAvLyBOb3cgcHJpbnQgdGhlIGltcG9ydGFudCBmaWVsZHMgb2YgdGhlIHJl
Y29yZAotICAgICAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZFByb3BlcnRpZXMocmVjb3JkKTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotZnVuY3Rpb24gYW5hbHl6ZVBhcnNlSFRNTChyZWNvcmQpIAotewotICAgIC8v
IE5vdywgZHVtcCB0aGUgc3BlY2lmaWMgU2NyaXB0IHRhZyB0aGF0IGluY2x1ZGVzIHRoZSBNYXJr
ZXIgYW5kIGR1bXAgaXQgaW4gZGV0YWlsLgotICAgIHZhciBudW1DaGlsZHJlbiA9IHJlY29yZC5j
aGlsZHJlbiA/IHJlY29yZC5jaGlsZHJlbi5sZW5ndGggOiAwOwotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewotICAgICAgICB2YXIgY2hpbGQgPSByZWNvcmQuY2hp
bGRyZW5baV07Ci0gICAgICAgIGlmIChjaGlsZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3Jk
VHlwZS5FdmFsdWF0ZVNjcmlwdCkKLSAgICAgICAgICAgIGlmIChhbmFseXplRXZhbHVhdGVTY3Jp
cHQoY2hpbGQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7Ci19ICAKLQotLy8gTG9vayBmb3IgdGhlIFBhcnNlSHRtbC0+RXZhbHVhdGVTY3Jp
cHQtPk1hcmtUaW1lbGluZSB0aGF0IGNvcnJlbGF0ZXMgCi0vLyB0byB0aGUgPHNjcmlwdD4gdGFn
IGJlbG93LgotZnVuY3Rpb24gYW5hbHl6ZVRpbWVsaW5lRGF0YSh0aW1lbGluZVJlY29yZHMpIAot
ewotICAgIC8vIFVuY29tbWVudCB0byBkZWJ1Z2dpbmcgdGhlIGxpc3Qgb2YgZGF0YSByZXR1cm5l
ZC4KLSAgICAvLyBkdW1wVGltZWxpbmVSZWNvcmRzKHRpbWVsaW5lUmVjb3Jkcyk7Ci0KLSAgICAv
LyBTZWFyY2ggZm9yIGEgUGFyc2VIVE1MIHJlY29yZAotICAgIHZhciBudW1SZWNvcmRzID0gdGlt
ZWxpbmVSZWNvcmRzLmxlbmd0aDsKLSAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBudW1SZWNvcmRz
OyArK2kpIHsKLSAgICAgICAgdmFyIHJlY29yZCA9IHRpbWVsaW5lUmVjb3Jkc1tpXTsKLSAgICAg
ICAgaWYgKHJlY29yZC50eXBlID09PSB0aW1lbGluZUFnZW50UmVjb3JkVHlwZS5QYXJzZUhUTUwp
IHsKLSAgICAgICAgICAgIC8vIFVuY29tbWVudCB0byBkZWJ1ZyB0aGUgUGFyc2VIVE1MIGRhdGEg
cmVjb3JkCi0gICAgICAgICAgICAvLyBkdW1wVGltZWxpbmVSZWNvcmQocmVjb3JkLCAwKTsKLSAg
ICAgICAgICAgIG91dHB1dCgiUGFyc2VIVE1MIik7Ci0gICAgICAgICAgICBpZiAoIWFuYWx5emVQ
YXJzZUhUTUwocmVjb3JkKSkKLSAgICAgICAgICAgICAgICBvdXRwdXQoIkZhaWxlZCB0byBmaW5k
IHRpbWVsaW5lIG1hcms6ICIgKyB0aW1lbGluZU1hcmspOwotICAgICAgICB9CisgICAgZnVuY3Rp
b24gc3RlcCgpCisgICAgeworICAgICAgICBpZiAoIXdpbmRvdy5pZnJhbWVMb2FkZWQpCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KHN0ZXAsIDEwMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGNvbnRpbnVhdGlvbigpOwogICAgIH0KKyAgICBzZXRUaW1lb3V0KHN0ZXAsIDEwMCk7CiB9CiAK
IGZ1bmN0aW9uIGRvaXQoKSAKIHsKLSAgICByZXRyaWV2ZVRpbWVsaW5lRGF0YShhbmFseXplVGlt
ZWxpbmVEYXRhKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQodHJ1ZSk7
CisKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Cisg
ICAgaWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMvdGltZWxpbmUtaWZyYW1lLWRhdGEuaHRtbCI7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworCisgICAgcnVuQWZ0ZXJJZnJh
bWVJc0xvYWRlZChmdW5jdGlvbigpIHsKKyAgICAgICAgcHJpbnRUaW1lbGluZVJlY29yZHMobnVs
bCwgbnVsbCwgZnVuY3Rpb24ocmVjb3JkKSB7CisgICAgICAgICAgICBpZiAocmVjb3JkLnR5cGUg
PT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlLkV2YWx1YXRlU2NyaXB0KQorICAgICAgICAgICAg
ICAgIHByaW50VGltZWxpbmVSZWNvcmRQcm9wZXJ0aWVzKHJlY29yZCk7CisgICAgICAgICAgICBl
bHNlIGlmIChyZWNvcmQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5cGUuUGFyc2VIVE1M
KQorICAgICAgICAgICAgICAgIGR1bXBUaW1lbGluZVJlY29yZChyZWNvcmQpOworICAgICAgICB9
KTsKKyAgICB9KTsKIH0KIAogPC9zY3JpcHQ+CkBAIC03Myw5ICs0Myw1IEBAIGZ1bmN0aW9uIGRv
aXQoKQogVGVzdHMgdGhlIFRpbWVsaW5lIEFQSSBpbnN0cnVtZW50YXRpb24gb2YgYW4gSFRNTCBz
Y3JpcHQgdGFnLgogPC9wPgogCi08c2NyaXB0PgotICAgICAvLyBNYXJrIHRoaXMgc2NyaXB0IHRh
ZyBzbyB3ZSBjYW4gZmluZCBpdCBpbiB0aGUgdGltZWxpbmUgZGF0YS4KLSAgICAgY29uc29sZS5t
YXJrVGltZWxpbmUodGltZWxpbmVNYXJrKTsKLTwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0y
LWV4cGVjdGVkLnR4dAppbmRleCAxZDIxNTM3Li5hY2Q3ZjE3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0yLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0yLWV4cGVjdGVkLnR4dApA
QCAtMSw5ICsxLDUgQEAKIFRlc3RzIHRoZSBUaW1lbGluZSBBUEkgaW5zdHJ1bWVudGF0aW9uIG9m
IGEgc2NyaXB0IHRhZyB3aXRoIGFuIGV4dGVybmFsIHNjcmlwdC4KIAotUGFyc2VIVE1MCi0tLS0t
PiBFdmFsdWF0ZVNjcmlwdAotLS0tLS0tLS0+IE1hcmtUaW1lbGluZSA6IFNDUklQVCBUQUcKLQog
RXZhbHVhdGVTY3JpcHQgUHJvcGVydGllczoKICsgc3RhcnRUaW1lIDogKiBERUZJTkVEICoKICsg
ZGF0YSA6IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1zY3Jp
cHQtdGFnLTIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFn
LTIuaHRtbAppbmRleCAxOTZiNjVmLi4wM2MxYmZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWctMi5odG1sCkBAIC0zLDY1ICszLDMxIEBACiA8c2Ny
aXB0IHNyYz0iaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InRpbWVs
aW5lLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLXZhciB0aW1lbGluZU1hcmsgPSAiU0NS
SVBUIFRBRyI7CiAKLWZ1bmN0aW9uIGFuYWx5emVFdmFsdWF0ZVNjcmlwdChyZWNvcmQpIAorZnVu
Y3Rpb24gcnVuQWZ0ZXJTY3JpcHRJc0V2YWx1YXRlZChjb250aW51YXRpb24pCiB7Ci0gICAgdmFy
IG51bUNoaWxkcmVuID0gcmVjb3JkLmNoaWxkcmVuID8gcmVjb3JkLmNoaWxkcmVuLmxlbmd0aCA6
IDA7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7Ci0gICAgICAg
IHZhciBjaGlsZCA9IHJlY29yZC5jaGlsZHJlbltpXTsKLSAgICAgICAgaWYgKGNoaWxkLnR5cGUg
PT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlLk1hcmtUaW1lbGluZQotICAgICAgICAgICAgJiYg
Y2hpbGQuZGF0YS5tZXNzYWdlID09PSB0aW1lbGluZU1hcmsKLSAgICAgICAgICAgICYmIHJlY29y
ZC5kYXRhLnVybC5pbmRleE9mKCJ0aW1lbGluZS1zY3JpcHQtdGFnLTIuanMiKSAhPT0gLTEpIHsK
LQotICAgICAgICAgICAgLy8gRmluaXNoIHByaW50aW5nIHRoZSByZWNvcmQgYXMgYSB0cmVlCi0g
ICAgICAgICAgICBkdW1wVGltZWxpbmVSZWNvcmQocmVjb3JkLCAxKTsKLSAgICAgICAgICAgIG91
dHB1dCgiIik7Ci0KLSAgICAgICAgICAgIC8vIE5vdyBwcmludCB0aGUgaW1wb3J0YW50IGZpZWxk
cyBvZiB0aGUgcmVjb3JkCi0gICAgICAgICAgICBwcmludFRpbWVsaW5lUmVjb3JkUHJvcGVydGll
cyhyZWNvcmQpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICBmdW5j
dGlvbiBzdGVwKCkKKyAgICB7CisgICAgICAgIGlmICghd2luZG93LnNjcmlwdEV2YWx1YXRlZCkK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoc3RlcCwgMTAwKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgY29udGludWF0aW9uKCk7CiAgICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBzZXRU
aW1lb3V0KHN0ZXAsIDEwMCk7CiB9CiAKLWZ1bmN0aW9uIGFuYWx5emVQYXJzZUhUTUwocmVjb3Jk
KSAKLXsKLSAgICB2YXIgbnVtQ2hpbGRyZW4gPSByZWNvcmQuY2hpbGRyZW4gPyByZWNvcmQuY2hp
bGRyZW4ubGVuZ3RoIDogMDsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyAr
K2kpIHsKLSAgICAgICAgdmFyIGNoaWxkID0gcmVjb3JkLmNoaWxkcmVuW2ldOwotICAgICAgICBp
ZiAoY2hpbGQudHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5cGUuRXZhbHVhdGVTY3JpcHQp
Ci0gICAgICAgICAgICBpZiAoYW5hbHl6ZUV2YWx1YXRlU2NyaXB0KGNoaWxkKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfSAgCi0KLS8v
IExvb2sgZm9yIHRoZSBQYXJzZUh0bWwtPkV2YWx1YXRlU2NyaXB0LT5NYXJrVGltZWxpbmUgdGhh
dCBjb3JyZWxhdGVzIAotLy8gdG8gdGhlIDxzY3JpcHQ+IHRhZyBiZWxvdy4KLWZ1bmN0aW9uIGFu
YWx5emVUaW1lbGluZURhdGEodGltZWxpbmVSZWNvcmRzKSAKK2Z1bmN0aW9uIGRvaXQoKSAKIHsK
LSAgICAvLyBVbmNvbW1lbnQgdG8gZGVidWdnaW5nIHRoZSBsaXN0IG9mIGRhdGEgcmV0dXJuZWQu
Ci0gICAgLy8gZHVtcFRpbWVsaW5lUmVjb3Jkcyh0aW1lbGluZVJlY29yZHMpOworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCh0cnVlKTsKIAotICAgIC8vIFNlYXJjaCBmb3Ig
YSBQYXJzZUhUTUwgcmVjb3JkCi0gICAgdmFyIG51bVJlY29yZHMgPSB0aW1lbGluZVJlY29yZHMu
bGVuZ3RoOwotICAgIGZvciAodmFyIGkgPSAwIDsgaSA8IG51bVJlY29yZHM7ICsraSkgewotICAg
ICAgICB2YXIgcmVjb3JkID0gdGltZWxpbmVSZWNvcmRzW2ldOwotICAgICAgICBpZiAocmVjb3Jk
LnR5cGUgPT09IHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBlLlBhcnNlSFRNTCkgewotICAgICAgICAg
ICAgLy8gVW5jb21tZW50IHRvIGRlYnVnIHRoZSBQYXJzZUhUTUwgZGF0YSByZWNvcmQKLSAgICAg
ICAgICAgIC8vIGR1bXBUaW1lbGluZVJlY29yZChyZWNvcmQsIDApOwotICAgICAgICAgICAgb3V0
cHV0KCJQYXJzZUhUTUwiKTsKLSAgICAgICAgICAgIGlmICghYW5hbHl6ZVBhcnNlSFRNTChyZWNv
cmQpKQotICAgICAgICAgICAgICAgIG91dHB1dCgiRmFpbGVkIHRvIGZpbmQgdGltZWxpbmUgbWFy
azogIiArIHRpbWVsaW5lTWFyayk7Ci0gICAgICAgIH0KLSAgICB9Ci19CisgICAgdmFyIHNjcmlw
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOworICAgIHNjcmlwdC5zcmMgPSAi
dGltZWxpbmUtc2NyaXB0LXRhZy0yLmpzIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHNjcmlwdCk7CiAKLWZ1bmN0aW9uIGRvaXQoKSAKLXsKLSAgICByZXRyaWV2ZVRpbWVsaW5lRGF0
YShhbmFseXplVGltZWxpbmVEYXRhKTsKKyAgICBydW5BZnRlclNjcmlwdElzRXZhbHVhdGVkKGZ1
bmN0aW9uKCkgeworICAgICAgICBwcmludFRpbWVsaW5lUmVjb3JkcyhudWxsLCAiRXZhbHVhdGVT
Y3JpcHQiKTsKKyAgICB9KTsKIH0KIAogPC9zY3JpcHQ+CkBAIC03Miw2ICszOCw1IEBAIGZ1bmN0
aW9uIGRvaXQoKQogVGVzdHMgdGhlIFRpbWVsaW5lIEFQSSBpbnN0cnVtZW50YXRpb24gb2YgYSBz
Y3JpcHQgdGFnIHdpdGggYW4gZXh0ZXJuYWwgc2NyaXB0LgogPC9wPgogCi08c2NyaXB0IHNyYz0i
dGltZWxpbmUtc2NyaXB0LXRhZy0yLmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTIuanMg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUtc2NyaXB0LXRhZy0yLmpzCmluZGV4IDBm
YjI3M2YuLjY0MDI0ZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGlu
ZS1zY3JpcHQtdGFnLTIuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXNj
cmlwdC10YWctMi5qcwpAQCAtMSArMSwyIEBACi1jb25zb2xlLm1hcmtUaW1lbGluZSh0aW1lbGlu
ZU1hcmspOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2NvbnNvbGUubWFya1RpbWVsaW5l
KCJTQ1JJUFQgVEFHIik7Cit3aW5kb3cuc2NyaXB0RXZhbHVhdGVkID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci90aW1lbGluZS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3RpbWVsaW5lLXRlc3QuanMKaW5kZXggMTk4NjViMi4uMDBiYjc3MCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXRlc3QuanMKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lLXRlc3QuanMKQEAgLTEsNyArMSwzIEBACi0vLyBVc2Vk
IHRvIG1hcmsgdGltZWxpbmUgcmVjb3JkcyBhcyBiZWxvbmdpbmcgdG8gdGhlIHRlc3QgZnJhbWV3
b3JrLgotdmFyIHRpbWVsaW5lT3ZlcmhlYWRNYXJrID0gIioqKk92ZXJoZWFkKioqIjsKLQotLy8g
VGltZWxpbmVBZ2VudCByZWNvcmQgdHlwZSBkZWZpbml0aW9ucyBmcm9tIHRoZSBpbnNwZWN0b3IK
IHZhciB0aW1lbGluZUFnZW50UmVjb3JkVHlwZSA9IHt9OwogCiAvLyBTY3J1YiB2YWx1ZXMgd2hl
biBwcmludGluZyBvdXQgdGhlc2UgcHJvcGVydGllcyBpbiB0aGUgcmVjb3JkIG9yIGRhdGEgZmll
bGQuCkBAIC0xMiwyNyArOCw0MCBAQCB2YXIgdGltZWxpbmVOb25EZXRlcm1pbmlzdGljUHJvcHMg
PSB7CiAgICAgdXJsIDogMQogfTsKIAotLy8gQ2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGRv
aXQoKSBmdW5jdGlvbiBpbiB0aGUgbWFpbiB0ZXN0IHBhZ2UuCi0vLyBQYXNzIGEgZnVuY3Rpb24g
dGhhdCB3aWxsIGdldCBhbiBhcnJheSBvZiB0aW1lbGluZSBkYXRhIHRvIHByb2Nlc3MuCi1mdW5j
dGlvbiByZXRyaWV2ZVRpbWVsaW5lRGF0YShhbmFseXplRnVuY3Rpb24pCitmdW5jdGlvbiBwcmlu
dFRpbWVsaW5lUmVjb3JkcyhwZXJmb3JtQWN0aW9ucywgdHlwZU5hbWUsIGZvcm1hdHRlcikKIHsK
KyAgICBpZiAocGVyZm9ybUFjdGlvbnMpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFRpbWVsaW5l
UHJvZmlsaW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgcGVyZm9ybUFjdGlvbnMoKTsKKyAgICB9
CisKICAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2Vu
dC5SZWNvcmRUeXBlIiwgZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgICAgIHRpbWVsaW5lQWdlbnRS
ZWNvcmRUeXBlID0gcmVzdWx0OwogICAgIH0pOwogCi0gICAgZXZhbHVhdGVJbldlYkluc3BlY3Rv
cigiZnJvbnRlbmRfZ2V0VGltZWxpbmVSZXN1bHRzKCkiLCBmdW5jdGlvbih0aW1lbGluZVJlY29y
ZHMpIHsKKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9nZXRUaW1lbGluZVJl
c3VsdHMiLCBmdW5jdGlvbih0aW1lbGluZVJlY29yZHMpIHsKICAgICAgICAgaWYgKHR5cGVvZih0
aW1lbGluZVJlY29yZHMpID09PSAic3RyaW5nIikKICAgICAgICAgICAgIG91dHB1dCgiRXJyb3Ig
ZmV0Y2hpbmcgVGltZWxpbmUgcmVzdWx0czogIiArIHRpbWVsaW5lUmVjb3Jkcyk7Ci0gICAgICAg
IGVsc2UgCi0gICAgICAgICAgICBhbmFseXplRnVuY3Rpb24odGltZWxpbmVSZWNvcmRzKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRpbWVsaW5lUmVj
b3Jkcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICh0eXBlTmFtZSAmJiB0aW1l
bGluZVJlY29yZHNbaV0udHlwZSA9PT0gdGltZWxpbmVBZ2VudFJlY29yZFR5cGVbdHlwZU5hbWVd
KQorICAgICAgICAgICAgICAgICAgICBwcmludFRpbWVsaW5lUmVjb3JkUHJvcGVydGllcyh0aW1l
bGluZVJlY29yZHNbaV0pOworICAgICAgICAgICAgICAgIGlmIChmb3JtYXR0ZXIpCisgICAgICAg
ICAgICAgICAgICAgIGZvcm1hdHRlcih0aW1lbGluZVJlY29yZHNbaV0pOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJs
ZWQoZmFsc2UpOwogICAgICAgICBub3RpZnlEb25lKCk7CiAgICAgfSk7Ci0gICAgbWFya1RpbWVs
aW5lUmVjb3JkQXNPdmVyaGVhZCgib25sb2FkIiArIChpZ25vcmVMb2FkID8gIjppZ25vcmVMb2Fk
IjogIiIpKTsKIH0KIAogLy8gRHVtcCBqdXN0IHRoZSByZWNvcmQgbmFtZSwgaW5kZW50aW5nIG91
dHB1dCBvbiBzZXBhcmF0ZSBsaW5lcyBmb3Igc3VicmVjb3JkcwogZnVuY3Rpb24gZHVtcFRpbWVs
aW5lUmVjb3JkKHJlY29yZCwgbGV2ZWwpIAogeworICAgIGlmICh0eXBlb2YgbGV2ZWwgIT09ICJu
dW1iZXIiKQorICAgICAgICBsZXZlbCA9IDA7CiAgICAgdmFyIHByZWZpeCA9ICIiOwogICAgIHZh
ciBzdWZmaXggPSAiIjsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxldmVsIDsgKytpKQpAQCAt
NDksMTggKzU4LDExIEBAIGZ1bmN0aW9uIGR1bXBUaW1lbGluZVJlY29yZChyZWNvcmQsIGxldmVs
KQogICAgICAgICBkdW1wVGltZWxpbmVSZWNvcmQocmVjb3JkLmNoaWxkcmVuW2ldLCBsZXZlbCAr
IDEpOwogfQogCi0vLyBEdW1wcyBhbiBlbnRpcmUgbGlzdCBvZiByZWNvcmRzLCBjdWxsaW5nIG91
dCB0aG9zZSBtYXJrZWQgYXMgb3ZlcmhlYWQKIGZ1bmN0aW9uIGR1bXBUaW1lbGluZVJlY29yZHMo
dGltZWxpbmVSZWNvcmRzKSB7Ci0gICAgdmFyIG51bVJlY29yZHMgPSB0aW1lbGluZVJlY29yZHMu
bGVuZ3RoOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtUmVjb3JkczsgKytpKSB7Ci0gICAg
ICAgIHZhciByZWNvcmQgPSB0aW1lbGluZVJlY29yZHNbaV07Ci0gICAgICAgIGlmICghaXNUaW1l
bGluZU92ZXJoZWFkUmVjb3JkKHJlY29yZCkpCi0gICAgICAgICAgICBkdW1wVGltZWxpbmVSZWNv
cmQocmVjb3JkLCAwKTsKLSAgICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aW1lbGluZVJl
Y29yZHMubGVuZ3RoOyArK2kpCisgICAgICAgIGR1bXBUaW1lbGluZVJlY29yZCh0aW1lbGluZVJl
Y29yZHNbaV0sIDApOwogfQogCi0vLyBTb3J0IHRoZSBmaWVsZHMsIHRoZW4gc3RyaXAgb3V0IHN0
YXJ0VGltZSBhbmQgZW5kVGltZSwgdGhleSBhcmUgbm90IGRldGVybWluaXN0aWMuCi0vLyBBbHNv
IHJlbW92ZSBjaGlsZHJlbiAtIHRoYXQgZmllbGQgaXNuJ3QgaW1wb3J0YW50IGZvciB0aGUgcHJp
bnRvdXQuCiBmdW5jdGlvbiBwcmludFRpbWVsaW5lUmVjb3JkUHJvcGVydGllcyhyZWNvcmQpCiB7
CiAgICAgb3V0cHV0KHRpbWVsaW5lQWdlbnRUeXBlVG9TdHJpbmcocmVjb3JkLnR5cGUpICsgIiBQ
cm9wZXJ0aWVzOiIpOwpAQCAtNzUsNyArNzcsNyBAQCBmdW5jdGlvbiBpc05vbkRldGVybWluaXN0
aWNQcm9wKHByb3BOYW1lKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotZnVuY3Rpb24gcHJpbnRQ
cm9wcyAocmVjb3JkLCBsZXZlbCkKK2Z1bmN0aW9uIHByaW50UHJvcHMocmVjb3JkLCBsZXZlbCkK
IHsKICAgICB2YXIgcHJvcHMgPSBuZXcgQXJyYXkoKTsKICAgICBmb3IgKHZhciBwcm9wIGluIHJl
Y29yZCkgewpAQCAtMTAyLDI4ICsxMDQsNiBAQCBmdW5jdGlvbiBwcmludFByb3BzIChyZWNvcmQs
IGxldmVsKQogICAgIH0KIH0KIAotLy8gUmVjb3JkcyB0aGF0IGhhdmUgYmVlbiBtYXJrZWQgd2l0
aCBjb25zb2xlLm1hcmtUaW1lbGluZSh0aW1lbGluZU1hcmspCi0vLyBhcmUgYSBwYXJ0IG9mIHRo
ZSB0ZXN0IGZyYW1ld29yayBhbmQgbm90IGEgcGFydCBvZiB0aGUgdGVzdCBiZWluZyBwZXJmb3Jt
ZWQKLWZ1bmN0aW9uIGlzVGltZWxpbmVPdmVyaGVhZFJlY29yZChyZWNvcmQpIHsKLSAgICBpZiAo
cmVjb3JkLnR5cGUgPT09IDExICYmIHJlY29yZC5kYXRhLm1lc3NhZ2UuaW5kZXhPZih0aW1lbGlu
ZU92ZXJoZWFkTWFyaykgIT09IC0xKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB2YXIgbnVt
Q2hpbGRyZW4gPSByZWNvcmQuY2hpbGRyZW4gPyAgcmVjb3JkLmNoaWxkcmVuLmxlbmd0aCA6IDA7
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7Ci0gICAgICAgIGlm
IChpc1RpbWVsaW5lT3ZlcmhlYWRSZWNvcmQocmVjb3JkLmNoaWxkcmVuW2ldKSkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vIFRoaXMg
bWFyayB3aWxsIGhlbHAgdGhlIHRlc3QgYW5hbHlzaXMgY3VsbCBvdXQgcmVjb3JkcyB0aGF0IGFy
ZSBvdmVyaGVhZC4KLWZ1bmN0aW9uIG1hcmtUaW1lbGluZVJlY29yZEFzT3ZlcmhlYWQoYXJnKQot
ewotICAgIHZhciBzdWZmaXggPSAnJzsKLSAgICBpZiAoYXJnKQotICAgICAgICBzdWZmaXggPSAi
OiAiICsgYXJnOwotICAgIGNvbnNvbGUubWFya1RpbWVsaW5lKHRpbWVsaW5lT3ZlcmhlYWRNYXJr
ICsgc3VmZml4KTsKLX0KLQogZnVuY3Rpb24gdGltZWxpbmVBZ2VudFR5cGVUb1N0cmluZyhudW1l
cmljVHlwZSkKIHsKICAgICBmb3IgKHZhciBwcm9wIGluIHRpbWVsaW5lQWdlbnRSZWNvcmRUeXBl
KSB7CkBAIC0xMzQsMjMgKzExNCwxMSBAQCBmdW5jdGlvbiB0aW1lbGluZUFnZW50VHlwZVRvU3Ry
aW5nKG51bWVyaWNUeXBlKQogfQogCiAvLyBJbmplY3RlZCBpbnRvIEluc3BlY3RvciB3aW5kb3cK
LWZ1bmN0aW9uIGZyb250ZW5kX3N0YXJ0VGltZWxpbmVQcm9maWxlcigpCi17Ci0gICAgd2luZG93
LnRpbWVsaW5lUmVzdWx0cyA9IG5ldyBBcnJheSgpOwotICAgIHdpbmRvdy5XZWJJbnNwZWN0b3Iu
YWRkUmVjb3JkVG9UaW1lbGluZSA9IGZ1bmN0aW9uKGFyZykgewotICAgICAgICB3aW5kb3cudGlt
ZWxpbmVSZXN1bHRzLnB1c2goYXJnKTsKLSAgICB9OwotICAgIHdpbmRvdy5JbnNwZWN0b3JDb250
cm9sbGVyLnN0YXJ0VGltZWxpbmVQcm9maWxlcigpOwotICAgIHJldHVybiAnZG9uZSc7Ci19Ci0K
LS8vIEluamVjdGVkIGludG8gSW5zcGVjdG9yIHdpbmRvdwogZnVuY3Rpb24gZnJvbnRlbmRfZ2V0
VGltZWxpbmVSZXN1bHRzKCkgewotICAgIHJldHVybiB3aW5kb3cudGltZWxpbmVSZXN1bHRzOwot
fQotCi0vLyBJbmplY3RlZCBpbnRvIEluc3BlY3RvciB3aW5kb3cKLS8vIGZyb250ZW5kX3NldHVw
IGFsd2F5cyBnZXRzIGNhbGxlZCBiZWZvcmUgdGhlIHBhZ2UgaXMgcmVsb2FkZWQuCi1mdW5jdGlv
biBmcm9udGVuZF9zZXR1cCgpIHsKLSAgICBmcm9udGVuZF9zdGFydFRpbWVsaW5lUHJvZmlsZXIo
KTsKKyAgICB2YXIgcmVzdWx0ID0gW107CisgICAgdmFyIGl0ZW1zID0gV2ViSW5zcGVjdG9yLnBh
bmVscy50aW1lbGluZS5faXRlbXM7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5n
dGg7ICsraSkgeworICAgICAgICByZXN1bHQucHVzaChpdGVtc1tpXS5yZWNvcmQpOworICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3VuY2F1Z2h0LWRvbTEtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci91bmNhdWdodC1kb20xLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGZlOGE1NmQuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3VuY2F1Z2h0LWRvbTEtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xLDIgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBJTkRFWF9TSVpFX0VSUjog
RE9NIEV4Y2VwdGlvbiAxOiBJbmRleCBvciBzaXplIHdhcyBuZWdhdGl2ZSwgb3IgZ3JlYXRlciB0
aGFuIHRoZSBhbGxvd2VkIHZhbHVlLgotVGhpcyB0ZXN0cyB0aGF0IHdlIGFyZSBnZXR0aW5nIHRo
ZSBjb3JyZWN0IG1lc3NhZ2UgZm9yIERPTSBFeGNlcHRpb24gMTogSU5ERVhfU0laRV9FUlIuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5jYXVnaHQtZG9tMS1leGNlcHRpb24u
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bmNhdWdodC1kb20xLWV4Y2VwdGlvbi5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWU4YzliLi4wMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci91bmNhdWdodC1kb20xLWV4Y2VwdGlvbi5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMjUgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQ+Ci0KLWZ1bmN0
aW9uIG9ubG9hZCgpCi17Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgLy8gRm9sbG93
aW5nIGNvZGUgZ2VuZXJhdGVzIGFuIGV4Y2VwdGlvbi4KLSAgICB2YXIgcCA9IGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCk7Ci0gICAgcC50ZXh0Q29udGVudCA9ICJmb28iOwotICAgIHAuc3BsaXRU
ZXh0KDEwMDAwKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0ib25s
b2FkKCkiPgotPHA+Ci1UaGlzIHRlc3RzIHRoYXQgd2UgYXJlIGdldHRpbmcgdGhlIGNvcnJlY3Qg
bWVzc2FnZSBmb3IgRE9NIEV4Y2VwdGlvbiAxOiBJTkRFWF9TSVpFX0VSUi4KLTwvcD4KLQotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuY2F1Z2h0
LWRvbTMtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bmNh
dWdodC1kb20zLWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDI4N2Y5M2QuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuY2F1
Z2h0LWRvbTMtZXhjZXB0aW9uLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAs
MCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDk6IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjogRE9N
IEV4Y2VwdGlvbiAzOiBBIE5vZGUgd2FzIGluc2VydGVkIHNvbWV3aGVyZSBpdCBkb2Vzbid0IGJl
bG9uZy4KLVRoaXMgdGVzdHMgdGhhdCB3ZSBhcmUgZ2V0dGluZyB0aGUgY29ycmVjdCBtZXNzYWdl
IGZvciBET00gRXhjZXB0aW9uIDM6IEhJRVJBUkNIWV9SRVFVRVNUX0VSUi4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci91bmNhdWdodC1kb20zLWV4Y2VwdGlvbi5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTMtZXhjZXB0aW9uLmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkNDQ1MWEuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTMtZXhjZXB0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwyMSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdD4KLQotZnVuY3Rpb24gb25sb2Fk
KCkKLXsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgZG9jdW1lbnQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgpKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0KLTxi
b2R5IG9ubG9hZD0ib25sb2FkKCkiPgotPHA+Ci1UaGlzIHRlc3RzIHRoYXQgd2UgYXJlIGdldHRp
bmcgdGhlIGNvcnJlY3QgbWVzc2FnZSBmb3IgRE9NIEV4Y2VwdGlvbiAzOiBISUVSQVJDSFlfUkVR
VUVTVF9FUlIuCi08L3A+Ci0KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci91bmNhdWdodC1kb204LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdW5jYXVnaHQtZG9tOC1leGNlcHRpb24tZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Zjc5M2ExLi4wMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci91bmNhdWdodC1kb204LWV4Y2VwdGlvbi1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA5OiBOT1Rf
Rk9VTkRfRVJSOiBET00gRXhjZXB0aW9uIDg6IEFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gcmVmZXJl
bmNlIGEgTm9kZSBpbiBhIGNvbnRleHQgd2hlcmUgaXQgZG9lcyBub3QgZXhpc3QuCi1UaGlzIHRl
c3RzIHRoYXQgd2UgYXJlIGdldHRpbmcgdGhlIGNvcnJlY3QgbWVzc2FnZSBmb3IgRE9NIEV4Y2Vw
dGlvbiA4OiBOT1RfRk9VTkRfRVJSLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3VuY2F1Z2h0LWRvbTgtZXhjZXB0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5j
YXVnaHQtZG9tOC1leGNlcHRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGQzOTJhZC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5jYXVnaHQtZG9t
OC1leGNlcHRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiBvbmxvYWQoKQotewotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICBkb2N1bWVudC5hcHBlbmRDaGlsZCgpOwotfQotCi08L3NjcmlwdD4KLTwv
aGVhZD4KLQotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Ci08cD4KLVRoaXMgdGVzdHMgdGhhdCB3
ZSBhcmUgZ2V0dGluZyB0aGUgY29ycmVjdCBtZXNzYWdlIGZvciBET00gRXhjZXB0aW9uIDg6IE5P
VF9GT1VORF9FUlIuCi08L3A+Ci0KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZhM2ZlMS4uNTY1ZWU2MSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMyBAQAorMjAwOS0xMS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogTWFrZSBEUlQgc2hvdyB3ZWIgaW5zcGVjdG9yIGZvciB0ZXN0cyBp
biBpbnNwZWN0b3IvIGZvbGRlci4KKyAgICAgICAgLSBVcGRhdGVkIERSVCB0byBzaG93L2Nsb3Nl
IGluc3BlY3RvciBmb3IgYWxsIHRlc3RzIHVuZGVyIC9pbnNwZWN0b3IKKyAgICAgICAgLSBJbnRy
b2R1Y2VkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQg
YW5kCisgICAgICAgICAgV2ViSW5zcGVjdG9yOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQg
YmVzaWRlIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkCisgICAgICAgIC0gUmVtb3ZlZCBy
ZWxvYWQgb24gZWFjaCBpbnNwZWN0b3IgdGVzdAorICAgICAgICAtIFJlbmFtZWQgZmFzdC9pbnNw
ZWN0b3IgdG8gZmFzdC9pbnNwZWN0b3Itc3VwcG9ydCBpbiBvcmRlciBub3QgdG8gdHJpZ2dlcgor
ICAgICAgICBpbnNwZWN0b3IgZm9yIHRob3NlLgorICAgICAgICAtIFJlaW1wbGVtZW50ZWQgdGlt
ZWxpbmUgdGVzdHMgaW4gb3JkZXIgdG8gZ2V0IHJpZCBvZiByZWxvYWQgdGhlcmUuCisgICAgICAg
IC0gTW92ZWQgdGVzdHMgdGhhdCBkb24ndCByZXF1aXJlIGhhcm5lc3MgaW50byB0aGUgZmFzdCBn
cm91cC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzE0NzIKKworICAgICAgICAqIFdlYkNvcmUuSW5zcGVjdG9yLmV4cDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX2Zvcm1hdFJlY29yZCk6CisKIDIwMDktMTEtMTcgIEFu
ZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5JbnNwZWN0b3Iu
ZXhwIGIvV2ViQ29yZS9XZWJDb3JlLkluc3BlY3Rvci5leHAKaW5kZXggNTc2OTk0Zi4uMDAwNTk0
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLkluc3BlY3Rvci5leHAKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLkluc3BlY3Rvci5leHAKQEAgLTE2LDMgKzE2LDUgQEAgX19aTjdXZWJDb3JlMTlJ
bnNwZWN0b3JDb250cm9sbGVyMjVldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kRWxSS05TXzZTdHJp
bmdFCiBfX1pOSzdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTdkcmF3Tm9kZUhpZ2hsaWdo
dEVSTlNfMTVHcmFwaGljc0NvbnRleHRFCiBfX1pOSzdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9s
bGVyN2VuYWJsZWRFdgogX19aTks3V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjdzZXR0aW5n
RVJLTlNfNlN0cmluZ0UKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjIxc3RhcnRU
aW1lbGluZVByb2ZpbGVyRXYKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjIwc3Rv
cFRpbWVsaW5lUHJvZmlsZXJFdgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxp
bmVQYW5lbC5qcwppbmRleCAxMWNhZGYzLi4zNzcwZWJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMTcyLDYgKzE3Miw3IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZm9ybWF0dGVkUmVjb3Jk
LmNvdW50ID0gMTsKICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLnR5cGUgPSByZWNvcmQudHlwZTsK
ICAgICAgICAgZm9ybWF0dGVkUmVjb3JkLmVuZFRpbWUgPSAodHlwZW9mIHJlY29yZC5lbmRUaW1l
ICE9PSAidW5kZWZpbmVkIikgPyByZWNvcmQuZW5kVGltZSAvIDEwMDAgOiBmb3JtYXR0ZWRSZWNv
cmQuc3RhcnRUaW1lOworICAgICAgICBmb3JtYXR0ZWRSZWNvcmQucmVjb3JkID0gcmVjb3JkOwog
CiAgICAgICAgIC8vIE1ha2UgcmVzb3VyY2UgcmVjZWl2ZSByZWNvcmQgbGFzdCBzaW5jZSByZXF1
ZXN0IHdhcyBzZW50OyBtYWtlIGZpbmlzaCByZWNvcmQgbGFzdCBzaW5jZSByZXNwb25zZSByZWNl
aXZlZC4KICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlLlJlc291cmNlU2VuZFJlcXVlc3QpIHsKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggOWM4ZGJkZC4uZjc4
NzYzMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0xMS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBm
ZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNo
ZXIuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSBEUlQgc2hvdyB3ZWIgaW5zcGVjdG9y
IGZvciB0ZXN0cyBpbiBpbnNwZWN0b3IvIGZvbGRlci4KKyAgICAgICAgLSBVcGRhdGVkIERSVCB0
byBzaG93L2Nsb3NlIGluc3BlY3RvciBmb3IgYWxsIHRlc3RzIHVuZGVyIC9pbnNwZWN0b3IKKyAg
ICAgICAgLSBJbnRyb2R1Y2VkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGluZVByb2Zp
bGluZ0VuYWJsZWQgYW5kCisgICAgICAgICAgV2ViSW5zcGVjdG9yOjpzZXRUaW1lbGluZVByb2Zp
bGluZ0VuYWJsZWQgYmVzaWRlIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkCisgICAgICAg
IC0gUmVtb3ZlZCByZWxvYWQgb24gZWFjaCBpbnNwZWN0b3IgdGVzdAorICAgICAgICAtIFJlbmFt
ZWQgZmFzdC9pbnNwZWN0b3IgdG8gZmFzdC9pbnNwZWN0b3Itc3VwcG9ydCBpbiBvcmRlciBub3Qg
dG8gdHJpZ2dlcgorICAgICAgICBpbnNwZWN0b3IgZm9yIHRob3NlLgorICAgICAgICAtIFJlaW1w
bGVtZW50ZWQgdGltZWxpbmUgdGVzdHMgaW4gb3JkZXIgdG8gZ2V0IHJpZCBvZiByZWxvYWQgdGhl
cmUuCisgICAgICAgIC0gTW92ZWQgdGVzdHMgdGhhdCBkb24ndCByZXF1aXJlIGhhcm5lc3MgaW50
byB0aGUgZmFzdCBncm91cC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzE0NzIKKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3Iu
Y3BwOgorICAgICAgICAod2Via2l0X3dlYl9pbnNwZWN0b3JfY2xhc3NfaW5pdCk6CisgICAgICAg
ICh3ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dl
Yl9pbnNwZWN0b3JfZ2V0X3Byb3BlcnR5KToKKwogMjAwOS0xMS0xMyAgQWRhbSBSb2JlbiAgPGFy
b2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIGZvciBjaGFuZ2VzIHRvIEZyYW1lTG9h
ZGVyQ2xpZW50CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0
b3IuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaW5zcGVjdG9yLmNwcAppbmRleCBl
ZTI4MTVjLi5lNDk3NTQxIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJp
bnNwZWN0b3IuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmluc3BlY3Rvci5j
cHAKQEAgLTgzLDcgKzgzLDggQEAgZW51bSB7CiAKICAgICBQUk9QX1dFQl9WSUVXLAogICAgIFBS
T1BfSU5TUEVDVEVEX1VSSSwKLSAgICBQUk9QX0pBVkFTQ1JJUFRfUFJPRklMSU5HX0VOQUJMRUQK
KyAgICBQUk9QX0pBVkFTQ1JJUFRfUFJPRklMSU5HX0VOQUJMRUQsCisgICAgUFJPUF9USU1FTElO
RV9QUk9GSUxJTkdfRU5BQkxFRCAgICAKIH07CiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0V2ViSW5z
cGVjdG9yLCB3ZWJraXRfd2ViX2luc3BlY3RvciwgR19UWVBFX09CSkVDVCkKQEAgLTMwMCw2ICsz
MDEsMjIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfY2xhc3NfaW5pdChXZWJL
aXRXZWJJbnNwZWN0b3JDbGFzcyoga2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwogCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJJ
bnNwZWN0b3I6dGltZWxpbmUtcHJvZmlsaW5nLWVuYWJsZWQKKyAgICAqCisgICAgKiBUaGlzIGlz
IGVuYWJsaW5nIFRpbWVsaW5lIHByb2ZpbGluZyBpbiB0aGUgSW5zcGVjdG9yLgorICAgICoKKyAg
ICAqIFNpbmNlOiAxLjEuMTcKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBST1BfVElNRUxJTkVfUFJPRklMSU5HX0VOQUJMRUQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAidGltZWxpbmUtcHJvZmlsaW5nLWVuYWJsZWQiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBUaW1lbGluZSBwcm9m
aWxpbmciKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJQcm9m
aWxlIHRoZSBXZWJDb3JlIGluc3RydW1lbnRhdGlvbi4iKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisKICAgICBnX3R5cGVfY2xhc3Nf
YWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJJbnNwZWN0b3JQcml2YXRlKSk7CiB9
CiAKQEAgLTMzNyw2ICszNTQsMTUgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3Jf
c2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY28KICAgICAgICAg
ICAgIGNvbnRyb2xsZXItPmRpc2FibGVQcm9maWxlcigpOwogICAgICAgICBicmVhazsKICAgICB9
CisgICAgY2FzZSBQUk9QX1RJTUVMSU5FX1BST0ZJTElOR19FTkFCTEVEOiB7CisgICAgICAgIGJv
b2wgZW5hYmxlZCA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gcHJpdi0+cGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpOworICAgICAgICBpZiAoZW5hYmxlZCkKKyAgICAgICAgICAgIGNvbnRyb2xs
ZXItPnN0YXJ0VGltZWxpbmVQcm9maWxlcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
b250cm9sbGVyLT5zdG9wVGltZWxpbmVQcm9maWxlcigpOworICAgICAgICBicmVhazsKKyAgICB9
CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lE
KG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTM1OCw2ICszODQs
OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfcHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVgogICAgIGNhc2UgUFJPUF9KQVZBU0NSSVBUX1BS
T0ZJTElOR19FTkFCTEVEOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2
LT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnByb2ZpbGVyRW5hYmxlZCgpKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1RJTUVMSU5FX1BST0ZJTElOR19FTkFCTEVEOgorICAg
ICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5wYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPnRpbWVsaW5lQWdlbnQoKSAhPSAwKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwg
cHJvcF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMDM0NWNhMC4uOGNhMzY4MSAx
MDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0xMS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSBEUlQgc2hvdyB3ZWIgaW5zcGVjdG9yIGZvciB0
ZXN0cyBpbiBpbnNwZWN0b3IvIGZvbGRlci4KKyAgICAgICAgLSBVcGRhdGVkIERSVCB0byBzaG93
L2Nsb3NlIGluc3BlY3RvciBmb3IgYWxsIHRlc3RzIHVuZGVyIC9pbnNwZWN0b3IKKyAgICAgICAg
LSBJbnRyb2R1Y2VkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0Vu
YWJsZWQgYW5kCisgICAgICAgICAgV2ViSW5zcGVjdG9yOjpzZXRUaW1lbGluZVByb2ZpbGluZ0Vu
YWJsZWQgYmVzaWRlIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkCisgICAgICAgIC0gUmVt
b3ZlZCByZWxvYWQgb24gZWFjaCBpbnNwZWN0b3IgdGVzdAorICAgICAgICAtIFJlbmFtZWQgZmFz
dC9pbnNwZWN0b3IgdG8gZmFzdC9pbnNwZWN0b3Itc3VwcG9ydCBpbiBvcmRlciBub3QgdG8gdHJp
Z2dlcgorICAgICAgICBpbnNwZWN0b3IgZm9yIHRob3NlLgorICAgICAgICAtIFJlaW1wbGVtZW50
ZWQgdGltZWxpbmUgdGVzdHMgaW4gb3JkZXIgdG8gZ2V0IHJpZCBvZiByZWxvYWQgdGhlcmUuCisg
ICAgICAgIC0gTW92ZWQgdGVzdHMgdGhhdCBkb24ndCByZXF1aXJlIGhhcm5lc3MgaW50byB0aGUg
ZmFzdCBncm91cC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzE0NzIKKworICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IuaDoKKyAg
ICAgICAgKiBXZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtXZWJJbnNw
ZWN0b3IgaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWRdKToKKyAgICAgICAgKC1bV2ViSW5zcGVj
dG9yIHNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZDpdKToKKwogMjAwOS0xMS0xNCAgQ2hyaXMg
RmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVj
dG9yLmggYi9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IuaAppbmRleCBjMTY3
MjZkLi5mYTEzYzhkIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNw
ZWN0b3IuaAorKysgYi9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IuaApAQCAt
NDksNiArNDksOCBAQAogCiAtIChCT09MKWlzSmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQ7CiAt
ICh2b2lkKXNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkOihCT09MKWVuYWJsZWQ7CistIChC
T09MKWlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVkOworLSAodm9pZClzZXRUaW1lbGluZVByb2Zp
bGluZ0VuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKIAogLSAoQk9PTClpc1Byb2ZpbGluZ0phdmFTY3Jp
cHQ7CiAtICh2b2lkKXRvZ2dsZVByb2ZpbGluZ0phdmFTY3JpcHQ6KGlkKXNlbmRlcjsKZGlmZiAt
LWdpdCBhL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbSBiL1dlYktpdC9t
YWMvV2ViSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbQppbmRleCBjY2IwOWM1Li4yNThkZDAxIDEw
MDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IubW0KKysrIGIv
V2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tCkBAIC0xNDgsNiArMTQ4LDI1
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmRpc2FibGVQcm9maWxlcigpOwogfQogCistIChCT09MKWlzVGltZWxpbmVQcm9m
aWxpbmdFbmFibGVkCit7CisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlKF93ZWJWaWV3KSkKKyAg
ICAgICAgcmV0dXJuIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+dGltZWxpbmVBZ2VudCgp
ID8gWUVTIDogTk87CisgICAgcmV0dXJuIE5POworfQorCistICh2b2lkKXNldFRpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZDooQk9PTCllbmFibGVkCit7CisgICAgUGFnZSogcGFnZSA9IGNvcmUoX3dl
YlZpZXcpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGVuYWJs
ZWQpCisgICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c3RhcnRUaW1lbGluZVBy
b2ZpbGVyKCk7CisgICAgZWxzZQorICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PnN0b3BUaW1lbGluZVByb2ZpbGVyKCk7Cit9CisKIC0gKHZvaWQpY2xvc2U6KGlkKXNlbmRlciAK
IHsKICAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUoX3dlYlZpZXcpKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBkNGU4OWM4Li43
YmNmNzIwIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2lu
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDA5LTExLTE3ICBQYXZlbCBGZWxkbWFuICA8
cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0
Y2hlci4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBNYWtlIERSVCBzaG93IHdlYiBpbnNwZWN0
b3IgZm9yIHRlc3RzIGluIGluc3BlY3Rvci8gZm9sZGVyLgorICAgICAgICAtIFVwZGF0ZWQgRFJU
IHRvIHNob3cvY2xvc2UgaW5zcGVjdG9yIGZvciBhbGwgdGVzdHMgdW5kZXIgL2luc3BlY3Rvcgor
ICAgICAgICAtIEludHJvZHVjZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZCBhbmQKKyAgICAgICAgICBXZWJJbnNwZWN0b3I6OnNldFRpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZCBiZXNpZGUgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQKKyAgICAg
ICAgLSBSZW1vdmVkIHJlbG9hZCBvbiBlYWNoIGluc3BlY3RvciB0ZXN0CisgICAgICAgIC0gUmVu
YW1lZCBmYXN0L2luc3BlY3RvciB0byBmYXN0L2luc3BlY3Rvci1zdXBwb3J0IGluIG9yZGVyIG5v
dCB0byB0cmlnZ2VyCisgICAgICAgIGluc3BlY3RvciBmb3IgdGhvc2UuCisgICAgICAgIC0gUmVp
bXBsZW1lbnRlZCB0aW1lbGluZSB0ZXN0cyBpbiBvcmRlciB0byBnZXQgcmlkIG9mIHJlbG9hZCB0
aGVyZS4KKyAgICAgICAgLSBNb3ZlZCB0ZXN0cyB0aGF0IGRvbid0IHJlcXVpcmUgaGFybmVzcyBp
bnRvIHRoZSBmYXN0IGdyb3VwLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMTQ3MgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViSW5zcGVjdG9y
LmlkbDoKKyAgICAgICAgKiBXZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Ojppc1RpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3I6OnNl
dFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViSW5zcGVjdG9yLmg6CisK
IDIwMDktMTEtMTMgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEJ1
aWxkIGZpeApkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJJbnNwZWN0b3Iu
aWRsIGIvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJJbnNwZWN0b3IuaWRsCmluZGV4IGUzMTM3
NmMuLjRkMGQ5NmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViSW5zcGVj
dG9yLmlkbAorKysgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkluc3BlY3Rvci5pZGwKQEAg
LTU0LDQgKzU0LDYgQEAgaW50ZXJmYWNlIElXZWJJbnNwZWN0b3IgOiBJVW5rbm93bgogCiAgICAg
SFJFU1VMVCBpc0phdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKEJPT0wqIGlzUHJvZmlsaW5nRW5h
YmxlZCk7CiAgICAgSFJFU1VMVCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChCT09MIGVu
YWJsZWQpOworICAgIEhSRVNVTFQgaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoQk9PTCogaXNF
bmFibGVkKTsKKyAgICBIUkVTVUxUIHNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChCT09MIGVu
YWJsZWQpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuY3BwIGIvV2Vi
S2l0L3dpbi9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IDk3NTg3ZjkuLmU0YWMzMmIgMTAwNjQ0Ci0t
LSBhL1dlYktpdC93aW4vV2ViSW5zcGVjdG9yLmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkluc3Bl
Y3Rvci5jcHAKQEAgLTI3MiwzICsyNzIsMzggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSAg
V2ViSW5zcGVjdG9yOjpldmFsdWF0ZUluRnJvbnRlbmQoVUxPTkcgY2FsbElkLCBCU1RSIGIKICAg
ICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQo
Y2FsbElkLCBzY3JpcHQpOwogICAgIHJldHVybiBTX09LOwogfQorCitIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkluc3BlY3Rvcjo6aXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoQk9PTCog
aXNFbmFibGVkKQoreworICAgIGlmICghaXNFbmFibGVkKQorICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOworCisgICAgKmlzRW5hYmxlZCA9IEZBTFNFOworCisgICAgaWYgKCFtX3dlYlZpZXcpCisg
ICAgICAgIHJldHVybiBTX09LOworCisgICAgUGFnZSogcGFnZSA9IG1fd2ViVmlldy0+cGFnZSgp
OworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIFNfT0s7CisKKyAgICAqaXNFbmFibGVk
ID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT50aW1lbGluZUFnZW50KCkgIT0gMDsKKyAg
ICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJbnNwZWN0
b3I6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChCT09MIGVuYWJsZWQpCit7CisgICAgaWYg
KCFtX3dlYlZpZXcpCisgICAgICAgIHJldHVybiBTX09LOworCisgICAgUGFnZSogcGFnZSA9IG1f
d2ViVmlldy0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIFNfT0s7CisK
KyAgICBpZiAoZW5hYmxlZCkKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
dGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKKyAgICBlbHNlCisgICAgICAgIHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+c3RvcFRpbWVsaW5lUHJvZmlsZXIoKTsKKworICAgIHJldHVybiBTX09L
OworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJJbnNwZWN0b3IuaCBiL1dlYktpdC93aW4v
V2ViSW5zcGVjdG9yLmgKaW5kZXggNGY5YmVkYi4uMDUzYTU5MyAxMDA2NDQKLS0tIGEvV2ViS2l0
L3dpbi9XZWJJbnNwZWN0b3IuaAorKysgYi9XZWJLaXQvd2luL1dlYkluc3BlY3Rvci5oCkBAIC01
OSw5ICs1OSwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaXNKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChCT09MKiBpc1Byb2ZpbGluZ0VuYWJs
ZWQpOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRKYXZhU2NyaXB0
UHJvZmlsaW5nRW5hYmxlZChCT09MKTsKLSAgICAKKwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBldmFsdWF0ZUluRnJvbnRlbmQoVUxPTkcgY2FsbElkLCBCU1RSIHNjcmlw
dCk7CiAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNUaW1lbGluZVBy
b2ZpbGluZ0VuYWJsZWQoQk9PTCogaXNFbmFibGVkKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKEJPT0wpOworCiBwcml2
YXRlOgogICAgIFdlYkluc3BlY3RvcihXZWJWaWV3Kik7CiAgICAgfldlYkluc3BlY3RvcigpOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGFkNzZlOTguLmFhMDNlYjUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAwOS0xMS0x
NyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSBE
UlQgc2hvdyB3ZWIgaW5zcGVjdG9yIGZvciB0ZXN0cyBpbiBpbnNwZWN0b3IvIGZvbGRlci4KKyAg
ICAgICAgLSBVcGRhdGVkIERSVCB0byBzaG93L2Nsb3NlIGluc3BlY3RvciBmb3IgYWxsIHRlc3Rz
IHVuZGVyIC9pbnNwZWN0b3IKKyAgICAgICAgLSBJbnRyb2R1Y2VkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQgYW5kCisgICAgICAgICAgV2ViSW5zcGVj
dG9yOjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQgYmVzaWRlIHNldEphdmFTY3JpcHRQcm9m
aWxpbmdFbmFibGVkCisgICAgICAgIC0gUmVtb3ZlZCByZWxvYWQgb24gZWFjaCBpbnNwZWN0b3Ig
dGVzdAorICAgICAgICAtIFJlbmFtZWQgZmFzdC9pbnNwZWN0b3IgdG8gZmFzdC9pbnNwZWN0b3It
c3VwcG9ydCBpbiBvcmRlciBub3QgdG8gdHJpZ2dlcgorICAgICAgICBpbnNwZWN0b3IgZm9yIHRo
b3NlLgorICAgICAgICAtIFJlaW1wbGVtZW50ZWQgdGltZWxpbmUgdGVzdHMgaW4gb3JkZXIgdG8g
Z2V0IHJpZCBvZiByZWxvYWQgdGhlcmUuCisgICAgICAgIC0gTW92ZWQgdGVzdHMgdGhhdCBkb24n
dCByZXF1aXJlIGhhcm5lc3MgaW50byB0aGUgZmFzdCBncm91cC4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NzIKKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldFRpbWVsaW5l
UHJvZmlsaW5nRW5hYmxlZENhbGxiYWNrKToKKyAgICAgICAgKGNsb3NlV2ViSW5zcGVjdG9yQ2Fs
bGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoc2hv
dWxkT3BlbldlYkluc3BlY3Rvcik6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoc2hvdWxk
T3BlbldlYkluc3BlY3Rvcik6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoc2hvdWxkT3Bl
bldlYkluc3BlY3Rvcik6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCk6CisKIDIwMDktMTEtMTcg
IE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBN
YWNpZWogU3RhY2hvd2lhay4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBkYWY4ODhmLi40YzI4Y2E3IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysr
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBA
IC04NTAsNiArODUwLDE2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFRhYktleUN5Y2xlc1Rocm91
Z2hFbGVtZW50c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKCiAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRU
aW1lbGluZVByb2ZpbGluZ0VuYWJsZWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29u
dHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRUaW1lbGluZVByb2ZpbGlu
Z0VuYWJsZWQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVl
UmVmIHNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24KQEAgLTk3
OSw2ICs5ODksNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzaG93V2ViSW5zcGVjdG9yQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bgogc3RhdGljIEpTVmFsdWVSZWYg
Y2xvc2VXZWJJbnNwZWN0b3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7
CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlv
dXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAg
Y29udHJvbGxlci0+c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGZhbHNlKTsKICAgICBjb250
cm9sbGVyLT5jbG9zZVdlYkluc3BlY3RvcigpOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKIH0KQEAgLTEyNjQsNiArMTI3NSw3IEBAIEpTU3RhdGljRnVuY3Rpb24q
IExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJzZXRT
bWFydEluc2VydERlbGV0ZUVuYWJsZWQiLCBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRTdG9wUHJvdmlzaW9uYWxGcmFtZUxvYWRzIiwg
c2V0U3RvcFByb3Zpc2lvbmFsRnJhbWVMb2Fkc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyIsIHNldFRhYktleUN5Y2xlc1Rocm91Z2hF
bGVtZW50c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldFRpbWVsaW5lUHJvZmlsaW5n
RW5hYmxlZCIsIHNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgInNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlIiwgc2V0VXNlRGFzaGJv
YXJkQ29tcGF0aWJpbGl0eU1vZGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2Vy
U3R5bGVTaGVldEVuYWJsZWQiLCBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWRDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uIiwgc2V0VXNlclN0eWxl
U2hlZXRMb2NhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA3OWZmYjk5Li4wNjQxZTk5IDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmgKQEAgLTIxNCw2ICsyMTQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNob3dXZWJJbnNwZWN0
b3IoKTsKICAgICB2b2lkIGNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAgdm9pZCBzZXRUaW1lbGlu
ZVByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKTsKICAgICB2b2lkIGV2YWx1YXRlSW5XZWJJ
bnNwZWN0b3IobG9uZyBjYWxsSWQsIEpTU3RyaW5nUmVmIHNjcmlwdCk7CiAgICAgdm9pZCBldmFs
dWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCh1bnNpZ25lZCB3b3JsZElkLCBKU09iamVjdFJlZiBn
bG9iYWxPYmplY3QsIEpTU3RyaW5nUmVmIHNjcmlwdCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDU0MDhiYTEuLjc2OGYw
ZTAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVy
VHJlZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJU
cmVlLmNwcApAQCAtMTE0LDYgKzExNCwxMSBAQCBzdGF0aWMgYm9vbCBzaG91bGRMb2dGcmFtZUxv
YWREZWxlZ2F0ZXMoY29uc3QgY2hhciogcGF0aE9yVVJMKQogICAgIHJldHVybiBzdHJzdHIocGF0
aE9yVVJMLCAibG9hZGluZy8iKTsKIH0KIAorc3RhdGljIGJvb2wgc2hvdWxkT3BlbldlYkluc3Bl
Y3Rvcihjb25zdCBjaGFyKiBwYXRoT3JVUkwpCit7CisgICAgcmV0dXJuIHN0cnN0cihwYXRoT3JV
UkwsICJpbnNwZWN0b3IvIik7Cit9CisKIHZvaWQgZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24oV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lKQogewogCkBAIC00NTYsNiArNDYxLDkgQEAgc3RhdGljIHZvaWQg
cnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RQYXRoT3JVUkwpCiAgICAgaWYgKHNob3VsZExvZ0Zy
YW1lTG9hZERlbGVnYXRlcyhwYXRoT3JVUkwuY19zdHIoKSkpCiAgICAgICAgIGdMYXlvdXRUZXN0
Q29udHJvbGxlci0+c2V0RHVtcEZyYW1lTG9hZENhbGxiYWNrcyh0cnVlKTsKIAorICAgIGlmIChz
aG91bGRPcGVuV2ViSW5zcGVjdG9yKHBhdGhPclVSTC5jX3N0cigpKSkKKyAgICAgICAgZ0xheW91
dFRlc3RDb250cm9sbGVyLT5zaG93V2ViSW5zcGVjdG9yKCk7CisKICAgICBXb3JrUXVldWU6OnNo
YXJlZCgpLT5jbGVhcigpOwogICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnNldEZyb3plbihmYWxz
ZSk7CiAKQEAgLTQ4Nyw2ICs0OTUsOSBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmlu
ZyYgdGVzdFBhdGhPclVSTCkKIAogICAgIGd0a19tYWluKCk7CiAKKyAgICBpZiAoc2hvdWxkT3Bl
bldlYkluc3BlY3RvcihwYXRoT3JVUkwuY19zdHIoKSkpCisgICAgICAgIGdMYXlvdXRUZXN0Q29u
dHJvbGxlci0+Y2xvc2VXZWJJbnNwZWN0b3IoKTsKKwogICAgIC8vIEFsc28gY2hlY2sgaWYgd2Ug
c3RpbGwgaGF2ZSBvcGVuZWQgd2ViVmlld3MgYW5kIGZyZWUgdGhlbS4KICAgICBpZiAoZ0xheW91
dFRlc3RDb250cm9sbGVyLT5jbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUoKSB8fCB3
ZWJWaWV3TGlzdCkgewogICAgICAgICB3aGlsZSAod2ViVmlld0xpc3QpIHsKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5j
cHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwCmluZGV4IDE3M2U1MjYuLjk2NGQ3YmEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAt
MjI5LDYgKzIyOSwxNSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUYWJLZXlDeWNs
ZXNUaHJvdWdoRWxlbWVudHMoYm9vbCBjeWNsZXMpCiAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNU
KHNldHRpbmdzKSwgInRhYi1rZXktY3ljbGVzLXRocm91Z2gtZWxlbWVudHMiLCBjeWNsZXMsIE5V
TEwpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRUaW1lbGluZVByb2ZpbGlu
Z0VuYWJsZWQoYm9vbCBmbGFnKQoreworICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRf
d2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOworICAgIEFTU0VSVCh2aWV3KTsKKwor
ICAgIFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gd2Via2l0X3dlYl92aWV3X2dldF9p
bnNwZWN0b3Iodmlldyk7CisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKGluc3BlY3RvciksICJ0
aW1lbGluZS1wcm9maWxpbmctZW5hYmxlZCIsIGZsYWcsIE5VTEwpOworfQorCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZShib29sIGZs
YWcpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IGMwYTBiNzQuLjY2MWQxYjAgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0K
QEAgLTExMDIsNiArMTEwMiwxMSBAQCBzdGF0aWMgYm9vbCBzaG91bGRMb2dIaXN0b3J5RGVsZWdh
dGVzKGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKICAgICByZXR1cm4gc3Ryc3RyKHBhdGhPclVSTCwg
Imdsb2JhbGhpc3RvcnkvIik7CiB9CiAKK3N0YXRpYyBib29sIHNob3VsZE9wZW5XZWJJbnNwZWN0
b3IoY29uc3QgY2hhciogcGF0aE9yVVJMKQoreworICAgIHJldHVybiBzdHJzdHIocGF0aE9yVVJM
LCAiaW5zcGVjdG9yLyIpOworfQorCiBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3Rl
bnRTdGF0ZUJlZm9yZVRlc3RpbmcoKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbbWFpbkZy
YW1lIHdlYlZpZXddOwpAQCAtMTE3OCw3ICsxMTgzLDEwIEBAIHN0YXRpYyB2b2lkIHJ1blRlc3Qo
Y29uc3Qgc3RyaW5nJiB0ZXN0UGF0aE9yVVJMKQogICAgICAgICBbW21haW5GcmFtZSB3ZWJWaWV3
XSBzZXRIaXN0b3J5RGVsZWdhdGU6aGlzdG9yeURlbGVnYXRlXTsKICAgICBlbHNlCiAgICAgICAg
IFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEhpc3RvcnlEZWxlZ2F0ZTpuaWxdOwotICAgIAorCisg
ICAgaWYgKHNob3VsZE9wZW5XZWJJbnNwZWN0b3IocGF0aE9yVVJMLmNfc3RyKCkpKQorICAgICAg
ICBnTGF5b3V0VGVzdENvbnRyb2xsZXItPnNob3dXZWJJbnNwZWN0b3IoKTsKKwogICAgIGlmIChb
V2ViSGlzdG9yeSBvcHRpb25hbFNoYXJlZEhpc3RvcnldKQogICAgICAgICBbV2ViSGlzdG9yeSBz
ZXRPcHRpb25hbFNoYXJlZEhpc3Rvcnk6bmlsXTsKICAgICBsYXN0TW91c2VQb3NpdGlvbiA9IE5T
WmVyb1BvaW50OwpAQCAtMTIwMiw2ICsxMjEwLDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25z
dCBzdHJpbmcmIHRlc3RQYXRoT3JVUkwpCiAgICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5M
b29wXSBydW5Nb2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05TRGF0ZSBkaXN0
YW50UGFzdF1dOwogICAgICAgICBbcG9vbCByZWxlYXNlXTsKICAgICB9CisKICAgICBwb29sID0g
W1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CiAgICAgW0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIgY2xlYXJTYXZlZEV2ZW50c107CiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0U2Vs
ZWN0ZWRET01SYW5nZTpuaWwgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW1d
OwpAQCAtMTIyNiwxMSArMTIzNSwxNCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmlu
ZyYgdGVzdFBhdGhPclVSTCkKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChzaG91bGRPcGVu
V2ViSW5zcGVjdG9yKHBhdGhPclVSTC5jX3N0cigpKSkKKyAgICAgICAgZ0xheW91dFRlc3RDb250
cm9sbGVyLT5jbG9zZVdlYkluc3BlY3RvcigpOworCiAgICAgcmVzZXRXZWJWaWV3VG9Db25zaXN0
ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCk7CiAKICAgICBbbWFpbkZyYW1lIGxvYWRIVE1MU3RyaW5n
OkAiPGh0bWw+PC9odG1sPiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImFib3V0OmJs
YW5rIl1dOwogICAgIFttYWluRnJhbWUgc3RvcExvYWRpbmddOwotICAgIAorCiAgICAgW3Bvb2wg
cmVsZWFzZV07CiAKICAgICAvLyBXZSBzaG91bGQgb25seSBoYXZlIG91ciBtYWluIHdpbmRvdyBs
ZWZ0IG9wZW4gd2hlbiB3ZSdyZSBkb25lCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggMzM0NTM4OC4u
YjQzNWY1NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMzExLDYgKzMxMSwxMSBAQCB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoYm9vbCBj
eWNsZXMpCiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVs
ZW1lbnRzOmN5Y2xlc107CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFRpbWVs
aW5lUHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgW1tbbWFpbkZyYW1lIHdl
YlZpZXddIGluc3BlY3Rvcl0gc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkOmVuYWJsZWRdOwor
fQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmls
aXR5TW9kZShib29sIGZsYWcpCiB7CiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gX3NldERhc2hi
b2FyZEJlaGF2aW9yOldlYkRhc2hib2FyZEJlaGF2aW9yVXNlQmFja3dhcmRDb21wYXRpYmlsaXR5
TW9kZSB0bzpmbGFnXTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwCmluZGV4IGQ0ODZkMDYuLjQ1M2E4YTIgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtNjg4LDYgKzY4
OCwxMSBAQCBzdGF0aWMgYm9vbCBzaG91bGRMb2dIaXN0b3J5RGVsZWdhdGVzKGNvbnN0IGNoYXIq
IHBhdGhPclVSTCkKICAgICByZXR1cm4gc3Ryc3RyKHBhdGhPclVSTCwgIi9nbG9iYWxoaXN0b3J5
LyIpIHx8IHN0cnN0cihwYXRoT3JVUkwsICJcXGdsb2JhbGhpc3RvcnlcXCIpOwogfQogCitzdGF0
aWMgYm9vbCBzaG91bGRPcGVuV2ViSW5zcGVjdG9yKGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKK3sK
KyAgICByZXR1cm4gc3Ryc3RyKHBhdGhPclVSTCwgIi9pbnNwZWN0b3IvIikgfHwgc3Ryc3RyKHBh
dGhPclVSTCwgIlxcaW5zcGVjdG9yXFwiKTsKK30KKwogc3RhdGljIHZvaWQgcmVzZXREZWZhdWx0
c1RvQ29uc2lzdGVudFZhbHVlcyhJV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKQogewogI2lm
ZGVmIFVTRV9NQUNfRk9OVFMKQEAgLTg1OSw2ICs4NjQsOSBAQCBzdGF0aWMgdm9pZCBydW5UZXN0
KGNvbnN0IHN0cmluZyYgdGVzdFBhdGhPclVSTCkKIAogICAgIHJlc2V0V2ViVmlld1RvQ29uc2lz
dGVudFN0YXRlQmVmb3JlVGVzdGluZygpOwogCisgICAgaWYgKHNob3VsZE9wZW5XZWJJbnNwZWN0
b3IocGF0aE9yVVJMLmNfc3RyKCkpKQorICAgICAgICBnTGF5b3V0VGVzdENvbnRyb2xsZXItPnNo
b3dXZWJJbnNwZWN0b3IoKTsKKwogICAgIHByZXZUZXN0QkZJdGVtID0gMDsKICAgICBpZiAod2Vi
VmlldykgewogICAgICAgICBDT01QdHI8SVdlYkJhY2tGb3J3YXJkTGlzdD4gYmZMaXN0OwpAQCAt
ODkzLDYgKzkwMSw5IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiB0ZXN0UGF0
aE9yVVJMKQogICAgICAgICBEaXNwYXRjaE1lc3NhZ2UoJm1zZyk7CiAgICAgfQogCisgICAgaWYg
KHNob3VsZE9wZW5XZWJJbnNwZWN0b3IocGF0aE9yVVJMLmNfc3RyKCkpKQorICAgICAgICBnTGF5
b3V0VGVzdENvbnRyb2xsZXItPmNsb3NlV2ViSW5zcGVjdG9yKCk7CisKICAgICByZXNldFdlYlZp
ZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoKTsKIAogICAgIGZyYW1lLT5zdG9wTG9h
ZGluZygpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91
dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggMDMyMGI0Mi4uYzg2NDliYiAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCkBAIC0zOTgsNiArMzk4LDIzIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhib29sIHNob3VsZEN5Y2xlKQog
ICAgIHZpZXdQcml2YXRlLT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoc2hvdWxkQ3lj
bGUgPyBUUlVFIDogRkFMU0UpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRU
aW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoYm9vbCBmbGFnKQoreworICAgIENPTVB0cjxJV2ViVmll
dz4gd2ViVmlldzsKKyAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCisg
ICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHZpZXdQcml2YXRl
OworICAgIGlmIChGQUlMRUQod2ViVmlldy0+UXVlcnlJbnRlcmZhY2UoJnZpZXdQcml2YXRlKSkp
CisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViSW5zcGVjdG9yPiBpbnNwZWN0b3I7
CisgICAgaWYgKEZBSUxFRCh2aWV3UHJpdmF0ZS0+aW5zcGVjdG9yKCZpbnNwZWN0b3IpKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaW5zcGVjdG9yLT5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJs
ZWQoZmxhZyk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZURhc2hib2Fy
ZENvbXBhdGliaWxpdHlNb2RlKGJvb2wgZmxhZykKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>