<?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>150498</bug_id>
          
          <creation_ts>2015-10-23 05:40:39 -0700</creation_ts>
          <short_desc>Make every port implement MainThreadSharedTimer instead of using global functions</short_desc>
          <delta_ts>2015-10-30 06:26:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1136022</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-23 05:40:39 -0700</bug_when>
    <thetext>Keep common code in MainThreadSharedTimer and implement the rest of the members in the platform specific files. It simplifies both the header and the port implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136023</commentid>
    <comment_count>1</comment_count>
      <attachid>263917</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-23 05:44:57 -0700</bug_when>
    <thetext>Created attachment 263917
Patch

I&apos;m not setting r? because the windows part is missing. I need help with that because I don&apos;t know how to pass the instance pointer to TimerWindowWndProc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136025</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-23 05:47:37 -0700</bug_when>
    <thetext>I plan to use RunLoop::Timer for the GTK+ implementation, since our RunLoop::Timer implementation is basically the same to what we do in SharedTimerGtk. If this is the case of the other ports we could have a cross-platform implementation of MainThreadSharedTimer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136027</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-23 06:04:29 -0700</bug_when>
    <thetext>hmm, the idea of moving the shared function to the class as a member to make setFiredFunction doesn&apos;t work for CF because of the restartSharedTimer, so I&apos;ll leave it as global var in every port file for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136028</commentid>
    <comment_count>4</comment_count>
      <attachid>263919</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-23 06:26:17 -0700</bug_when>
    <thetext>Created attachment 263919
Updated patch

Switched to use a static member, that should work for windows too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136029</commentid>
    <comment_count>5</comment_count>
      <attachid>263920</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-23 06:30:11 -0700</bug_when>
    <thetext>Created attachment 263920
Try to fix Mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136032</commentid>
    <comment_count>6</comment_count>
      <attachid>263922</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-23 06:46:10 -0700</bug_when>
    <thetext>Created attachment 263922
Try to fix Mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136034</commentid>
    <comment_count>7</comment_count>
      <attachid>263923</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-23 06:53:11 -0700</bug_when>
    <thetext>Created attachment 263923
Try to fix Mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136035</commentid>
    <comment_count>8</comment_count>
      <attachid>263924</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-23 06:58:02 -0700</bug_when>
    <thetext>Created attachment 263924
Try to fix Mac build

Hopefully the last one, sorry for the noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136287</commentid>
    <comment_count>9</comment_count>
      <attachid>263924</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-24 14:42:19 -0700</bug_when>
    <thetext>Comment on attachment 263924
Try to fix Mac build

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

This is a little better, although not a huge improvement. I think there is some other strangeness here that can be fixed.

&gt; Source/WebCore/platform/SharedTimer.h:52
&gt;      class MainThreadSharedTimer final : public SharedTimer {

This class uses global state, but instead it should be a singleton. We would replace the mainThreadSharedTimer() function from ThreadTimers with a MainThreadSharedTimer::singleton() function that returns a reference to a single global shared timer.

The code for this should go into MainThreadSharedTimer.cpp and this class should get its own header MainThreadSharedTimer.h instead of being tacked on to the bottom of SharedTimer.h. If you don’t want to add those two new files in this patch, you could instead put the code into ThreadTimers.cpp for now, but that would just be a stopgap until we can do it right.

&gt; Source/WebCore/platform/SharedTimer.h:54
&gt;          void setFiredFunction(void (*function)()) override

This function’s body should not be in the header. Instead it should be in MainThreadSharedTimer.cpp (or ThreadTimers.cpp for now, I guess).

&gt; Source/WebCore/platform/SharedTimer.h:62
&gt; +        void setFireInterval(double) override;
&gt; +        void stop() override;
&gt; +        void invalidate() override;

Can any of these be private?

&gt; Source/WebCore/platform/SharedTimer.h:64
&gt; +        static void timerFired()

This function’s body should not be in the header. Instead it should be in MainThreadSharedTimer.cpp (or ThreadTimers.cpp for now, I guess).

The class is named timer, so I think this should just be named fired(), not timerFired().

This should be a member function, not a static member function; callers can call MainThreadSharedTimer::singleton().fired(). We should also consider making it private if we can. Unfortunately doing that means all the thread-specific callback functions would need to be either static member functions or friend functions so they could access this. But it’s peculiar to have this be public.

&gt; Source/WebCore/platform/SharedTimer.h:70
&gt; +        static void (*s_firedFunction)();

This should be a non-static member, and also should probably be initialized to nullptr here in the header once it is like that.

&gt; Source/WebCore/platform/cf/SharedTimerCF.cpp:41
&gt; +void (*MainThreadSharedTimer::s_firedFunction)() = nullptr;

We don’t want code like this to be repeated for each platform. This is only here because we don’t have a MainThreadSharedTimer.cpp to put it in. For now, I suggest putting code like this in ThreadTimers.cpp or creating MainThreadSharedTimer.cpp. But we won’t need this if we change the function to be a member instead of a static member.

&gt; Source/WebCore/platform/cf/SharedTimerCF.cpp:75
&gt; +    MainThreadSharedTimer::timerFired();

This should be:

    MainThreadSharedTimer::singleton().timerFired();

&gt; Source/WebCore/platform/gtk/SharedTimerGtk.cpp:40
&gt; +    ASSERT(MainThreadSharedTimer::s_firedFunction);

No need to repeat the class name when we are inside a member function of that class.

&gt; Source/WebCore/platform/gtk/SharedTimerGtk.cpp:44
&gt; +    gSharedTimer.scheduleAfterDelay(&quot;[WebKit] sharedTimerTimeoutCallback&quot;, [this] { MainThreadSharedTimer::timerFired(); },

No need to repeat the class name when we are inside a member function of that class.

&gt; Source/WebCore/platform/win/SharedTimerWin.cpp:128
&gt; +    ASSERT(MainThreadSharedTimer::s_firedFunction);

No need to repeat the class name when we are inside a member function of that class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136381</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-25 03:37:33 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 263924 [details]
&gt; Try to fix Mac build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=263924&amp;action=review
&gt; 
&gt; This is a little better, although not a huge improvement. I think there is
&gt; some other strangeness here that can be fixed.

Thanks for the review.

&gt; &gt; Source/WebCore/platform/SharedTimer.h:52
&gt; &gt;      class MainThreadSharedTimer final : public SharedTimer {
&gt; 
&gt; This class uses global state, but instead it should be a singleton. We would
&gt; replace the mainThreadSharedTimer() function from ThreadTimers with a
&gt; MainThreadSharedTimer::singleton() function that returns a reference to a
&gt; single global shared timer.
&gt; 
&gt; The code for this should go into MainThreadSharedTimer.cpp and this class
&gt; should get its own header MainThreadSharedTimer.h instead of being tacked on
&gt; to the bottom of SharedTimer.h. If you don’t want to add those two new files
&gt; in this patch, you could instead put the code into ThreadTimers.cpp for now,
&gt; but that would just be a stopgap until we can do it right.

I don&apos;t mind to add new files as long as someone can help me with the XCode files.

&gt; &gt; Source/WebCore/platform/SharedTimer.h:54
&gt; &gt;          void setFiredFunction(void (*function)()) override
&gt; 
&gt; This function’s body should not be in the header. Instead it should be in
&gt; MainThreadSharedTimer.cpp (or ThreadTimers.cpp for now, I guess).

Ok.

&gt; &gt; Source/WebCore/platform/SharedTimer.h:62
&gt; &gt; +        void setFireInterval(double) override;
&gt; &gt; +        void stop() override;
&gt; &gt; +        void invalidate() override;
&gt; 
&gt; Can any of these be private?

No, all of them are used by ThreadTimers.

&gt; &gt; Source/WebCore/platform/SharedTimer.h:64
&gt; &gt; +        static void timerFired()
&gt; 
&gt; This function’s body should not be in the header. Instead it should be in
&gt; MainThreadSharedTimer.cpp (or ThreadTimers.cpp for now, I guess).
&gt; 
&gt; The class is named timer, so I think this should just be named fired(), not
&gt; timerFired().

Sure.

&gt; This should be a member function, not a static member function; callers can
&gt; call MainThreadSharedTimer::singleton().fired(). We should also consider
&gt; making it private if we can. Unfortunately doing that means all the
&gt; thread-specific callback functions would need to be either static member
&gt; functions or friend functions so they could access this. But it’s peculiar
&gt; to have this be public.

Yes, making it private would require changes in CF and win implementations that I&apos;m afraid I can&apos;t do my self easily. So, I&apos;ll leave a FIXME.

&gt; &gt; Source/WebCore/platform/SharedTimer.h:70
&gt; &gt; +        static void (*s_firedFunction)();
&gt; 
&gt; This should be a non-static member, and also should probably be initialized
&gt; to nullptr here in the header once it is like that.

Yes, and not a pointer function but a std::function instead as well, I guess.

&gt; &gt; Source/WebCore/platform/cf/SharedTimerCF.cpp:41
&gt; &gt; +void (*MainThreadSharedTimer::s_firedFunction)() = nullptr;
&gt; 
&gt; We don’t want code like this to be repeated for each platform. This is only
&gt; here because we don’t have a MainThreadSharedTimer.cpp to put it in. For
&gt; now, I suggest putting code like this in ThreadTimers.cpp or creating
&gt; MainThreadSharedTimer.cpp. But we won’t need this if we change the function
&gt; to be a member instead of a static member.

Right.

&gt; &gt; Source/WebCore/platform/cf/SharedTimerCF.cpp:75
&gt; &gt; +    MainThreadSharedTimer::timerFired();
&gt; 
&gt; This should be:
&gt; 
&gt;     MainThreadSharedTimer::singleton().timerFired();
&gt; 
&gt; &gt; Source/WebCore/platform/gtk/SharedTimerGtk.cpp:40
&gt; &gt; +    ASSERT(MainThreadSharedTimer::s_firedFunction);
&gt; 
&gt; No need to repeat the class name when we are inside a member function of
&gt; that class.
&gt; 
&gt; &gt; Source/WebCore/platform/gtk/SharedTimerGtk.cpp:44
&gt; &gt; +    gSharedTimer.scheduleAfterDelay(&quot;[WebKit] sharedTimerTimeoutCallback&quot;, [this] { MainThreadSharedTimer::timerFired(); },
&gt; 
&gt; No need to repeat the class name when we are inside a member function of
&gt; that class.
&gt; 
&gt; &gt; Source/WebCore/platform/win/SharedTimerWin.cpp:128
&gt; &gt; +    ASSERT(MainThreadSharedTimer::s_firedFunction);
&gt; 
&gt; No need to repeat the class name when we are inside a member function of
&gt; that class.

Ok, I&apos;ll submit a new patch adding all new files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136382</commentid>
    <comment_count>11</comment_count>
      <attachid>264004</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-25 03:48:15 -0700</bug_when>
    <thetext>Created attachment 264004
New patch

It still needs the changes in the XCode files. Could someone with a mac add them, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136383</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-25 03:50:54 -0700</bug_when>
    <thetext>Attachment 264004 did not pass style-queue:


ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:72:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:73:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:113:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/ThreadTimers.cpp:73:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136384</commentid>
    <comment_count>13</comment_count>
      <attachid>264005</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-25 03:51:51 -0700</bug_when>
    <thetext>Created attachment 264005
Fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136385</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-25 03:54:09 -0700</bug_when>
    <thetext>Attachment 264005 did not pass style-queue:


ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:72:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:73:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:113:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/ThreadTimers.cpp:73:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136388</commentid>
    <comment_count>15</comment_count>
      <attachid>264007</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-25 05:59:36 -0700</bug_when>
    <thetext>Created attachment 264007
Try to fix win build

It seems windows needs functional to be included</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136389</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-25 06:03:11 -0700</bug_when>
    <thetext>Attachment 264007 did not pass style-queue:


ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:72:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:73:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:113:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/ThreadTimers.cpp:73:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136489</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-25 23:31:58 -0700</bug_when>
    <thetext>I don&apos;t understand the windows build error:

C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf/NeverDestroyed.h(53): error C2248: &apos;WebCore::MainThreadSharedTimer::MainThreadSharedTimer&apos;: cannot access private member declared in class &apos;WebCore::MainThreadSharedTimer&apos; (compiling source file C:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\MainThreadSharedTimer.cpp) [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\WebCore\WebCore.vcxproj]
  C:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\MainThreadSharedTimer.cpp(37): note: see declaration of &apos;WebCore::MainThreadSharedTimer::MainThreadSharedTimer&apos; (compiling source file C:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\MainThreadSharedTimer.cpp)
  c:\cygwin\home\buildbot\webkit\source\webcore\platform\MainThreadSharedTimer.h(35): note: see declaration of &apos;WebCore::MainThreadSharedTimer&apos; (compiling source file C:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\MainThreadSharedTimer.cpp)
  C:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\MainThreadSharedTimer.cpp(33): note: see reference to function template instantiation &apos;WTF::NeverDestroyed&lt;WebCore::MainThreadSharedTimer&gt;::NeverDestroyed&lt;&gt;(void)&apos; being compiled
  C:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\MainThreadSharedTimer.cpp(33): note: see reference to function template instantiation &apos;WTF::NeverDestroyed&lt;WebCore::MainThreadSharedTimer&gt;::NeverDestroyed&lt;&gt;(void)&apos; being compiled

Doesn&apos;t friend class work in windows?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136560</commentid>
    <comment_count>18</comment_count>
      <attachid>264053</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-26 10:58:52 -0700</bug_when>
    <thetext>Created attachment 264053
Try to fix win build

Let&apos;s see if this fixes the win build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136562</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-26 11:01:46 -0700</bug_when>
    <thetext>Attachment 264053 did not pass style-queue:


ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:72:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:73:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:113:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/ThreadTimers.cpp:73:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136582</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-26 12:00:03 -0700</bug_when>
    <thetext>hmm, the current win failure doesn&apos;t seem related to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136789</commentid>
    <comment_count>21</comment_count>
      <attachid>264126</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-27 02:12:21 -0700</bug_when>
    <thetext>Created attachment 264126
Try to build on Mac

Now with the xcode changes, thanks Philippe!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136790</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-27 02:14:35 -0700</bug_when>
    <thetext>Attachment 264126 did not pass style-queue:


ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:72:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:73:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:113:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/ThreadTimers.cpp:73:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136791</commentid>
    <comment_count>23</comment_count>
      <attachid>264127</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-27 02:38:17 -0700</bug_when>
    <thetext>Created attachment 264127
Try to fix mac build

It&apos;s failing when linking due to undefined symbols, trying with WEBCORE_EXPORT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136792</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-27 02:40:04 -0700</bug_when>
    <thetext>Attachment 264127 did not pass style-queue:


ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:72:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:73:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:113:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/ThreadTimers.cpp:73:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136846</commentid>
    <comment_count>25</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-27 10:51:21 -0700</bug_when>
    <thetext>I&apos;m lost with the build failures. Darin, could you help me with the mac builds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136973</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-27 16:29:57 -0700</bug_when>
    <thetext>I believe the Mac build failure is a mistake in the project file patch; MainThreadSharedTimer.cpp was not added to the list of files to compile. You’ll note that the old SharedTimerCF.cpp had a PBXBuildFile line that was added but the patch doesn’t add new PBXBuildFile for the new files. Whoever generated the Xcode project files has to redo it, or someone else needs to apply the patch and do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137080</commentid>
    <comment_count>27</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-28 01:38:44 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; I believe the Mac build failure is a mistake in the project file patch;
&gt; MainThreadSharedTimer.cpp was not added to the list of files to compile.
&gt; You’ll note that the old SharedTimerCF.cpp had a PBXBuildFile line that was
&gt; added but the patch doesn’t add new PBXBuildFile for the new files. Whoever
&gt; generated the Xcode project files has to redo it, or someone else needs to
&gt; apply the patch and do that.

Thanks Darin, it&apos;s amazing how difficult is to add new files to xcode project files even using xcode. I&apos;ll try to get a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137087</commentid>
    <comment_count>28</comment_count>
      <attachid>264203</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-28 02:43:00 -0700</bug_when>
    <thetext>Created attachment 264203
Try to fix mac builds

Updated the xcode changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137088</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-28 02:45:55 -0700</bug_when>
    <thetext>Attachment 264203 did not pass style-queue:


ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:72:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:73:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:113:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/ThreadTimers.cpp:73:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137103</commentid>
    <comment_count>30</comment_count>
      <attachid>264207</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-28 04:38:40 -0700</bug_when>
    <thetext>Created attachment 264207
Try to fix win build

I think std::function&lt;void()&gt; = 0 was the problem in windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137104</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-28 04:40:04 -0700</bug_when>
    <thetext>Attachment 264207 did not pass style-queue:


ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:72:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:73:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/win/MainThreadSharedTimerWin.cpp:113:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/ThreadTimers.cpp:73:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137141</commentid>
    <comment_count>32</comment_count>
      <attachid>264207</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-28 09:28:30 -0700</bug_when>
    <thetext>Comment on attachment 264207
Try to fix win build

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

&gt; Source/WebCore/platform/MainThreadSharedTimer.h:46
&gt; +    // FIXME: this should be private, but CF and Windows implementations
&gt; +    // need to call this from static methods at the moment.

I wouldn’t bother with this FIXME even though I agree with what it says.

If we were keeping it: we normally use sentence capitalization so &quot;this&quot; would be capitalized, and I don&apos;t think &quot;static methods&quot; is the term we&apos;d want to use here, since that is a way to refer to static member functions, but if these were in fact static member functions then there would be no problem. I think we mean &quot;non-member functions&quot;. The fact that those functions are also declared with &quot;static&quot; so they get internal linkage is not relevant.

&gt; Source/WebCore/platform/MainThreadSharedTimer.h:52
&gt; +    std::function&lt;void()&gt; m_firedFunction { nullptr };

A std::function will be initialized to null without explicitly specifying nullptr. Because of that we can simply omit the { nullptr } here.

&gt; Source/WebCore/platform/SharedTimer.h:41
&gt; +    SharedTimer() { }

This line of code can simply be deleted. It has no effect.

&gt; Source/WebCore/platform/cf/MainThreadSharedTimerCF.cpp:60
&gt; +    static PowerObserver* powerObserver;
&gt; +    if (!powerObserver)
&gt; +        powerObserver = std::make_unique&lt;PowerObserver&gt;(restartSharedTimer).release();

Not new code, but someone should return to this, since this is a peculiar way to write it. I’d write this:

    static NeverDestroyed&lt;PowerObserver&gt; powerObserver(restartSharedTimer);

&gt; Source/WebCore/workers/WorkerRunLoop.cpp:56
&gt; +    std::function&lt;void()&gt; m_sharedTimerFunction { nullptr };

No need for the { nullptr } here since std::function will initialize itself to null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137860</commentid>
    <comment_count>33</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-30 06:18:10 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; Comment on attachment 264207 [details]
&gt; Try to fix win build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264207&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/MainThreadSharedTimer.h:46
&gt; &gt; +    // FIXME: this should be private, but CF and Windows implementations
&gt; &gt; +    // need to call this from static methods at the moment.
&gt; 
&gt; I wouldn’t bother with this FIXME even though I agree with what it says.
&gt; 
&gt; If we were keeping it: we normally use sentence capitalization so &quot;this&quot;
&gt; would be capitalized, and I don&apos;t think &quot;static methods&quot; is the term we&apos;d
&gt; want to use here, since that is a way to refer to static member functions,
&gt; but if these were in fact static member functions then there would be no
&gt; problem. I think we mean &quot;non-member functions&quot;. The fact that those
&gt; functions are also declared with &quot;static&quot; so they get internal linkage is
&gt; not relevant.

Ok, I&apos;ll fix the comment then.

&gt; &gt; Source/WebCore/platform/MainThreadSharedTimer.h:52
&gt; &gt; +    std::function&lt;void()&gt; m_firedFunction { nullptr };
&gt; 
&gt; A std::function will be initialized to null without explicitly specifying
&gt; nullptr. Because of that we can simply omit the { nullptr } here.

Ok.

&gt; &gt; Source/WebCore/platform/SharedTimer.h:41
&gt; &gt; +    SharedTimer() { }
&gt; 
&gt; This line of code can simply be deleted. It has no effect.

It seems to be needed by derived classes constructor, if I remove it I get a build failure:

../../Source/WebCore/platform/MainThreadSharedTimer.cpp: In constructor &apos;WebCore::MainThreadSharedTimer::MainThreadSharedTimer()&apos;:
../../Source/WebCore/platform/MainThreadSharedTimer.cpp:37:46: error: no matching function for call to &apos;WebCore::SharedTimer::SharedTimer()&apos;
In file included from ../../Source/WebCore/platform/MainThreadSharedTimer.h:30:0,
                 from ../../Source/WebCore/platform/MainThreadSharedTimer.cpp:27:
../../Source/WebCore/platform/SharedTimer.h:39:14: note: candidate: WebCore::SharedTimer::SharedTimer(const WebCore::SharedTimer&amp;) &lt;deleted&gt;
../../Source/WebCore/platform/SharedTimer.h:39:14: note:   candidate expects 1 argument, 0 provided

I guess I can do SharedTimer() = default; instead, though.

&gt; &gt; Source/WebCore/platform/cf/MainThreadSharedTimerCF.cpp:60
&gt; &gt; +    static PowerObserver* powerObserver;
&gt; &gt; +    if (!powerObserver)
&gt; &gt; +        powerObserver = std::make_unique&lt;PowerObserver&gt;(restartSharedTimer).release();
&gt; 
&gt; Not new code, but someone should return to this, since this is a peculiar
&gt; way to write it. I’d write this:
&gt; 
&gt;     static NeverDestroyed&lt;PowerObserver&gt; powerObserver(restartSharedTimer);

Yes, but I&apos;ll leave this for someone who can build mac port :-)

&gt; &gt; Source/WebCore/workers/WorkerRunLoop.cpp:56
&gt; &gt; +    std::function&lt;void()&gt; m_sharedTimerFunction { nullptr };
&gt; 
&gt; No need for the { nullptr } here since std::function will initialize itself
&gt; to null.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137862</commentid>
    <comment_count>34</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-10-30 06:26:23 -0700</bug_when>
    <thetext>Committed r191789: &lt;http://trac.webkit.org/changeset/191789&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263917</attachid>
            <date>2015-10-23 05:44:57 -0700</date>
            <delta_ts>2015-10-23 06:26:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-shared-timer.diff</filename>
            <type>text/plain</type>
            <size>8673</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMDRlMjQxLi5kZjM4OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTUtMTAtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIE1ha2UgZXZlcnkgcG9ydCBpbXBsZW1lbnQgTWFpblRocmVhZFNoYXJlZFRp
bWVyIGluc3RlYWQgb2YgdXNpbmcgZ2xvYmFsIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNDk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgS2VlcCBjb21tb24gY29kZSBpbiBNYWluVGhy
ZWFkU2hhcmVkVGltZXIgYW5kIGltcGxlbWVudCB0aGUgcmVzdAorICAgICAgICBvZiB0aGUgbWVt
YmVycyBpbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMuIEl0IHNpbXBsaWZpZXMgYm90aAor
ICAgICAgICB0aGUgaGVhZGVyIGFuZCB0aGUgcG9ydCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJl
ZFRpbWVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGltZXJGaXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwpOgorICAgICAgICAo
V2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjppbnZhbGlkYXRlU2hhcmVkVGltZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c2V0
U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c3Rv
cFNoYXJlZFRpbWVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2hhcmVkVGlt
ZXJFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGltZXJFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWFp
blRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6
TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpz
dG9wU2hhcmVkVGltZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWRkTmV3VGltZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZVNoYXJlZFRpbWVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6c2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6c3RvcFNoYXJlZFRpbWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmludmFs
aWRhdGVTaGFyZWRUaW1lcik6IERlbGV0ZWQuCisKIDIwMTUtMTAtMjEgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6
IG1hcmtGb250RGF0YSBpbiBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrSGVpZ2h0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAppbmRleCAyOTljNDk5Li5kZTk1NGE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKQEAgLTQ4LDM2ICs0OCwyNSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgeyB9CiAgICAg
fTsKIAotCi0gICAgLy8gSW1wbGVtZW50ZWQgYnkgcG9ydCAoc2luY2UgaXQgcHJvdmlkZXMgdGhl
IHJ1biBsb29wIGZvciB0aGUgbWFpbiB0aHJlYWQpLgotICAgIC8vIEZJWE1FOiBtYWtlIHBvcnRz
IGltcGxlbWVudCBNYWluVGhyZWFkU2hhcmVkVGltZXIgZGlyZWN0bHkgaW5zdGVhZC4KLSAgICB2
b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqKSgpKTsKLSAgICB2b2lkIHNl
dFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJsZSk7Ci0gICAgdm9pZCBzdG9wU2hhcmVkVGlt
ZXIoKTsKLSAgICB2b2lkIGludmFsaWRhdGVTaGFyZWRUaW1lcigpOwotCiAgICAgLy8gSW1wbGVt
ZW50YXRpb24gb2YgU2hhcmVkVGltZXIgZm9yIHRoZSBtYWluIHRocmVhZC4KICAgICBjbGFzcyBN
YWluVGhyZWFkU2hhcmVkVGltZXIgZmluYWwgOiBwdWJsaWMgU2hhcmVkVGltZXIgewogICAgIHB1
YmxpYzoKICAgICAgICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmdW5jdGlvbikoKSkg
b3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0
aW9uKGZ1bmN0aW9uKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRGaXJl
SW50ZXJ2YWwoZG91YmxlIGludGVydmFsKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChpbnRlcnZhbCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHN0b3BTaGFyZWRUaW1lcigpOworICAgICAgICAgICAgQVNTRVJUKCFtX2ZpcmVkRnVuY3Rpb24g
fHwgbV9maXJlZEZ1bmN0aW9uID09IGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG1fZmlyZWRGdW5j
dGlvbiA9IGZ1bmN0aW9uOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCkg
b3ZlcnJpZGUKKyAgICAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlKSBvdmVycmlkZTsK
KyAgICAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgaW52YWxpZGF0ZSgp
IG92ZXJyaWRlOworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgdGltZXJGaXJlZCgpIGNvbnN0
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGludmFsaWRhdGVTaGFyZWRUaW1lcigpOworICAgICAg
ICAgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlvbik7CisgICAgICAgICAgICBtX2ZpcmVkRnVuY3Rp
b24oKTsKICAgICAgICAgfQorICAgICAgICB2b2lkICgqbV9maXJlZEZ1bmN0aW9uKSgpIHsgbnVs
bHB0ciB9OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvU2hhcmVkVGltZXJDRi5jcHAKaW5kZXggNmZkNzA3Yi4uMWIyM2M3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkVGltZXJDRi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkVGltZXJDRi5jcHAKQEAgLTM4
LDcgKzM4LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIENGUnVuTG9vcFRpbWVy
UmVmIHNoYXJlZFRpbWVyOwotc3RhdGljIHZvaWQgKCpzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24p
KCk7CiBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKik7CiBz
dGF0aWMgdm9pZCByZXN0YXJ0U2hhcmVkVGltZXIoKTsKIApAQCAtNjksMTcgKzY4LDEyIEBAIHN0
YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZlcigpCiAjZW5kaWYKIH0KIAotdm9pZCBzZXRTaGFy
ZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpCitzdGF0aWMgdm9pZCB0aW1lckZpcmVk
KENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKiBjb250ZXh0KQogewotICAgIEFTU0VSVCghc2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uIHx8IHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiA9PSBmKTsKKyAg
ICBNYWluVGhyZWFkU2hhcmVkVGltZXIqIHRpbWVyID0gc3RhdGljX2Nhc3Q8TWFpblRocmVhZFNo
YXJlZFRpbWVyKj4oY29udGV4dCk7CiAKLSAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gPSBm
OwotfQotCi1zdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKikK
LXsKICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKLSAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rp
b24oKTsKKyAgICB0aW1lci0+dGltZXJGaXJlZCgpOwogfQogCiBzdGF0aWMgdm9pZCByZXN0YXJ0
U2hhcmVkVGltZXIoKQpAQCAtOTEsNyArODUsNyBAQCBzdGF0aWMgdm9pZCByZXN0YXJ0U2hhcmVk
VGltZXIoKQogICAgIHRpbWVyRmlyZWQoMCwgMCk7CiB9CiAKLXZvaWQgaW52YWxpZGF0ZVNoYXJl
ZFRpbWVyKCkKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKIHsKICAg
ICBpZiAoIXNoYXJlZFRpbWVyKQogICAgICAgICByZXR1cm47CkBAIC0xMDEsMTMgKzk1LDEzIEBA
IHZvaWQgaW52YWxpZGF0ZVNoYXJlZFRpbWVyKCkKICAgICBzaGFyZWRUaW1lciA9IG51bGxwdHI7
CiB9CiAKLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQor
TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQog
ewotICAgIEFTU0VSVChzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOworICAgIEFTU0VSVChtX0Zp
cmVkRnVuY3Rpb24pOwogCiAgICAgQ0ZBYnNvbHV0ZVRpbWUgZmlyZURhdGUgPSBDRkFic29sdXRl
VGltZUdldEN1cnJlbnQoKSArIGludGVydmFsOwogICAgIGlmICghc2hhcmVkVGltZXIpIHsKLSAg
ICAgICAgc2hhcmVkVGltZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0ZShudWxscHRyLCBmaXJlRGF0
ZSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSwgMCwgMCwgdGltZXJGaXJlZCwgbnVsbHB0
cik7CisgICAgICAgIHNoYXJlZFRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUobnVsbHB0ciwg
ZmlyZURhdGUsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUsIDAsIDAsIHRpbWVyRmlyZWQs
IHRoaXMpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoV2Vi
VGhyZWFkUnVuTG9vcCgpLCBzaGFyZWRUaW1lciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICNl
bHNlCkBAIC0xMjIsNyArMTE2LDcgQEAgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChk
b3VibGUgaW50ZXJ2YWwpCiAgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVk
VGltZXIsIGZpcmVEYXRlKTsKIH0KIAotdm9pZCBzdG9wU2hhcmVkVGltZXIoKQordm9pZCBNYWlu
VGhyZWFkU2hhcmVkVGltZXI6OnN0b3AoKQogewogICAgIGlmICghc2hhcmVkVGltZXIpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TaGFy
ZWRUaW1lckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJF
ZmwuY3BwCmluZGV4IDkwYmEwMzYuLjI3OTBmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcApAQCAtMzgsMjMgKzM4LDE0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIEVjb3JlX1RpbWVyICpfc2hhcmVkVGltZXIgPSAwOwogCi1z
dGF0aWMgdm9pZCAoKl90aW1lckZ1bmN0aW9uKSgpOwotCi12b2lkIHNldFNoYXJlZFRpbWVyRmly
ZWRGdW5jdGlvbih2b2lkICgqZnVuYykoKSkKLXsKLSAgICBfdGltZXJGdW5jdGlvbiA9IGZ1bmM7
Ci19Ci0KLXN0YXRpYyBFaW5hX0Jvb2wgdGltZXJFdmVudCh2b2lkKikKK3N0YXRpYyBFaW5hX0Jv
b2wgdGltZXJFdmVudCh2b2lkKiBjb250ZXh0KQogewogICAgIF9zaGFyZWRUaW1lciA9IDA7Ci0g
ICAgaWYgKF90aW1lckZ1bmN0aW9uKQotICAgICAgICBfdGltZXJGdW5jdGlvbigpOwotCisgICAg
c3RhdGljX2Nhc3Q8TWFpblRocmVhZFNoYXJlZFRpbWVyKj4oY29udGV4dCktPnRpbWVyRmlyZWQo
KTsKICAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOwogfQogCi12b2lkIHN0b3BTaGFy
ZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCgpCiB7CiAgICAgaWYg
KF9zaGFyZWRUaW1lcikgewogICAgICAgICBlY29yZV90aW1lcl9kZWwoX3NoYXJlZFRpbWVyKTsK
QEAgLTYyLDE5ICs1MywxNCBAQCB2b2lkIHN0b3BTaGFyZWRUaW1lcigpCiAgICAgfQogfQogCi12
b2lkIGFkZE5ld1RpbWVyKGRvdWJsZSBpbnRlcnZhbCkKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRp
bWVyOjpzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogewogICAgIHN0b3BTaGFyZWRU
aW1lcigpOwogCi0gICAgX3NoYXJlZFRpbWVyID0gZWNvcmVfdGltZXJfbG9vcF9hZGQoaW50ZXJ2
YWwsIHRpbWVyRXZlbnQsIDApOwotfQotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFs
KGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBhZGROZXdUaW1lcihpbnRlcnZhbCk7CisgICAgX3No
YXJlZFRpbWVyID0gZWNvcmVfdGltZXJfbG9vcF9hZGQoaW50ZXJ2YWwsIHRpbWVyRXZlbnQsIHRo
aXMpOwogfQogCi12b2lkIGludmFsaWRhdGVTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwCmluZGV4IGNmZjdkNzMuLjZhOWMxY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcApAQCAtMzMs
MzEgKzMzLDIzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBHTWFpbkxvb3BTb3Vy
Y2UgZ1NoYXJlZFRpbWVyOwotc3RhdGljIHZvaWQgKCpzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24p
KCk7CiAKLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmKSgpKQordm9p
ZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwp
CiB7Ci0gICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uID0gZjsKLSAgICBpZiAoIXNoYXJlZFRp
bWVyRmlyZWRGdW5jdGlvbikKLSAgICAgICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOwotfQotCi12
b2lkIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBB
U1NFUlQoc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKTsKKyAgICBBU1NFUlQobV9maXJlZEZ1bmN0
aW9uKTsKIAogICAgIC8vIFRoaXMgaXMgR0RLX1BSSU9SSVRZX1JFRFJBVywgYnV0IHdlIGRvbid0
IHdhbnQgdG8gZGVwZW5kIG9uIEdESyBoZXJlIGp1c3QgdG8gdXNlIGEgY29uc3RhbnQuCiAgICAg
c3RhdGljIGNvbnN0IGludCBwcmlvcml0eSA9IEdfUFJJT1JJVFlfSElHSF9JRExFICsgMjA7Ci0g
ICAgZ1NoYXJlZFRpbWVyLnNjaGVkdWxlQWZ0ZXJEZWxheSgiW1dlYktpdF0gc2hhcmVkVGltZXJU
aW1lb3V0Q2FsbGJhY2siLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oc2hhcmVkVGltZXJGaXJlZEZ1
bmN0aW9uKSwKKyAgICBnU2hhcmVkVGltZXIuc2NoZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSBz
aGFyZWRUaW1lclRpbWVvdXRDYWxsYmFjayIsIFt0aGlzXSB7IHRpbWVyRmlyZWQoKTsgfSwKICAg
ICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25k
cz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oaW50ZXJ2YWwpKSwgcHJpb3JpdHkpOwog
fQogCi12b2lkIHN0b3BTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6
c3RvcCgpCiB7CiAgICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOwogfQogCi12b2lkIGludmFsaWRh
dGVTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgp
CiB7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263919</attachid>
            <date>2015-10-23 06:26:17 -0700</date>
            <delta_ts>2015-10-23 06:30:11 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wcore-shared-timer.diff</filename>
            <type>text/plain</type>
            <size>10569</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMDRlMjQxLi5lYmQ2YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTUtMTAtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIE1ha2UgZXZlcnkgcG9ydCBpbXBsZW1lbnQgTWFpblRocmVhZFNoYXJlZFRp
bWVyIGluc3RlYWQgb2YgdXNpbmcgZ2xvYmFsIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNDk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgS2VlcCBjb21tb24gY29kZSBpbiBNYWluVGhy
ZWFkU2hhcmVkVGltZXIgYW5kIGltcGxlbWVudCB0aGUgcmVzdAorICAgICAgICBvZiB0aGUgbWVt
YmVycyBpbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMuIEl0IHNpbXBsaWZpZXMgYm90aAor
ICAgICAgICB0aGUgaGVhZGVyIGFuZCB0aGUgcG9ydCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJl
ZFRpbWVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGltZXJGaXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZXN0YXJ0U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVy
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1NoYXJlZFRpbWVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRU
aW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFy
ZWRUaW1lcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6
OmludmFsaWRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lcldpbmRvd1duZFByb2MpOgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpxdWV1
ZVRpbWVyUHJvYyk6CisKIDIwMTUtMTAtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IG1hcmtGb250RGF0YSBp
biBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrSGVpZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkVGltZXIuaAppbmRleCAyOTljNDk5Li5mYzY2MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZFRpbWVyLmgKQEAgLTQ4LDM2ICs0OCwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgeyB9CiAgICAgfTsKIAotCi0gICAgLy8g
SW1wbGVtZW50ZWQgYnkgcG9ydCAoc2luY2UgaXQgcHJvdmlkZXMgdGhlIHJ1biBsb29wIGZvciB0
aGUgbWFpbiB0aHJlYWQpLgotICAgIC8vIEZJWE1FOiBtYWtlIHBvcnRzIGltcGxlbWVudCBNYWlu
VGhyZWFkU2hhcmVkVGltZXIgZGlyZWN0bHkgaW5zdGVhZC4KLSAgICB2b2lkIHNldFNoYXJlZFRp
bWVyRmlyZWRGdW5jdGlvbih2b2lkICgqKSgpKTsKLSAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmly
ZUludGVydmFsKGRvdWJsZSk7Ci0gICAgdm9pZCBzdG9wU2hhcmVkVGltZXIoKTsKLSAgICB2b2lk
IGludmFsaWRhdGVTaGFyZWRUaW1lcigpOwotCiAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgU2hh
cmVkVGltZXIgZm9yIHRoZSBtYWluIHRocmVhZC4KICAgICBjbGFzcyBNYWluVGhyZWFkU2hhcmVk
VGltZXIgZmluYWwgOiBwdWJsaWMgU2hhcmVkVGltZXIgewogICAgIHB1YmxpYzoKICAgICAgICAg
dm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmdW5jdGlvbikoKSkgb3ZlcnJpZGUKICAgICAg
ICAgewotICAgICAgICAgICAgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKGZ1bmN0aW9uKTsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91Ymxl
IGludGVydmFsKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBzZXRTaGFyZWRUaW1l
ckZpcmVJbnRlcnZhbChpbnRlcnZhbCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZv
aWQgc3RvcCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0b3BTaGFyZWRUaW1l
cigpOworICAgICAgICAgICAgQVNTRVJUKCFzX2ZpcmVkRnVuY3Rpb24gfHwgc19maXJlZEZ1bmN0
aW9uID09IGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHNfZmlyZWRGdW5jdGlvbiA9IGZ1bmN0aW9u
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGUKKyAgICAg
ICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBz
dG9wKCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOworCisg
ICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBp
bnZhbGlkYXRlU2hhcmVkVGltZXIoKTsKKyAgICAgICAgICAgIEFTU0VSVChzX2ZpcmVkRnVuY3Rp
b24pOworICAgICAgICAgICAgc19maXJlZEZ1bmN0aW9uKCk7CiAgICAgICAgIH0KKyAgICBwcml2
YXRlOgorICAgICAgICBzdGF0aWMgdm9pZCAoKnNfZmlyZWRGdW5jdGlvbikoKTsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9TaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZFRpbWVyQ0YuY3BwCmluZGV4IDZmZDcwN2IuLmEzMmY1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiBzaGFyZWRUaW1lcjsK
LXN0YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOwordm9pZCAoKk1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6c19maXJlZEZ1bmN0aW9uKSgpID0gbnVsbHB0cjsKIHN0YXRpYyB2
b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKIHN0YXRpYyB2b2lkIHJl
c3RhcnRTaGFyZWRUaW1lcigpOwogCkBAIC02OSwxNyArNjksMTAgQEAgc3RhdGljIHZvaWQgc2V0
dXBQb3dlck9ic2VydmVyKCkKICNlbmRpZgogfQogCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRG
dW5jdGlvbih2b2lkICgqZikoKSkKLXsKLSAgICBBU1NFUlQoIXNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbiB8fCBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gPT0gZik7Ci0KLSAgICBzaGFyZWRUaW1l
ckZpcmVkRnVuY3Rpb24gPSBmOwotfQotCiBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9v
cFRpbWVyUmVmLCB2b2lkKikKIHsKICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKLSAgICBzaGFy
ZWRUaW1lckZpcmVkRnVuY3Rpb24oKTsKKyAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnRpbWVy
RmlyZWQoKTsKIH0KIAogc3RhdGljIHZvaWQgcmVzdGFydFNoYXJlZFRpbWVyKCkKQEAgLTg3LDEx
ICs4MCwxMSBAQCBzdGF0aWMgdm9pZCByZXN0YXJ0U2hhcmVkVGltZXIoKQogICAgIGlmICghc2hh
cmVkVGltZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3BTaGFyZWRUaW1lcigpOworICAg
IENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyLCBrQ0ZUaW1lSW50ZXJ2
YWxEaXN0YW50RnV0dXJlKTsKICAgICB0aW1lckZpcmVkKDAsIDApOwogfQogCi12b2lkIGludmFs
aWRhdGVTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0
ZSgpCiB7CiAgICAgaWYgKCFzaGFyZWRUaW1lcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTAxLDkg
Kzk0LDkgQEAgdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGltZXIoKQogICAgIHNoYXJlZFRpbWVyID0g
bnVsbHB0cjsKIH0KIAotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50
ZXJ2YWwpCitNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbChkb3VibGUgaW50
ZXJ2YWwpCiB7Ci0gICAgQVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7CisgICAgQVNT
RVJUKE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c19maXJlZEZ1bmN0aW9uKTsKIAogICAgIENGQWJz
b2x1dGVUaW1lIGZpcmVEYXRlID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBpbnRlcnZh
bDsKICAgICBpZiAoIXNoYXJlZFRpbWVyKSB7CkBAIC0xMjIsNyArMTE1LDcgQEAgdm9pZCBzZXRT
aGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCiAgICAgQ0ZSdW5Mb29wVGlt
ZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIsIGZpcmVEYXRlKTsKIH0KIAotdm9pZCBzdG9w
U2hhcmVkVGltZXIoKQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3AoKQogewogICAg
IGlmICghc2hhcmVkVGltZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwCmluZGV4IDkwYmEwMzYuLjU5OTUwYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVmbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcApAQCAt
MzcsMjQgKzM3LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBFY29yZV9UaW1l
ciAqX3NoYXJlZFRpbWVyID0gMDsKLQotc3RhdGljIHZvaWQgKCpfdGltZXJGdW5jdGlvbikoKTsK
LQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmZ1bmMpKCkpCi17Ci0g
ICAgX3RpbWVyRnVuY3Rpb24gPSBmdW5jOwotfQordm9pZCAoKk1haW5UaHJlYWRTaGFyZWRUaW1l
cjo6c19maXJlZEZ1bmN0aW9uKSgpID0gbnVsbHB0cjsKIAogc3RhdGljIEVpbmFfQm9vbCB0aW1l
ckV2ZW50KHZvaWQqKQogewogICAgIF9zaGFyZWRUaW1lciA9IDA7Ci0gICAgaWYgKF90aW1lckZ1
bmN0aW9uKQotICAgICAgICBfdGltZXJGdW5jdGlvbigpOwotCisgICAgTWFpblRocmVhZFNoYXJl
ZFRpbWVyOjp0aW1lckZpcmVkKCk7CiAgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsK
IH0KIAotdm9pZCBzdG9wU2hhcmVkVGltZXIoKQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6
OnN0b3AoKQogewogICAgIGlmIChfc2hhcmVkVGltZXIpIHsKICAgICAgICAgZWNvcmVfdGltZXJf
ZGVsKF9zaGFyZWRUaW1lcik7CkBAIC02MiwxOSArNTQsMTMgQEAgdm9pZCBzdG9wU2hhcmVkVGlt
ZXIoKQogICAgIH0KIH0KIAotdm9pZCBhZGROZXdUaW1lcihkb3VibGUgaW50ZXJ2YWwpCit2b2lk
IE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkK
IHsKLSAgICBzdG9wU2hhcmVkVGltZXIoKTsKLQorICAgIHN0b3AoKTsKICAgICBfc2hhcmVkVGlt
ZXIgPSBlY29yZV90aW1lcl9sb29wX2FkZChpbnRlcnZhbCwgdGltZXJFdmVudCwgMCk7CiB9CiAK
LXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQotewotICAg
IGFkZE5ld1RpbWVyKGludGVydmFsKTsKLX0KLQotdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGltZXIo
KQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUoKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcAppbmRleCBjZmY3
ZDczLi5lNGRmYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hh
cmVkVGltZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRU
aW1lckd0ay5jcHAKQEAgLTMzLDMxICszMywyNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGF0aWMgR01haW5Mb29wU291cmNlIGdTaGFyZWRUaW1lcjsKLXN0YXRpYyB2b2lkICgqc2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uKSgpOwordm9pZCAoKk1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c19m
aXJlZEZ1bmN0aW9uKSgpID0gbnVsbHB0cjsKIAotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVu
Y3Rpb24odm9pZCAoKmYpKCkpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUlu
dGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKIHsKLSAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24g
PSBmOwotICAgIGlmICghc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKQotICAgICAgICBnU2hhcmVk
VGltZXIuY2FuY2VsKCk7Ci19Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91
YmxlIGludGVydmFsKQotewotICAgIEFTU0VSVChzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOwor
ICAgIEFTU0VSVChNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNfZmlyZWRGdW5jdGlvbik7CiAKICAg
ICAvLyBUaGlzIGlzIEdES19QUklPUklUWV9SRURSQVcsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIGRl
cGVuZCBvbiBHREsgaGVyZSBqdXN0IHRvIHVzZSBhIGNvbnN0YW50LgogICAgIHN0YXRpYyBjb25z
dCBpbnQgcHJpb3JpdHkgPSBHX1BSSU9SSVRZX0hJR0hfSURMRSArIDIwOwotICAgIGdTaGFyZWRU
aW1lci5zY2hlZHVsZUFmdGVyRGVsYXkoIltXZWJLaXRdIHNoYXJlZFRpbWVyVGltZW91dENhbGxi
YWNrIiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiksCisg
ICAgZ1NoYXJlZFRpbWVyLnNjaGVkdWxlQWZ0ZXJEZWxheSgiW1dlYktpdF0gc2hhcmVkVGltZXJU
aW1lb3V0Q2FsbGJhY2siLCBbdGhpc10geyBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnRpbWVyRmly
ZWQoKTsgfSwKICAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86
Om1pY3Jvc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oaW50ZXJ2YWwpKSwg
cHJpb3JpdHkpOwogfQogCi12b2lkIHN0b3BTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6c3RvcCgpCiB7CiAgICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOwogfQogCi12
b2lkIGludmFsaWRhdGVTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6
aW52YWxpZGF0ZSgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9TaGFyZWRUaW1lcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hh
cmVkVGltZXJXaW4uY3BwCmluZGV4IDNkMDJiMTkuLmMxZjg4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZFRpbWVyV2luLmNwcApAQCAtNTMsNyArNTMsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgVUlOVCB0aW1lcklEOwotc3RhdGljIHZvaWQg
KCpzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pKCk7Cit2b2lkICgqTWFpblRocmVhZFNoYXJlZFRp
bWVyOjpzX2ZpcmVkRnVuY3Rpb24pKCkgPSBudWxscHRyOwogCiBzdGF0aWMgSEFORExFIHRpbWVy
Owogc3RhdGljIEhXTkQgdGltZXJXaW5kb3dIYW5kbGUgPSAwOwpAQCAtNzksMTcgKzc5LDE3IEBA
IExSRVNVTFQgQ0FMTEJBQ0sgVGltZXJXaW5kb3dXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNz
YWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSCiAgICAgaWYgKG1lc3NhZ2UgPT0gV01fVElNRVIpIHsK
ICAgICAgICAgaWYgKHdQYXJhbSA9PSBzaGFyZWRUaW1lcklEKSB7CiAgICAgICAgICAgICBLaWxs
VGltZXIodGltZXJXaW5kb3dIYW5kbGUsIHNoYXJlZFRpbWVySUQpOwotICAgICAgICAgICAgc2hh
cmVkVGltZXJGaXJlZEZ1bmN0aW9uKCk7CisgICAgICAgICAgICBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnRpbWVyRmlyZWQoKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICh3UGFyYW0gPT0g
ZW5kSGlnaFJlc1RpbWVySUQpIHsKICAgICAgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hh
bmRsZSwgZW5kSGlnaFJlc1RpbWVySUQpOwogICAgICAgICAgICAgaGlnaFJlc1RpbWVyQWN0aXZl
ID0gZmFsc2U7Ci0gICAgICAgICAgICB0aW1lRW5kUGVyaW9kKHRpbWVyUmVzb2x1dGlvbik7Cisg
ICAgICAgICAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnRpbWVyRmlyZWQoKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAobWVzc2FnZSA9PSB0aW1lckZpcmVkTWVzc2FnZSkgewogICAgICAg
ICBJbnRlcmxvY2tlZEV4Y2hhbmdlKCZwZW5kaW5nVGltZXJzLCAwKTsKICAgICAgICAgcHJvY2Vz
c2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IHRydWU7Ci0gICAgICAgIHNoYXJlZFRpbWVyRmlyZWRG
dW5jdGlvbigpOworICAgICAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnRpbWVyRmlyZWQoKTsK
ICAgICAgICAgcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IGZhbHNlOwogICAgIH0gZWxz
ZQogICAgICAgICByZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQ
YXJhbSk7CkBAIC0xMTcsMjAgKzExNywxNSBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplT2ZmU2Ny
ZWVuVGltZXJXaW5kb3coKQogICAgIHRpbWVyRmlyZWRNZXNzYWdlID0gUmVnaXN0ZXJXaW5kb3dN
ZXNzYWdlKEwiY29tLmFwcGxlLldlYktpdC5UaW1lckZpcmVkIik7CiB9CiAKLXZvaWQgc2V0U2hh
cmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmKSgpKQotewotICAgIHNoYXJlZFRpbWVyRmly
ZWRGdW5jdGlvbiA9IGY7Ci19Ci0KIHN0YXRpYyB2b2lkIE5UQVBJIHF1ZXVlVGltZXJQcm9jKFBW
T0lELCBCT09MRUFOKQogewogICAgIGlmIChJbnRlcmxvY2tlZEluY3JlbWVudCgmcGVuZGluZ1Rp
bWVycykgPT0gMSkKICAgICAgICAgUG9zdE1lc3NhZ2UodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVy
RmlyZWRNZXNzYWdlLCAwLCAwKTsKIH0KIAotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZh
bChkb3VibGUgaW50ZXJ2YWwpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUlu
dGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKIHsKLSAgICBBU1NFUlQoc2hhcmVkVGltZXJGaXJlZEZ1
bmN0aW9uKTsKKyAgICBBU1NFUlQoTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzX2ZpcmVkRnVuY3Rp
b24pOwogCiAgICAgdW5zaWduZWQgaW50ZXJ2YWxJbk1TOwogICAgIGludGVydmFsICo9IDEwMDA7
CkBAIC0xODUsNyArMTgwLDcgQEAgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3Vi
bGUgaW50ZXJ2YWwpCiAgICAgfQogfQogCi12b2lkIHN0b3BTaGFyZWRUaW1lcigpCit2b2lkIE1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCgpCiB7CiAgICAgaWYgKHRpbWVyUXVldWUgJiYgdGlt
ZXIpIHsKICAgICAgICAgRGVsZXRlVGltZXJRdWV1ZVRpbWVyKHRpbWVyUXVldWUsIHRpbWVyLCAw
KTsKQEAgLTE5OCw3ICsxOTMsNyBAQCB2b2lkIHN0b3BTaGFyZWRUaW1lcigpCiAgICAgfQogfQog
Ci12b2lkIGludmFsaWRhdGVTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1l
cjo6aW52YWxpZGF0ZSgpCiB7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263920</attachid>
            <date>2015-10-23 06:30:11 -0700</date>
            <delta_ts>2015-10-23 06:46:10 -0700</delta_ts>
            <desc>Try to fix Mac build</desc>
            <filename>wcore-shared-timer.diff</filename>
            <type>text/plain</type>
            <size>10574</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMDRlMjQxLi5lYmQ2YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTUtMTAtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIE1ha2UgZXZlcnkgcG9ydCBpbXBsZW1lbnQgTWFpblRocmVhZFNoYXJlZFRp
bWVyIGluc3RlYWQgb2YgdXNpbmcgZ2xvYmFsIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNDk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgS2VlcCBjb21tb24gY29kZSBpbiBNYWluVGhy
ZWFkU2hhcmVkVGltZXIgYW5kIGltcGxlbWVudCB0aGUgcmVzdAorICAgICAgICBvZiB0aGUgbWVt
YmVycyBpbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMuIEl0IHNpbXBsaWZpZXMgYm90aAor
ICAgICAgICB0aGUgaGVhZGVyIGFuZCB0aGUgcG9ydCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJl
ZFRpbWVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGltZXJGaXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZXN0YXJ0U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVy
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1NoYXJlZFRpbWVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRU
aW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFy
ZWRUaW1lcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6
OmludmFsaWRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lcldpbmRvd1duZFByb2MpOgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpxdWV1
ZVRpbWVyUHJvYyk6CisKIDIwMTUtMTAtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IG1hcmtGb250RGF0YSBp
biBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrSGVpZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkVGltZXIuaAppbmRleCAyOTljNDk5Li5mYzY2MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZFRpbWVyLmgKQEAgLTQ4LDM2ICs0OCwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgeyB9CiAgICAgfTsKIAotCi0gICAgLy8g
SW1wbGVtZW50ZWQgYnkgcG9ydCAoc2luY2UgaXQgcHJvdmlkZXMgdGhlIHJ1biBsb29wIGZvciB0
aGUgbWFpbiB0aHJlYWQpLgotICAgIC8vIEZJWE1FOiBtYWtlIHBvcnRzIGltcGxlbWVudCBNYWlu
VGhyZWFkU2hhcmVkVGltZXIgZGlyZWN0bHkgaW5zdGVhZC4KLSAgICB2b2lkIHNldFNoYXJlZFRp
bWVyRmlyZWRGdW5jdGlvbih2b2lkICgqKSgpKTsKLSAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmly
ZUludGVydmFsKGRvdWJsZSk7Ci0gICAgdm9pZCBzdG9wU2hhcmVkVGltZXIoKTsKLSAgICB2b2lk
IGludmFsaWRhdGVTaGFyZWRUaW1lcigpOwotCiAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgU2hh
cmVkVGltZXIgZm9yIHRoZSBtYWluIHRocmVhZC4KICAgICBjbGFzcyBNYWluVGhyZWFkU2hhcmVk
VGltZXIgZmluYWwgOiBwdWJsaWMgU2hhcmVkVGltZXIgewogICAgIHB1YmxpYzoKICAgICAgICAg
dm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmdW5jdGlvbikoKSkgb3ZlcnJpZGUKICAgICAg
ICAgewotICAgICAgICAgICAgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKGZ1bmN0aW9uKTsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91Ymxl
IGludGVydmFsKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBzZXRTaGFyZWRUaW1l
ckZpcmVJbnRlcnZhbChpbnRlcnZhbCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZv
aWQgc3RvcCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0b3BTaGFyZWRUaW1l
cigpOworICAgICAgICAgICAgQVNTRVJUKCFzX2ZpcmVkRnVuY3Rpb24gfHwgc19maXJlZEZ1bmN0
aW9uID09IGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHNfZmlyZWRGdW5jdGlvbiA9IGZ1bmN0aW9u
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGUKKyAgICAg
ICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBz
dG9wKCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOworCisg
ICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBp
bnZhbGlkYXRlU2hhcmVkVGltZXIoKTsKKyAgICAgICAgICAgIEFTU0VSVChzX2ZpcmVkRnVuY3Rp
b24pOworICAgICAgICAgICAgc19maXJlZEZ1bmN0aW9uKCk7CiAgICAgICAgIH0KKyAgICBwcml2
YXRlOgorICAgICAgICBzdGF0aWMgdm9pZCAoKnNfZmlyZWRGdW5jdGlvbikoKTsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9TaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZFRpbWVyQ0YuY3BwCmluZGV4IDZmZDcwN2IuLmFjOWFkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiBzaGFyZWRUaW1lcjsK
LXN0YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOwordm9pZCAoKk1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6c19maXJlZEZ1bmN0aW9uKSgpID0gbnVsbHB0cjsKIHN0YXRpYyB2
b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKIHN0YXRpYyB2b2lkIHJl
c3RhcnRTaGFyZWRUaW1lcigpOwogCkBAIC02OSwxNyArNjksMTAgQEAgc3RhdGljIHZvaWQgc2V0
dXBQb3dlck9ic2VydmVyKCkKICNlbmRpZgogfQogCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRG
dW5jdGlvbih2b2lkICgqZikoKSkKLXsKLSAgICBBU1NFUlQoIXNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbiB8fCBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gPT0gZik7Ci0KLSAgICBzaGFyZWRUaW1l
ckZpcmVkRnVuY3Rpb24gPSBmOwotfQotCiBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9v
cFRpbWVyUmVmLCB2b2lkKikKIHsKICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKLSAgICBzaGFy
ZWRUaW1lckZpcmVkRnVuY3Rpb24oKTsKKyAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnRpbWVy
RmlyZWQoKTsKIH0KIAogc3RhdGljIHZvaWQgcmVzdGFydFNoYXJlZFRpbWVyKCkKQEAgLTg3LDEx
ICs4MCwxMSBAQCBzdGF0aWMgdm9pZCByZXN0YXJ0U2hhcmVkVGltZXIoKQogICAgIGlmICghc2hh
cmVkVGltZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3BTaGFyZWRUaW1lcigpOworICAg
IENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyLCBrQ0ZUaW1lSW50ZXJ2
YWxEaXN0YW50RnV0dXJlKTsKICAgICB0aW1lckZpcmVkKDAsIDApOwogfQogCi12b2lkIGludmFs
aWRhdGVTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0
ZSgpCiB7CiAgICAgaWYgKCFzaGFyZWRUaW1lcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTAxLDkg
Kzk0LDkgQEAgdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGltZXIoKQogICAgIHNoYXJlZFRpbWVyID0g
bnVsbHB0cjsKIH0KIAotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50
ZXJ2YWwpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKGRvdWJs
ZSBpbnRlcnZhbCkKIHsKLSAgICBBU1NFUlQoc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKTsKKyAg
ICBBU1NFUlQoTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzX2ZpcmVkRnVuY3Rpb24pOwogCiAgICAg
Q0ZBYnNvbHV0ZVRpbWUgZmlyZURhdGUgPSBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIGlu
dGVydmFsOwogICAgIGlmICghc2hhcmVkVGltZXIpIHsKQEAgLTEyMiw3ICsxMTUsNyBAQCB2b2lk
IHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKICAgICBDRlJ1bkxv
b3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwgZmlyZURhdGUpOwogfQogCi12b2lk
IHN0b3BTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCgpCiB7
CiAgICAgaWYgKCFzaGFyZWRUaW1lcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVmbC5jcHAKaW5kZXggOTBiYTAzNi4uNTk5NTBh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3Bw
CkBAIC0zNywyNCArMzcsMTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEVjb3Jl
X1RpbWVyICpfc2hhcmVkVGltZXIgPSAwOwotCi1zdGF0aWMgdm9pZCAoKl90aW1lckZ1bmN0aW9u
KSgpOwotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqZnVuYykoKSkK
LXsKLSAgICBfdGltZXJGdW5jdGlvbiA9IGZ1bmM7Ci19Cit2b2lkICgqTWFpblRocmVhZFNoYXJl
ZFRpbWVyOjpzX2ZpcmVkRnVuY3Rpb24pKCkgPSBudWxscHRyOwogCiBzdGF0aWMgRWluYV9Cb29s
IHRpbWVyRXZlbnQodm9pZCopCiB7CiAgICAgX3NoYXJlZFRpbWVyID0gMDsKLSAgICBpZiAoX3Rp
bWVyRnVuY3Rpb24pCi0gICAgICAgIF90aW1lckZ1bmN0aW9uKCk7Ci0KKyAgICBNYWluVGhyZWFk
U2hhcmVkVGltZXI6OnRpbWVyRmlyZWQoKTsKICAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FO
Q0VMOwogfQogCi12b2lkIHN0b3BTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRU
aW1lcjo6c3RvcCgpCiB7CiAgICAgaWYgKF9zaGFyZWRUaW1lcikgewogICAgICAgICBlY29yZV90
aW1lcl9kZWwoX3NoYXJlZFRpbWVyKTsKQEAgLTYyLDE5ICs1NCwxMyBAQCB2b2lkIHN0b3BTaGFy
ZWRUaW1lcigpCiAgICAgfQogfQogCi12b2lkIGFkZE5ld1RpbWVyKGRvdWJsZSBpbnRlcnZhbCkK
K3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVy
dmFsKQogewotICAgIHN0b3BTaGFyZWRUaW1lcigpOwotCisgICAgc3RvcCgpOwogICAgIF9zaGFy
ZWRUaW1lciA9IGVjb3JlX3RpbWVyX2xvb3BfYWRkKGludGVydmFsLCB0aW1lckV2ZW50LCAwKTsK
IH0KIAotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCi17
Ci0gICAgYWRkTmV3VGltZXIoaW50ZXJ2YWwpOwotfQotCi12b2lkIGludmFsaWRhdGVTaGFyZWRU
aW1lcigpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwCmluZGV4
IGNmZjdkNzMuLmU0ZGZhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TaGFyZWRUaW1lckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1No
YXJlZFRpbWVyR3RrLmNwcApAQCAtMzMsMzEgKzMzLDI0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBHTWFpbkxvb3BTb3VyY2UgZ1NoYXJlZFRpbWVyOwotc3RhdGljIHZvaWQgKCpz
aGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pKCk7Cit2b2lkICgqTWFpblRocmVhZFNoYXJlZFRpbWVy
OjpzX2ZpcmVkRnVuY3Rpb24pKCkgPSBudWxscHRyOwogCi12b2lkIHNldFNoYXJlZFRpbWVyRmly
ZWRGdW5jdGlvbih2b2lkICgqZikoKSkKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRG
aXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogewotICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbiA9IGY7Ci0gICAgaWYgKCFzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pCi0gICAgICAgIGdT
aGFyZWRUaW1lci5jYW5jZWwoKTsKLX0KLQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZh
bChkb3VibGUgaW50ZXJ2YWwpCi17Ci0gICAgQVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlv
bik7CisgICAgQVNTRVJUKE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c19maXJlZEZ1bmN0aW9uKTsK
IAogICAgIC8vIFRoaXMgaXMgR0RLX1BSSU9SSVRZX1JFRFJBVywgYnV0IHdlIGRvbid0IHdhbnQg
dG8gZGVwZW5kIG9uIEdESyBoZXJlIGp1c3QgdG8gdXNlIGEgY29uc3RhbnQuCiAgICAgc3RhdGlj
IGNvbnN0IGludCBwcmlvcml0eSA9IEdfUFJJT1JJVFlfSElHSF9JRExFICsgMjA7Ci0gICAgZ1No
YXJlZFRpbWVyLnNjaGVkdWxlQWZ0ZXJEZWxheSgiW1dlYktpdF0gc2hhcmVkVGltZXJUaW1lb3V0
Q2FsbGJhY2siLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9u
KSwKKyAgICBnU2hhcmVkVGltZXIuc2NoZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSBzaGFyZWRU
aW1lclRpbWVvdXRDYWxsYmFjayIsIFt0aGlzXSB7IE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6dGlt
ZXJGaXJlZCgpOyB9LAogICAgICAgICBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNo
cm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihpbnRlcnZh
bCkpLCBwcmlvcml0eSk7CiB9CiAKLXZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKK3ZvaWQgTWFpblRo
cmVhZFNoYXJlZFRpbWVyOjpzdG9wKCkKIHsKICAgICBnU2hhcmVkVGltZXIuY2FuY2VsKCk7CiB9
CiAKLXZvaWQgaW52YWxpZGF0ZVNoYXJlZFRpbWVyKCkKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRp
bWVyOjppbnZhbGlkYXRlKCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZFRpbWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TaGFyZWRUaW1lcldpbi5jcHAKaW5kZXggM2QwMmIxOS4uYzFmODg3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZFRpbWVyV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwCkBAIC01Myw3ICs1Myw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBVSU5UIHRpbWVySUQ7Ci1zdGF0aWMg
dm9pZCAoKnNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbikoKTsKK3ZvaWQgKCpNYWluVGhyZWFkU2hh
cmVkVGltZXI6OnNfZmlyZWRGdW5jdGlvbikoKSA9IG51bGxwdHI7CiAKIHN0YXRpYyBIQU5ETEUg
dGltZXI7CiBzdGF0aWMgSFdORCB0aW1lcldpbmRvd0hhbmRsZSA9IDA7CkBAIC03OSwxNyArNzks
MTcgQEAgTFJFU1VMVCBDQUxMQkFDSyBUaW1lcldpbmRvd1duZFByb2MoSFdORCBoV25kLCBVSU5U
IG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVIKICAgICBpZiAobWVzc2FnZSA9PSBXTV9USU1F
UikgewogICAgICAgICBpZiAod1BhcmFtID09IHNoYXJlZFRpbWVySUQpIHsKICAgICAgICAgICAg
IEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgc2hhcmVkVGltZXJJRCk7Ci0gICAgICAgICAg
ICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24oKTsKKyAgICAgICAgICAgIE1haW5UaHJlYWRTaGFy
ZWRUaW1lcjo6dGltZXJGaXJlZCgpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHdQYXJh
bSA9PSBlbmRIaWdoUmVzVGltZXJJRCkgewogICAgICAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2lu
ZG93SGFuZGxlLCBlbmRIaWdoUmVzVGltZXJJRCk7CiAgICAgICAgICAgICBoaWdoUmVzVGltZXJB
Y3RpdmUgPSBmYWxzZTsKLSAgICAgICAgICAgIHRpbWVFbmRQZXJpb2QodGltZXJSZXNvbHV0aW9u
KTsKKyAgICAgICAgICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6dGltZXJGaXJlZCgpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChtZXNzYWdlID09IHRpbWVyRmlyZWRNZXNzYWdlKSB7CiAg
ICAgICAgIEludGVybG9ja2VkRXhjaGFuZ2UoJnBlbmRpbmdUaW1lcnMsIDApOwogICAgICAgICBw
cm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlID0gdHJ1ZTsKLSAgICAgICAgc2hhcmVkVGltZXJG
aXJlZEZ1bmN0aW9uKCk7CisgICAgICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6dGltZXJGaXJl
ZCgpOwogICAgICAgICBwcm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlID0gZmFsc2U7CiAgICAg
fSBlbHNlCiAgICAgICAgIHJldHVybiBEZWZXaW5kb3dQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJh
bSwgbFBhcmFtKTsKQEAgLTExNywyMCArMTE3LDE1IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVP
ZmZTY3JlZW5UaW1lcldpbmRvdygpCiAgICAgdGltZXJGaXJlZE1lc3NhZ2UgPSBSZWdpc3Rlcldp
bmRvd01lc3NhZ2UoTCJjb20uYXBwbGUuV2ViS2l0LlRpbWVyRmlyZWQiKTsKIH0KIAotdm9pZCBz
ZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpCi17Ci0gICAgc2hhcmVkVGlt
ZXJGaXJlZEZ1bmN0aW9uID0gZjsKLX0KLQogc3RhdGljIHZvaWQgTlRBUEkgcXVldWVUaW1lclBy
b2MoUFZPSUQsIEJPT0xFQU4pCiB7CiAgICAgaWYgKEludGVybG9ja2VkSW5jcmVtZW50KCZwZW5k
aW5nVGltZXJzKSA9PSAxKQogICAgICAgICBQb3N0TWVzc2FnZSh0aW1lcldpbmRvd0hhbmRsZSwg
dGltZXJGaXJlZE1lc3NhZ2UsIDAsIDApOwogfQogCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZUlu
dGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRG
aXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogewotICAgIEFTU0VSVChzaGFyZWRUaW1lckZp
cmVkRnVuY3Rpb24pOworICAgIEFTU0VSVChNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNfZmlyZWRG
dW5jdGlvbik7CiAKICAgICB1bnNpZ25lZCBpbnRlcnZhbEluTVM7CiAgICAgaW50ZXJ2YWwgKj0g
MTAwMDsKQEAgLTE4NSw3ICsxODAsNyBAQCB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFs
KGRvdWJsZSBpbnRlcnZhbCkKICAgICB9CiB9CiAKLXZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKK3Zv
aWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKCkKIHsKICAgICBpZiAodGltZXJRdWV1ZSAm
JiB0aW1lcikgewogICAgICAgICBEZWxldGVUaW1lclF1ZXVlVGltZXIodGltZXJRdWV1ZSwgdGlt
ZXIsIDApOwpAQCAtMTk4LDcgKzE5Myw3IEBAIHZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKICAgICB9
CiB9CiAKLXZvaWQgaW52YWxpZGF0ZVNoYXJlZFRpbWVyKCkKK3ZvaWQgTWFpblRocmVhZFNoYXJl
ZFRpbWVyOjppbnZhbGlkYXRlKCkKIHsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263922</attachid>
            <date>2015-10-23 06:46:10 -0700</date>
            <delta_ts>2015-10-23 06:53:11 -0700</delta_ts>
            <desc>Try to fix Mac build</desc>
            <filename>wcore-shared-timer.diff</filename>
            <type>text/plain</type>
            <size>10994</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMDRlMjQxLi5lYmQ2YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTUtMTAtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIE1ha2UgZXZlcnkgcG9ydCBpbXBsZW1lbnQgTWFpblRocmVhZFNoYXJlZFRp
bWVyIGluc3RlYWQgb2YgdXNpbmcgZ2xvYmFsIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNDk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgS2VlcCBjb21tb24gY29kZSBpbiBNYWluVGhy
ZWFkU2hhcmVkVGltZXIgYW5kIGltcGxlbWVudCB0aGUgcmVzdAorICAgICAgICBvZiB0aGUgbWVt
YmVycyBpbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMuIEl0IHNpbXBsaWZpZXMgYm90aAor
ICAgICAgICB0aGUgaGVhZGVyIGFuZCB0aGUgcG9ydCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJl
ZFRpbWVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGltZXJGaXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZXN0YXJ0U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVy
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1NoYXJlZFRpbWVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRU
aW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFy
ZWRUaW1lcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6
OmludmFsaWRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lcldpbmRvd1duZFByb2MpOgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpxdWV1
ZVRpbWVyUHJvYyk6CisKIDIwMTUtMTAtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IG1hcmtGb250RGF0YSBp
biBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrSGVpZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkVGltZXIuaAppbmRleCAyOTljNDk5Li5mYzY2MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZFRpbWVyLmgKQEAgLTQ4LDM2ICs0OCwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgeyB9CiAgICAgfTsKIAotCi0gICAgLy8g
SW1wbGVtZW50ZWQgYnkgcG9ydCAoc2luY2UgaXQgcHJvdmlkZXMgdGhlIHJ1biBsb29wIGZvciB0
aGUgbWFpbiB0aHJlYWQpLgotICAgIC8vIEZJWE1FOiBtYWtlIHBvcnRzIGltcGxlbWVudCBNYWlu
VGhyZWFkU2hhcmVkVGltZXIgZGlyZWN0bHkgaW5zdGVhZC4KLSAgICB2b2lkIHNldFNoYXJlZFRp
bWVyRmlyZWRGdW5jdGlvbih2b2lkICgqKSgpKTsKLSAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmly
ZUludGVydmFsKGRvdWJsZSk7Ci0gICAgdm9pZCBzdG9wU2hhcmVkVGltZXIoKTsKLSAgICB2b2lk
IGludmFsaWRhdGVTaGFyZWRUaW1lcigpOwotCiAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgU2hh
cmVkVGltZXIgZm9yIHRoZSBtYWluIHRocmVhZC4KICAgICBjbGFzcyBNYWluVGhyZWFkU2hhcmVk
VGltZXIgZmluYWwgOiBwdWJsaWMgU2hhcmVkVGltZXIgewogICAgIHB1YmxpYzoKICAgICAgICAg
dm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmdW5jdGlvbikoKSkgb3ZlcnJpZGUKICAgICAg
ICAgewotICAgICAgICAgICAgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKGZ1bmN0aW9uKTsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91Ymxl
IGludGVydmFsKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBzZXRTaGFyZWRUaW1l
ckZpcmVJbnRlcnZhbChpbnRlcnZhbCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZv
aWQgc3RvcCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0b3BTaGFyZWRUaW1l
cigpOworICAgICAgICAgICAgQVNTRVJUKCFzX2ZpcmVkRnVuY3Rpb24gfHwgc19maXJlZEZ1bmN0
aW9uID09IGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHNfZmlyZWRGdW5jdGlvbiA9IGZ1bmN0aW9u
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGUKKyAgICAg
ICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBz
dG9wKCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOworCisg
ICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBp
bnZhbGlkYXRlU2hhcmVkVGltZXIoKTsKKyAgICAgICAgICAgIEFTU0VSVChzX2ZpcmVkRnVuY3Rp
b24pOworICAgICAgICAgICAgc19maXJlZEZ1bmN0aW9uKCk7CiAgICAgICAgIH0KKyAgICBwcml2
YXRlOgorICAgICAgICBzdGF0aWMgdm9pZCAoKnNfZmlyZWRGdW5jdGlvbikoKTsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9TaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZFRpbWVyQ0YuY3BwCmluZGV4IDZmZDcwN2IuLjNlODE5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiBzaGFyZWRUaW1lcjsK
LXN0YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOwordm9pZCAoKk1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6c19maXJlZEZ1bmN0aW9uKSgpID0gbnVsbHB0cjsKIHN0YXRpYyB2
b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKIHN0YXRpYyB2b2lkIHJl
c3RhcnRTaGFyZWRUaW1lcigpOwogCkBAIC02OSwxNyArNjksMTAgQEAgc3RhdGljIHZvaWQgc2V0
dXBQb3dlck9ic2VydmVyKCkKICNlbmRpZgogfQogCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRG
dW5jdGlvbih2b2lkICgqZikoKSkKLXsKLSAgICBBU1NFUlQoIXNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbiB8fCBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gPT0gZik7Ci0KLSAgICBzaGFyZWRUaW1l
ckZpcmVkRnVuY3Rpb24gPSBmOwotfQotCi1zdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9v
cFRpbWVyUmVmLCB2b2lkKikKK3N0YXRpYyB2b2lkIHRpbWVyRmlyZWRDYWxsYmFjayhDRlJ1bkxv
b3BUaW1lclJlZiwgdm9pZCopCiB7CiAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7Ci0gICAgc2hh
cmVkVGltZXJGaXJlZEZ1bmN0aW9uKCk7CisgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjp0aW1l
ckZpcmVkKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlc3RhcnRTaGFyZWRUaW1lcigpCkBAIC04Nywx
MSArODAsMTEgQEAgc3RhdGljIHZvaWQgcmVzdGFydFNoYXJlZFRpbWVyKCkKICAgICBpZiAoIXNo
YXJlZFRpbWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9wU2hhcmVkVGltZXIoKTsKKyAg
ICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwga0NGVGltZUludGVy
dmFsRGlzdGFudEZ1dHVyZSk7CiAgICAgdGltZXJGaXJlZCgwLCAwKTsKIH0KIAotdm9pZCBpbnZh
bGlkYXRlU2hhcmVkVGltZXIoKQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRh
dGUoKQogewogICAgIGlmICghc2hhcmVkVGltZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMSwx
MyArOTQsMTMgQEAgdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGltZXIoKQogICAgIHNoYXJlZFRpbWVy
ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUg
aW50ZXJ2YWwpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKGRv
dWJsZSBpbnRlcnZhbCkKIHsKLSAgICBBU1NFUlQoc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKTsK
KyAgICBBU1NFUlQoTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzX2ZpcmVkRnVuY3Rpb24pOwogCiAg
ICAgQ0ZBYnNvbHV0ZVRpbWUgZmlyZURhdGUgPSBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSAr
IGludGVydmFsOwogICAgIGlmICghc2hhcmVkVGltZXIpIHsKLSAgICAgICAgc2hhcmVkVGltZXIg
PSBDRlJ1bkxvb3BUaW1lckNyZWF0ZShudWxscHRyLCBmaXJlRGF0ZSwga0NGVGltZUludGVydmFs
RGlzdGFudEZ1dHVyZSwgMCwgMCwgdGltZXJGaXJlZCwgbnVsbHB0cik7CisgICAgICAgIHNoYXJl
ZFRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUobnVsbHB0ciwgZmlyZURhdGUsIGtDRlRpbWVJ
bnRlcnZhbERpc3RhbnRGdXR1cmUsIDAsIDAsIHRpbWVyRmlyZWRDYWxsYmFjaywgbnVsbHB0cik7
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihXZWJUaHJlYWRS
dW5Mb29wKCksIHNoYXJlZFRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogI2Vsc2UKQEAg
LTEyMiw3ICsxMTUsNyBAQCB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJsZSBp
bnRlcnZhbCkKICAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwg
ZmlyZURhdGUpOwogfQogCi12b2lkIHN0b3BTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6c3RvcCgpCiB7CiAgICAgaWYgKCFzaGFyZWRUaW1lcikKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVy
RWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVmbC5jcHAK
aW5kZXggOTBiYTAzNi4uNTk5NTBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvU2hhcmVkVGltZXJFZmwuY3BwCkBAIC0zNywyNCArMzcsMTYgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIEVjb3JlX1RpbWVyICpfc2hhcmVkVGltZXIgPSAwOwotCi1zdGF0aWMg
dm9pZCAoKl90aW1lckZ1bmN0aW9uKSgpOwotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbih2b2lkICgqZnVuYykoKSkKLXsKLSAgICBfdGltZXJGdW5jdGlvbiA9IGZ1bmM7Ci19Cit2
b2lkICgqTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzX2ZpcmVkRnVuY3Rpb24pKCkgPSBudWxscHRy
OwogCiBzdGF0aWMgRWluYV9Cb29sIHRpbWVyRXZlbnQodm9pZCopCiB7CiAgICAgX3NoYXJlZFRp
bWVyID0gMDsKLSAgICBpZiAoX3RpbWVyRnVuY3Rpb24pCi0gICAgICAgIF90aW1lckZ1bmN0aW9u
KCk7Ci0KKyAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnRpbWVyRmlyZWQoKTsKICAgICByZXR1
cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOwogfQogCi12b2lkIHN0b3BTaGFyZWRUaW1lcigpCit2
b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCgpCiB7CiAgICAgaWYgKF9zaGFyZWRUaW1l
cikgewogICAgICAgICBlY29yZV90aW1lcl9kZWwoX3NoYXJlZFRpbWVyKTsKQEAgLTYyLDE5ICs1
NCwxMyBAQCB2b2lkIHN0b3BTaGFyZWRUaW1lcigpCiAgICAgfQogfQogCi12b2lkIGFkZE5ld1Rp
bWVyKGRvdWJsZSBpbnRlcnZhbCkKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJl
SW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogewotICAgIHN0b3BTaGFyZWRUaW1lcigpOwotCisg
ICAgc3RvcCgpOwogICAgIF9zaGFyZWRUaW1lciA9IGVjb3JlX3RpbWVyX2xvb3BfYWRkKGludGVy
dmFsLCB0aW1lckV2ZW50LCAwKTsKIH0KIAotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZh
bChkb3VibGUgaW50ZXJ2YWwpCi17Ci0gICAgYWRkTmV3VGltZXIoaW50ZXJ2YWwpOwotfQotCi12
b2lkIGludmFsaWRhdGVTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6
aW52YWxpZGF0ZSgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TaGFyZWRUaW1lckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hh
cmVkVGltZXJHdGsuY3BwCmluZGV4IGNmZjdkNzMuLmU0ZGZhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcApAQCAtMzMsMzEgKzMzLDI0IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBHTWFpbkxvb3BTb3VyY2UgZ1NoYXJlZFRp
bWVyOwotc3RhdGljIHZvaWQgKCpzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pKCk7Cit2b2lkICgq
TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzX2ZpcmVkRnVuY3Rpb24pKCkgPSBudWxscHRyOwogCi12
b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqZikoKSkKK3ZvaWQgTWFpblRo
cmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogewotICAg
IHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiA9IGY7Ci0gICAgaWYgKCFzaGFyZWRUaW1lckZpcmVk
RnVuY3Rpb24pCi0gICAgICAgIGdTaGFyZWRUaW1lci5jYW5jZWwoKTsKLX0KLQotdm9pZCBzZXRT
aGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCi17Ci0gICAgQVNTRVJUKHNo
YXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7CisgICAgQVNTRVJUKE1haW5UaHJlYWRTaGFyZWRUaW1l
cjo6c19maXJlZEZ1bmN0aW9uKTsKIAogICAgIC8vIFRoaXMgaXMgR0RLX1BSSU9SSVRZX1JFRFJB
VywgYnV0IHdlIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9uIEdESyBoZXJlIGp1c3QgdG8gdXNlIGEg
Y29uc3RhbnQuCiAgICAgc3RhdGljIGNvbnN0IGludCBwcmlvcml0eSA9IEdfUFJJT1JJVFlfSElH
SF9JRExFICsgMjA7Ci0gICAgZ1NoYXJlZFRpbWVyLnNjaGVkdWxlQWZ0ZXJEZWxheSgiW1dlYktp
dF0gc2hhcmVkVGltZXJUaW1lb3V0Q2FsbGJhY2siLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oc2hh
cmVkVGltZXJGaXJlZEZ1bmN0aW9uKSwKKyAgICBnU2hhcmVkVGltZXIuc2NoZWR1bGVBZnRlckRl
bGF5KCJbV2ViS2l0XSBzaGFyZWRUaW1lclRpbWVvdXRDYWxsYmFjayIsIFt0aGlzXSB7IE1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6dGltZXJGaXJlZCgpOyB9LAogICAgICAgICBzdGQ6OmNocm9ubzo6
ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVy
YXRpb248ZG91YmxlPihpbnRlcnZhbCkpLCBwcmlvcml0eSk7CiB9CiAKLXZvaWQgc3RvcFNoYXJl
ZFRpbWVyKCkKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKCkKIHsKICAgICBnU2hh
cmVkVGltZXIuY2FuY2VsKCk7CiB9CiAKLXZvaWQgaW52YWxpZGF0ZVNoYXJlZFRpbWVyKCkKK3Zv
aWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZFRpbWVyV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHAKaW5kZXggM2QwMmIxOS4u
YzFmODg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZFRp
bWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJX
aW4uY3BwCkBAIC01Myw3ICs1Myw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBV
SU5UIHRpbWVySUQ7Ci1zdGF0aWMgdm9pZCAoKnNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbikoKTsK
K3ZvaWQgKCpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNfZmlyZWRGdW5jdGlvbikoKSA9IG51bGxw
dHI7CiAKIHN0YXRpYyBIQU5ETEUgdGltZXI7CiBzdGF0aWMgSFdORCB0aW1lcldpbmRvd0hhbmRs
ZSA9IDA7CkBAIC03OSwxNyArNzksMTcgQEAgTFJFU1VMVCBDQUxMQkFDSyBUaW1lcldpbmRvd1du
ZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVIKICAgICBp
ZiAobWVzc2FnZSA9PSBXTV9USU1FUikgewogICAgICAgICBpZiAod1BhcmFtID09IHNoYXJlZFRp
bWVySUQpIHsKICAgICAgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgc2hhcmVk
VGltZXJJRCk7Ci0gICAgICAgICAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24oKTsKKyAgICAg
ICAgICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6dGltZXJGaXJlZCgpOwogICAgICAgICB9CiAg
ICAgICAgIGVsc2UgaWYgKHdQYXJhbSA9PSBlbmRIaWdoUmVzVGltZXJJRCkgewogICAgICAgICAg
ICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCBlbmRIaWdoUmVzVGltZXJJRCk7CiAgICAg
ICAgICAgICBoaWdoUmVzVGltZXJBY3RpdmUgPSBmYWxzZTsKLSAgICAgICAgICAgIHRpbWVFbmRQ
ZXJpb2QodGltZXJSZXNvbHV0aW9uKTsKKyAgICAgICAgICAgIE1haW5UaHJlYWRTaGFyZWRUaW1l
cjo6dGltZXJGaXJlZCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtZXNzYWdlID09IHRp
bWVyRmlyZWRNZXNzYWdlKSB7CiAgICAgICAgIEludGVybG9ja2VkRXhjaGFuZ2UoJnBlbmRpbmdU
aW1lcnMsIDApOwogICAgICAgICBwcm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlID0gdHJ1ZTsK
LSAgICAgICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKCk7CisgICAgICAgIE1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6dGltZXJGaXJlZCgpOwogICAgICAgICBwcm9jZXNzaW5nQ3VzdG9tVGltZXJN
ZXNzYWdlID0gZmFsc2U7CiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBEZWZXaW5kb3dQcm9j
KGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKQEAgLTExNywyMCArMTE3LDE1IEBAIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldpbmRvdygpCiAgICAgdGltZXJGaXJl
ZE1lc3NhZ2UgPSBSZWdpc3RlcldpbmRvd01lc3NhZ2UoTCJjb20uYXBwbGUuV2ViS2l0LlRpbWVy
RmlyZWQiKTsKIH0KIAotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYp
KCkpCi17Ci0gICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uID0gZjsKLX0KLQogc3RhdGljIHZv
aWQgTlRBUEkgcXVldWVUaW1lclByb2MoUFZPSUQsIEJPT0xFQU4pCiB7CiAgICAgaWYgKEludGVy
bG9ja2VkSW5jcmVtZW50KCZwZW5kaW5nVGltZXJzKSA9PSAxKQogICAgICAgICBQb3N0TWVzc2Fn
ZSh0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJGaXJlZE1lc3NhZ2UsIDAsIDApOwogfQogCi12b2lk
IHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKK3ZvaWQgTWFpblRo
cmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogewotICAg
IEFTU0VSVChzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOworICAgIEFTU0VSVChNYWluVGhyZWFk
U2hhcmVkVGltZXI6OnNfZmlyZWRGdW5jdGlvbik7CiAKICAgICB1bnNpZ25lZCBpbnRlcnZhbElu
TVM7CiAgICAgaW50ZXJ2YWwgKj0gMTAwMDsKQEAgLTE4NSw3ICsxODAsNyBAQCB2b2lkIHNldFNo
YXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKICAgICB9CiB9CiAKLXZvaWQg
c3RvcFNoYXJlZFRpbWVyKCkKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKCkKIHsK
ICAgICBpZiAodGltZXJRdWV1ZSAmJiB0aW1lcikgewogICAgICAgICBEZWxldGVUaW1lclF1ZXVl
VGltZXIodGltZXJRdWV1ZSwgdGltZXIsIDApOwpAQCAtMTk4LDcgKzE5Myw3IEBAIHZvaWQgc3Rv
cFNoYXJlZFRpbWVyKCkKICAgICB9CiB9CiAKLXZvaWQgaW52YWxpZGF0ZVNoYXJlZFRpbWVyKCkK
K3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKIHsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263923</attachid>
            <date>2015-10-23 06:53:11 -0700</date>
            <delta_ts>2015-10-23 06:58:02 -0700</delta_ts>
            <desc>Try to fix Mac build</desc>
            <filename>wcore-shared-timer.diff</filename>
            <type>text/plain</type>
            <size>11025</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMDRlMjQxLi5lYmQ2YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTUtMTAtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIE1ha2UgZXZlcnkgcG9ydCBpbXBsZW1lbnQgTWFpblRocmVhZFNoYXJlZFRp
bWVyIGluc3RlYWQgb2YgdXNpbmcgZ2xvYmFsIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNDk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgS2VlcCBjb21tb24gY29kZSBpbiBNYWluVGhy
ZWFkU2hhcmVkVGltZXIgYW5kIGltcGxlbWVudCB0aGUgcmVzdAorICAgICAgICBvZiB0aGUgbWVt
YmVycyBpbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMuIEl0IHNpbXBsaWZpZXMgYm90aAor
ICAgICAgICB0aGUgaGVhZGVyIGFuZCB0aGUgcG9ydCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJl
ZFRpbWVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGltZXJGaXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZXN0YXJ0U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVy
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1NoYXJlZFRpbWVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRU
aW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFy
ZWRUaW1lcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6
OmludmFsaWRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lcldpbmRvd1duZFByb2MpOgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpxdWV1
ZVRpbWVyUHJvYyk6CisKIDIwMTUtMTAtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IG1hcmtGb250RGF0YSBp
biBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrSGVpZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkVGltZXIuaAppbmRleCAyOTljNDk5Li5mYzY2MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZFRpbWVyLmgKQEAgLTQ4LDM2ICs0OCwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgeyB9CiAgICAgfTsKIAotCi0gICAgLy8g
SW1wbGVtZW50ZWQgYnkgcG9ydCAoc2luY2UgaXQgcHJvdmlkZXMgdGhlIHJ1biBsb29wIGZvciB0
aGUgbWFpbiB0aHJlYWQpLgotICAgIC8vIEZJWE1FOiBtYWtlIHBvcnRzIGltcGxlbWVudCBNYWlu
VGhyZWFkU2hhcmVkVGltZXIgZGlyZWN0bHkgaW5zdGVhZC4KLSAgICB2b2lkIHNldFNoYXJlZFRp
bWVyRmlyZWRGdW5jdGlvbih2b2lkICgqKSgpKTsKLSAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmly
ZUludGVydmFsKGRvdWJsZSk7Ci0gICAgdm9pZCBzdG9wU2hhcmVkVGltZXIoKTsKLSAgICB2b2lk
IGludmFsaWRhdGVTaGFyZWRUaW1lcigpOwotCiAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgU2hh
cmVkVGltZXIgZm9yIHRoZSBtYWluIHRocmVhZC4KICAgICBjbGFzcyBNYWluVGhyZWFkU2hhcmVk
VGltZXIgZmluYWwgOiBwdWJsaWMgU2hhcmVkVGltZXIgewogICAgIHB1YmxpYzoKICAgICAgICAg
dm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmdW5jdGlvbikoKSkgb3ZlcnJpZGUKICAgICAg
ICAgewotICAgICAgICAgICAgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKGZ1bmN0aW9uKTsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91Ymxl
IGludGVydmFsKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBzZXRTaGFyZWRUaW1l
ckZpcmVJbnRlcnZhbChpbnRlcnZhbCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZv
aWQgc3RvcCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0b3BTaGFyZWRUaW1l
cigpOworICAgICAgICAgICAgQVNTRVJUKCFzX2ZpcmVkRnVuY3Rpb24gfHwgc19maXJlZEZ1bmN0
aW9uID09IGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHNfZmlyZWRGdW5jdGlvbiA9IGZ1bmN0aW9u
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGUKKyAgICAg
ICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBz
dG9wKCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOworCisg
ICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBp
bnZhbGlkYXRlU2hhcmVkVGltZXIoKTsKKyAgICAgICAgICAgIEFTU0VSVChzX2ZpcmVkRnVuY3Rp
b24pOworICAgICAgICAgICAgc19maXJlZEZ1bmN0aW9uKCk7CiAgICAgICAgIH0KKyAgICBwcml2
YXRlOgorICAgICAgICBzdGF0aWMgdm9pZCAoKnNfZmlyZWRGdW5jdGlvbikoKTsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9TaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZFRpbWVyQ0YuY3BwCmluZGV4IDZmZDcwN2IuLjdiMjRiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiBzaGFyZWRUaW1lcjsK
LXN0YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOwordm9pZCAoKk1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6c19maXJlZEZ1bmN0aW9uKSgpID0gbnVsbHB0cjsKIHN0YXRpYyB2
b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKIHN0YXRpYyB2b2lkIHJl
c3RhcnRTaGFyZWRUaW1lcigpOwogCkBAIC02OSwxNyArNjksMTAgQEAgc3RhdGljIHZvaWQgc2V0
dXBQb3dlck9ic2VydmVyKCkKICNlbmRpZgogfQogCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRG
dW5jdGlvbih2b2lkICgqZikoKSkKLXsKLSAgICBBU1NFUlQoIXNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbiB8fCBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gPT0gZik7Ci0KLSAgICBzaGFyZWRUaW1l
ckZpcmVkRnVuY3Rpb24gPSBmOwotfQotCi1zdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9v
cFRpbWVyUmVmLCB2b2lkKikKK3N0YXRpYyB2b2lkIHRpbWVyRmlyZWRDYWxsYmFjayhDRlJ1bkxv
b3BUaW1lclJlZiwgdm9pZCopCiB7CiAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7Ci0gICAgc2hh
cmVkVGltZXJGaXJlZEZ1bmN0aW9uKCk7CisgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjp0aW1l
ckZpcmVkKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlc3RhcnRTaGFyZWRUaW1lcigpCkBAIC04Nywx
MSArODAsMTEgQEAgc3RhdGljIHZvaWQgcmVzdGFydFNoYXJlZFRpbWVyKCkKICAgICBpZiAoIXNo
YXJlZFRpbWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9wU2hhcmVkVGltZXIoKTsKLSAg
ICB0aW1lckZpcmVkKDAsIDApOworICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNo
YXJlZFRpbWVyLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlKTsKKyAgICB0aW1lckZpcmVk
Q2FsbGJhY2soMCwgMCk7CiB9CiAKLXZvaWQgaW52YWxpZGF0ZVNoYXJlZFRpbWVyKCkKK3ZvaWQg
TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKIHsKICAgICBpZiAoIXNoYXJlZFRp
bWVyKQogICAgICAgICByZXR1cm47CkBAIC0xMDEsMTMgKzk0LDEzIEBAIHZvaWQgaW52YWxpZGF0
ZVNoYXJlZFRpbWVyKCkKICAgICBzaGFyZWRUaW1lciA9IG51bGxwdHI7CiB9CiAKLXZvaWQgc2V0
U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQordm9pZCBNYWluVGhyZWFk
U2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCiB7Ci0gICAgQVNT
RVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7CisgICAgQVNTRVJUKE1haW5UaHJlYWRTaGFy
ZWRUaW1lcjo6c19maXJlZEZ1bmN0aW9uKTsKIAogICAgIENGQWJzb2x1dGVUaW1lIGZpcmVEYXRl
ID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBpbnRlcnZhbDsKICAgICBpZiAoIXNoYXJl
ZFRpbWVyKSB7Ci0gICAgICAgIHNoYXJlZFRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUobnVs
bHB0ciwgZmlyZURhdGUsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUsIDAsIDAsIHRpbWVy
RmlyZWQsIG51bGxwdHIpOworICAgICAgICBzaGFyZWRUaW1lciA9IENGUnVuTG9vcFRpbWVyQ3Jl
YXRlKG51bGxwdHIsIGZpcmVEYXRlLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlLCAwLCAw
LCB0aW1lckZpcmVkQ2FsbGJhY2ssIG51bGxwdHIpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICAg
ICAgQ0ZSdW5Mb29wQWRkVGltZXIoV2ViVGhyZWFkUnVuTG9vcCgpLCBzaGFyZWRUaW1lciwga0NG
UnVuTG9vcENvbW1vbk1vZGVzKTsKICNlbHNlCkBAIC0xMjIsNyArMTE1LDcgQEAgdm9pZCBzZXRT
aGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCiAgICAgQ0ZSdW5Mb29wVGlt
ZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIsIGZpcmVEYXRlKTsKIH0KIAotdm9pZCBzdG9w
U2hhcmVkVGltZXIoKQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3AoKQogewogICAg
IGlmICghc2hhcmVkVGltZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwCmluZGV4IDkwYmEwMzYuLjU5OTUwYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVmbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcApAQCAt
MzcsMjQgKzM3LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBFY29yZV9UaW1l
ciAqX3NoYXJlZFRpbWVyID0gMDsKLQotc3RhdGljIHZvaWQgKCpfdGltZXJGdW5jdGlvbikoKTsK
LQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmZ1bmMpKCkpCi17Ci0g
ICAgX3RpbWVyRnVuY3Rpb24gPSBmdW5jOwotfQordm9pZCAoKk1haW5UaHJlYWRTaGFyZWRUaW1l
cjo6c19maXJlZEZ1bmN0aW9uKSgpID0gbnVsbHB0cjsKIAogc3RhdGljIEVpbmFfQm9vbCB0aW1l
ckV2ZW50KHZvaWQqKQogewogICAgIF9zaGFyZWRUaW1lciA9IDA7Ci0gICAgaWYgKF90aW1lckZ1
bmN0aW9uKQotICAgICAgICBfdGltZXJGdW5jdGlvbigpOwotCisgICAgTWFpblRocmVhZFNoYXJl
ZFRpbWVyOjp0aW1lckZpcmVkKCk7CiAgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsK
IH0KIAotdm9pZCBzdG9wU2hhcmVkVGltZXIoKQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6
OnN0b3AoKQogewogICAgIGlmIChfc2hhcmVkVGltZXIpIHsKICAgICAgICAgZWNvcmVfdGltZXJf
ZGVsKF9zaGFyZWRUaW1lcik7CkBAIC02MiwxOSArNTQsMTMgQEAgdm9pZCBzdG9wU2hhcmVkVGlt
ZXIoKQogICAgIH0KIH0KIAotdm9pZCBhZGROZXdUaW1lcihkb3VibGUgaW50ZXJ2YWwpCit2b2lk
IE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkK
IHsKLSAgICBzdG9wU2hhcmVkVGltZXIoKTsKLQorICAgIHN0b3AoKTsKICAgICBfc2hhcmVkVGlt
ZXIgPSBlY29yZV90aW1lcl9sb29wX2FkZChpbnRlcnZhbCwgdGltZXJFdmVudCwgMCk7CiB9CiAK
LXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQotewotICAg
IGFkZE5ld1RpbWVyKGludGVydmFsKTsKLX0KLQotdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGltZXIo
KQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUoKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcAppbmRleCBjZmY3
ZDczLi5lNGRmYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hh
cmVkVGltZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRU
aW1lckd0ay5jcHAKQEAgLTMzLDMxICszMywyNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGF0aWMgR01haW5Mb29wU291cmNlIGdTaGFyZWRUaW1lcjsKLXN0YXRpYyB2b2lkICgqc2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uKSgpOwordm9pZCAoKk1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c19m
aXJlZEZ1bmN0aW9uKSgpID0gbnVsbHB0cjsKIAotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVu
Y3Rpb24odm9pZCAoKmYpKCkpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUlu
dGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKIHsKLSAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24g
PSBmOwotICAgIGlmICghc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKQotICAgICAgICBnU2hhcmVk
VGltZXIuY2FuY2VsKCk7Ci19Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91
YmxlIGludGVydmFsKQotewotICAgIEFTU0VSVChzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOwor
ICAgIEFTU0VSVChNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNfZmlyZWRGdW5jdGlvbik7CiAKICAg
ICAvLyBUaGlzIGlzIEdES19QUklPUklUWV9SRURSQVcsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIGRl
cGVuZCBvbiBHREsgaGVyZSBqdXN0IHRvIHVzZSBhIGNvbnN0YW50LgogICAgIHN0YXRpYyBjb25z
dCBpbnQgcHJpb3JpdHkgPSBHX1BSSU9SSVRZX0hJR0hfSURMRSArIDIwOwotICAgIGdTaGFyZWRU
aW1lci5zY2hlZHVsZUFmdGVyRGVsYXkoIltXZWJLaXRdIHNoYXJlZFRpbWVyVGltZW91dENhbGxi
YWNrIiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiksCisg
ICAgZ1NoYXJlZFRpbWVyLnNjaGVkdWxlQWZ0ZXJEZWxheSgiW1dlYktpdF0gc2hhcmVkVGltZXJU
aW1lb3V0Q2FsbGJhY2siLCBbdGhpc10geyBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnRpbWVyRmly
ZWQoKTsgfSwKICAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86
Om1pY3Jvc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oaW50ZXJ2YWwpKSwg
cHJpb3JpdHkpOwogfQogCi12b2lkIHN0b3BTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6c3RvcCgpCiB7CiAgICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOwogfQogCi12
b2lkIGludmFsaWRhdGVTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6
aW52YWxpZGF0ZSgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9TaGFyZWRUaW1lcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hh
cmVkVGltZXJXaW4uY3BwCmluZGV4IDNkMDJiMTkuLmMxZjg4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZFRpbWVyV2luLmNwcApAQCAtNTMsNyArNTMsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgVUlOVCB0aW1lcklEOwotc3RhdGljIHZvaWQg
KCpzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pKCk7Cit2b2lkICgqTWFpblRocmVhZFNoYXJlZFRp
bWVyOjpzX2ZpcmVkRnVuY3Rpb24pKCkgPSBudWxscHRyOwogCiBzdGF0aWMgSEFORExFIHRpbWVy
Owogc3RhdGljIEhXTkQgdGltZXJXaW5kb3dIYW5kbGUgPSAwOwpAQCAtNzksMTcgKzc5LDE3IEBA
IExSRVNVTFQgQ0FMTEJBQ0sgVGltZXJXaW5kb3dXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNz
YWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSCiAgICAgaWYgKG1lc3NhZ2UgPT0gV01fVElNRVIpIHsK
ICAgICAgICAgaWYgKHdQYXJhbSA9PSBzaGFyZWRUaW1lcklEKSB7CiAgICAgICAgICAgICBLaWxs
VGltZXIodGltZXJXaW5kb3dIYW5kbGUsIHNoYXJlZFRpbWVySUQpOwotICAgICAgICAgICAgc2hh
cmVkVGltZXJGaXJlZEZ1bmN0aW9uKCk7CisgICAgICAgICAgICBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnRpbWVyRmlyZWQoKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICh3UGFyYW0gPT0g
ZW5kSGlnaFJlc1RpbWVySUQpIHsKICAgICAgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hh
bmRsZSwgZW5kSGlnaFJlc1RpbWVySUQpOwogICAgICAgICAgICAgaGlnaFJlc1RpbWVyQWN0aXZl
ID0gZmFsc2U7Ci0gICAgICAgICAgICB0aW1lRW5kUGVyaW9kKHRpbWVyUmVzb2x1dGlvbik7Cisg
ICAgICAgICAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnRpbWVyRmlyZWQoKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAobWVzc2FnZSA9PSB0aW1lckZpcmVkTWVzc2FnZSkgewogICAgICAg
ICBJbnRlcmxvY2tlZEV4Y2hhbmdlKCZwZW5kaW5nVGltZXJzLCAwKTsKICAgICAgICAgcHJvY2Vz
c2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IHRydWU7Ci0gICAgICAgIHNoYXJlZFRpbWVyRmlyZWRG
dW5jdGlvbigpOworICAgICAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnRpbWVyRmlyZWQoKTsK
ICAgICAgICAgcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IGZhbHNlOwogICAgIH0gZWxz
ZQogICAgICAgICByZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQ
YXJhbSk7CkBAIC0xMTcsMjAgKzExNywxNSBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplT2ZmU2Ny
ZWVuVGltZXJXaW5kb3coKQogICAgIHRpbWVyRmlyZWRNZXNzYWdlID0gUmVnaXN0ZXJXaW5kb3dN
ZXNzYWdlKEwiY29tLmFwcGxlLldlYktpdC5UaW1lckZpcmVkIik7CiB9CiAKLXZvaWQgc2V0U2hh
cmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmKSgpKQotewotICAgIHNoYXJlZFRpbWVyRmly
ZWRGdW5jdGlvbiA9IGY7Ci19Ci0KIHN0YXRpYyB2b2lkIE5UQVBJIHF1ZXVlVGltZXJQcm9jKFBW
T0lELCBCT09MRUFOKQogewogICAgIGlmIChJbnRlcmxvY2tlZEluY3JlbWVudCgmcGVuZGluZ1Rp
bWVycykgPT0gMSkKICAgICAgICAgUG9zdE1lc3NhZ2UodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVy
RmlyZWRNZXNzYWdlLCAwLCAwKTsKIH0KIAotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZh
bChkb3VibGUgaW50ZXJ2YWwpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUlu
dGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKIHsKLSAgICBBU1NFUlQoc2hhcmVkVGltZXJGaXJlZEZ1
bmN0aW9uKTsKKyAgICBBU1NFUlQoTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzX2ZpcmVkRnVuY3Rp
b24pOwogCiAgICAgdW5zaWduZWQgaW50ZXJ2YWxJbk1TOwogICAgIGludGVydmFsICo9IDEwMDA7
CkBAIC0xODUsNyArMTgwLDcgQEAgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3Vi
bGUgaW50ZXJ2YWwpCiAgICAgfQogfQogCi12b2lkIHN0b3BTaGFyZWRUaW1lcigpCit2b2lkIE1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCgpCiB7CiAgICAgaWYgKHRpbWVyUXVldWUgJiYgdGlt
ZXIpIHsKICAgICAgICAgRGVsZXRlVGltZXJRdWV1ZVRpbWVyKHRpbWVyUXVldWUsIHRpbWVyLCAw
KTsKQEAgLTE5OCw3ICsxOTMsNyBAQCB2b2lkIHN0b3BTaGFyZWRUaW1lcigpCiAgICAgfQogfQog
Ci12b2lkIGludmFsaWRhdGVTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1l
cjo6aW52YWxpZGF0ZSgpCiB7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263924</attachid>
            <date>2015-10-23 06:58:02 -0700</date>
            <delta_ts>2015-10-25 03:48:15 -0700</delta_ts>
            <desc>Try to fix Mac build</desc>
            <filename>wcore-shared-timer.diff</filename>
            <type>text/plain</type>
            <size>11188</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMDRlMjQxLi5lYmQ2YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTUtMTAtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIE1ha2UgZXZlcnkgcG9ydCBpbXBsZW1lbnQgTWFpblRocmVhZFNoYXJlZFRp
bWVyIGluc3RlYWQgb2YgdXNpbmcgZ2xvYmFsIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNDk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgS2VlcCBjb21tb24gY29kZSBpbiBNYWluVGhy
ZWFkU2hhcmVkVGltZXIgYW5kIGltcGxlbWVudCB0aGUgcmVzdAorICAgICAgICBvZiB0aGUgbWVt
YmVycyBpbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMuIEl0IHNpbXBsaWZpZXMgYm90aAor
ICAgICAgICB0aGUgaGVhZGVyIGFuZCB0aGUgcG9ydCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJl
ZFRpbWVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGltZXJGaXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZXN0YXJ0U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVy
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1NoYXJlZFRpbWVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRU
aW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFy
ZWRUaW1lcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6
OmludmFsaWRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaW1lcldpbmRvd1duZFByb2MpOgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpxdWV1
ZVRpbWVyUHJvYyk6CisKIDIwMTUtMTAtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IG1hcmtGb250RGF0YSBp
biBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrSGVpZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkVGltZXIuaAppbmRleCAyOTljNDk5Li5mYzY2MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZFRpbWVyLmgKQEAgLTQ4LDM2ICs0OCwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgeyB9CiAgICAgfTsKIAotCi0gICAgLy8g
SW1wbGVtZW50ZWQgYnkgcG9ydCAoc2luY2UgaXQgcHJvdmlkZXMgdGhlIHJ1biBsb29wIGZvciB0
aGUgbWFpbiB0aHJlYWQpLgotICAgIC8vIEZJWE1FOiBtYWtlIHBvcnRzIGltcGxlbWVudCBNYWlu
VGhyZWFkU2hhcmVkVGltZXIgZGlyZWN0bHkgaW5zdGVhZC4KLSAgICB2b2lkIHNldFNoYXJlZFRp
bWVyRmlyZWRGdW5jdGlvbih2b2lkICgqKSgpKTsKLSAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmly
ZUludGVydmFsKGRvdWJsZSk7Ci0gICAgdm9pZCBzdG9wU2hhcmVkVGltZXIoKTsKLSAgICB2b2lk
IGludmFsaWRhdGVTaGFyZWRUaW1lcigpOwotCiAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgU2hh
cmVkVGltZXIgZm9yIHRoZSBtYWluIHRocmVhZC4KICAgICBjbGFzcyBNYWluVGhyZWFkU2hhcmVk
VGltZXIgZmluYWwgOiBwdWJsaWMgU2hhcmVkVGltZXIgewogICAgIHB1YmxpYzoKICAgICAgICAg
dm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmdW5jdGlvbikoKSkgb3ZlcnJpZGUKICAgICAg
ICAgewotICAgICAgICAgICAgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKGZ1bmN0aW9uKTsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91Ymxl
IGludGVydmFsKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBzZXRTaGFyZWRUaW1l
ckZpcmVJbnRlcnZhbChpbnRlcnZhbCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZv
aWQgc3RvcCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0b3BTaGFyZWRUaW1l
cigpOworICAgICAgICAgICAgQVNTRVJUKCFzX2ZpcmVkRnVuY3Rpb24gfHwgc19maXJlZEZ1bmN0
aW9uID09IGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHNfZmlyZWRGdW5jdGlvbiA9IGZ1bmN0aW9u
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGUKKyAgICAg
ICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBz
dG9wKCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOworCisg
ICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBp
bnZhbGlkYXRlU2hhcmVkVGltZXIoKTsKKyAgICAgICAgICAgIEFTU0VSVChzX2ZpcmVkRnVuY3Rp
b24pOworICAgICAgICAgICAgc19maXJlZEZ1bmN0aW9uKCk7CiAgICAgICAgIH0KKyAgICBwcml2
YXRlOgorICAgICAgICBzdGF0aWMgdm9pZCAoKnNfZmlyZWRGdW5jdGlvbikoKTsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9TaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZFRpbWVyQ0YuY3BwCmluZGV4IDZmZDcwN2IuLjBjMTNiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCkBAIC0zOCw4ICszOCw4IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiBzaGFyZWRUaW1lcjsK
LXN0YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOwotc3RhdGljIHZvaWQg
dGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwordm9pZCAoKk1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6c19maXJlZEZ1bmN0aW9uKSgpID0gbnVsbHB0cjsKK3N0YXRpYyB2b2lkIHRp
bWVyRmlyZWRDYWxsYmFjayhDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwogc3RhdGljIHZvaWQg
cmVzdGFydFNoYXJlZFRpbWVyKCk7CiAKIHN0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCBrQ0ZU
aW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlID0gc3RkOjpudW1lcmljX2xpbWl0czxDRlRpbWVJbnRl
cnZhbD46Om1heCgpOwpAQCAtNjksMTcgKzY5LDEwIEBAIHN0YXRpYyB2b2lkIHNldHVwUG93ZXJP
YnNlcnZlcigpCiAjZW5kaWYKIH0KIAotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24o
dm9pZCAoKmYpKCkpCi17Ci0gICAgQVNTRVJUKCFzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gfHwg
c2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uID09IGYpOwotCi0gICAgc2hhcmVkVGltZXJGaXJlZEZ1
bmN0aW9uID0gZjsKLX0KLQotc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJl
Ziwgdm9pZCopCitzdGF0aWMgdm9pZCB0aW1lckZpcmVkQ2FsbGJhY2soQ0ZSdW5Mb29wVGltZXJS
ZWYsIHZvaWQqKQogewogICAgIEF1dG9kcmFpbmVkUG9vbCBwb29sOwotICAgIHNoYXJlZFRpbWVy
RmlyZWRGdW5jdGlvbigpOworICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6dGltZXJGaXJlZCgp
OwogfQogCiBzdGF0aWMgdm9pZCByZXN0YXJ0U2hhcmVkVGltZXIoKQpAQCAtODcsMTEgKzgwLDEx
IEBAIHN0YXRpYyB2b2lkIHJlc3RhcnRTaGFyZWRUaW1lcigpCiAgICAgaWYgKCFzaGFyZWRUaW1l
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcFNoYXJlZFRpbWVyKCk7Ci0gICAgdGltZXJG
aXJlZCgwLCAwKTsKKyAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1l
ciwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSk7CisgICAgdGltZXJGaXJlZENhbGxiYWNr
KDAsIDApOwogfQogCi12b2lkIGludmFsaWRhdGVTaGFyZWRUaW1lcigpCit2b2lkIE1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgpCiB7CiAgICAgaWYgKCFzaGFyZWRUaW1lcikKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTAxLDEzICs5NCwxMyBAQCB2b2lkIGludmFsaWRhdGVTaGFyZWRU
aW1lcigpCiAgICAgc2hhcmVkVGltZXIgPSBudWxscHRyOwogfQogCi12b2lkIHNldFNoYXJlZFRp
bWVyRmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRp
bWVyOjpzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogewotICAgIEFTU0VSVChzaGFy
ZWRUaW1lckZpcmVkRnVuY3Rpb24pOworICAgIEFTU0VSVChNYWluVGhyZWFkU2hhcmVkVGltZXI6
OnNfZmlyZWRGdW5jdGlvbik7CiAKICAgICBDRkFic29sdXRlVGltZSBmaXJlRGF0ZSA9IENGQWJz
b2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50ZXJ2YWw7CiAgICAgaWYgKCFzaGFyZWRUaW1lcikg
ewotICAgICAgICBzaGFyZWRUaW1lciA9IENGUnVuTG9vcFRpbWVyQ3JlYXRlKG51bGxwdHIsIGZp
cmVEYXRlLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlLCAwLCAwLCB0aW1lckZpcmVkLCBu
dWxscHRyKTsKKyAgICAgICAgc2hhcmVkVGltZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0ZShudWxs
cHRyLCBmaXJlRGF0ZSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSwgMCwgMCwgdGltZXJG
aXJlZENhbGxiYWNrLCBudWxscHRyKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIENGUnVu
TG9vcEFkZFRpbWVyKFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVkVGltZXIsIGtDRlJ1bkxvb3BD
b21tb25Nb2Rlcyk7CiAjZWxzZQpAQCAtMTIyLDcgKzExNSw3IEBAIHZvaWQgc2V0U2hhcmVkVGlt
ZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4
dEZpcmVEYXRlKHNoYXJlZFRpbWVyLCBmaXJlRGF0ZSk7CiB9CiAKLXZvaWQgc3RvcFNoYXJlZFRp
bWVyKCkKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKCkKIHsKICAgICBpZiAoIXNo
YXJlZFRpbWVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1NoYXJlZFRpbWVyRWZsLmNwcAppbmRleCA5MGJhMDM2Li41OTk1MGEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVmbC5jcHAKQEAgLTM3LDI0ICsz
NywxNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgRWNvcmVfVGltZXIgKl9zaGFy
ZWRUaW1lciA9IDA7Ci0KLXN0YXRpYyB2b2lkICgqX3RpbWVyRnVuY3Rpb24pKCk7Ci0KLXZvaWQg
c2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmdW5jKSgpKQotewotICAgIF90aW1l
ckZ1bmN0aW9uID0gZnVuYzsKLX0KK3ZvaWQgKCpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNfZmly
ZWRGdW5jdGlvbikoKSA9IG51bGxwdHI7CiAKIHN0YXRpYyBFaW5hX0Jvb2wgdGltZXJFdmVudCh2
b2lkKikKIHsKICAgICBfc2hhcmVkVGltZXIgPSAwOwotICAgIGlmIChfdGltZXJGdW5jdGlvbikK
LSAgICAgICAgX3RpbWVyRnVuY3Rpb24oKTsKLQorICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6
dGltZXJGaXJlZCgpOwogICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7CiB9CiAKLXZv
aWQgc3RvcFNoYXJlZFRpbWVyKCkKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKCkK
IHsKICAgICBpZiAoX3NoYXJlZFRpbWVyKSB7CiAgICAgICAgIGVjb3JlX3RpbWVyX2RlbChfc2hh
cmVkVGltZXIpOwpAQCAtNjIsMTkgKzU0LDEzIEBAIHZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKICAg
ICB9CiB9CiAKLXZvaWQgYWRkTmV3VGltZXIoZG91YmxlIGludGVydmFsKQordm9pZCBNYWluVGhy
ZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCiB7Ci0gICAg
c3RvcFNoYXJlZFRpbWVyKCk7Ci0KKyAgICBzdG9wKCk7CiAgICAgX3NoYXJlZFRpbWVyID0gZWNv
cmVfdGltZXJfbG9vcF9hZGQoaW50ZXJ2YWwsIHRpbWVyRXZlbnQsIDApOwogfQogCi12b2lkIHNl
dFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBhZGROZXdU
aW1lcihpbnRlcnZhbCk7Ci19Ci0KLXZvaWQgaW52YWxpZGF0ZVNoYXJlZFRpbWVyKCkKK3ZvaWQg
TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAKaW5kZXggY2ZmN2Q3My4uZTRk
ZmE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVy
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsu
Y3BwCkBAIC0zMywzMSArMzMsMjQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEdN
YWluTG9vcFNvdXJjZSBnU2hhcmVkVGltZXI7Ci1zdGF0aWMgdm9pZCAoKnNoYXJlZFRpbWVyRmly
ZWRGdW5jdGlvbikoKTsKK3ZvaWQgKCpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNfZmlyZWRGdW5j
dGlvbikoKSA9IG51bGxwdHI7CiAKLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZv
aWQgKCpmKSgpKQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbChk
b3VibGUgaW50ZXJ2YWwpCiB7Ci0gICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uID0gZjsKLSAg
ICBpZiAoIXNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbikKLSAgICAgICAgZ1NoYXJlZFRpbWVyLmNh
bmNlbCgpOwotfQotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJsZSBpbnRl
cnZhbCkKLXsKLSAgICBBU1NFUlQoc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKTsKKyAgICBBU1NF
UlQoTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzX2ZpcmVkRnVuY3Rpb24pOwogCiAgICAgLy8gVGhp
cyBpcyBHREtfUFJJT1JJVFlfUkVEUkFXLCBidXQgd2UgZG9uJ3Qgd2FudCB0byBkZXBlbmQgb24g
R0RLIGhlcmUganVzdCB0byB1c2UgYSBjb25zdGFudC4KICAgICBzdGF0aWMgY29uc3QgaW50IHBy
aW9yaXR5ID0gR19QUklPUklUWV9ISUdIX0lETEUgKyAyMDsKLSAgICBnU2hhcmVkVGltZXIuc2No
ZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSBzaGFyZWRUaW1lclRpbWVvdXRDYWxsYmFjayIsIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPihzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pLAorICAgIGdTaGFy
ZWRUaW1lci5zY2hlZHVsZUFmdGVyRGVsYXkoIltXZWJLaXRdIHNoYXJlZFRpbWVyVGltZW91dENh
bGxiYWNrIiwgW3RoaXNdIHsgTWFpblRocmVhZFNoYXJlZFRpbWVyOjp0aW1lckZpcmVkKCk7IH0s
CiAgICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGludGVydmFsKSksIHByaW9yaXR5
KTsKIH0KIAotdm9pZCBzdG9wU2hhcmVkVGltZXIoKQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnN0b3AoKQogewogICAgIGdTaGFyZWRUaW1lci5jYW5jZWwoKTsKIH0KIAotdm9pZCBpbnZh
bGlkYXRlU2hhcmVkVGltZXIoKQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRh
dGUoKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hh
cmVkVGltZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZFRpbWVy
V2luLmNwcAppbmRleCAzZDAyYjE5Li5jMWY4ODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIFVJTlQgdGltZXJJRDsKLXN0YXRpYyB2b2lkICgqc2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uKSgpOwordm9pZCAoKk1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c19m
aXJlZEZ1bmN0aW9uKSgpID0gbnVsbHB0cjsKIAogc3RhdGljIEhBTkRMRSB0aW1lcjsKIHN0YXRp
YyBIV05EIHRpbWVyV2luZG93SGFuZGxlID0gMDsKQEAgLTc5LDE3ICs3OSwxNyBAQCBMUkVTVUxU
IENBTExCQUNLIFRpbWVyV2luZG93V25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BB
UkFNIHdQYXJhbSwgTFBBUgogICAgIGlmIChtZXNzYWdlID09IFdNX1RJTUVSKSB7CiAgICAgICAg
IGlmICh3UGFyYW0gPT0gc2hhcmVkVGltZXJJRCkgewogICAgICAgICAgICAgS2lsbFRpbWVyKHRp
bWVyV2luZG93SGFuZGxlLCBzaGFyZWRUaW1lcklEKTsKLSAgICAgICAgICAgIHNoYXJlZFRpbWVy
RmlyZWRGdW5jdGlvbigpOworICAgICAgICAgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjp0aW1l
ckZpcmVkKCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAod1BhcmFtID09IGVuZEhpZ2hS
ZXNUaW1lcklEKSB7CiAgICAgICAgICAgICBLaWxsVGltZXIodGltZXJXaW5kb3dIYW5kbGUsIGVu
ZEhpZ2hSZXNUaW1lcklEKTsKICAgICAgICAgICAgIGhpZ2hSZXNUaW1lckFjdGl2ZSA9IGZhbHNl
OwotICAgICAgICAgICAgdGltZUVuZFBlcmlvZCh0aW1lclJlc29sdXRpb24pOworICAgICAgICAg
ICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjp0aW1lckZpcmVkKCk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgaWYgKG1lc3NhZ2UgPT0gdGltZXJGaXJlZE1lc3NhZ2UpIHsKICAgICAgICAgSW50ZXJs
b2NrZWRFeGNoYW5nZSgmcGVuZGluZ1RpbWVycywgMCk7CiAgICAgICAgIHByb2Nlc3NpbmdDdXN0
b21UaW1lck1lc3NhZ2UgPSB0cnVlOwotICAgICAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24o
KTsKKyAgICAgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjp0aW1lckZpcmVkKCk7CiAgICAgICAg
IHByb2Nlc3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgPSBmYWxzZTsKICAgICB9IGVsc2UKICAgICAg
ICAgcmV0dXJuIERlZldpbmRvd1Byb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwpA
QCAtMTE3LDIwICsxMTcsMTUgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU9mZlNjcmVlblRpbWVy
V2luZG93KCkKICAgICB0aW1lckZpcmVkTWVzc2FnZSA9IFJlZ2lzdGVyV2luZG93TWVzc2FnZShM
ImNvbS5hcHBsZS5XZWJLaXQuVGltZXJGaXJlZCIpOwogfQogCi12b2lkIHNldFNoYXJlZFRpbWVy
RmlyZWRGdW5jdGlvbih2b2lkICgqZikoKSkKLXsKLSAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rp
b24gPSBmOwotfQotCiBzdGF0aWMgdm9pZCBOVEFQSSBxdWV1ZVRpbWVyUHJvYyhQVk9JRCwgQk9P
TEVBTikKIHsKICAgICBpZiAoSW50ZXJsb2NrZWRJbmNyZW1lbnQoJnBlbmRpbmdUaW1lcnMpID09
IDEpCiAgICAgICAgIFBvc3RNZXNzYWdlKHRpbWVyV2luZG93SGFuZGxlLCB0aW1lckZpcmVkTWVz
c2FnZSwgMCwgMCk7CiB9CiAKLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91Ymxl
IGludGVydmFsKQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbChk
b3VibGUgaW50ZXJ2YWwpCiB7Ci0gICAgQVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7
CisgICAgQVNTRVJUKE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c19maXJlZEZ1bmN0aW9uKTsKIAog
ICAgIHVuc2lnbmVkIGludGVydmFsSW5NUzsKICAgICBpbnRlcnZhbCAqPSAxMDAwOwpAQCAtMTg1
LDcgKzE4MCw3IEBAIHZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVy
dmFsKQogICAgIH0KIH0KIAotdm9pZCBzdG9wU2hhcmVkVGltZXIoKQordm9pZCBNYWluVGhyZWFk
U2hhcmVkVGltZXI6OnN0b3AoKQogewogICAgIGlmICh0aW1lclF1ZXVlICYmIHRpbWVyKSB7CiAg
ICAgICAgIERlbGV0ZVRpbWVyUXVldWVUaW1lcih0aW1lclF1ZXVlLCB0aW1lciwgMCk7CkBAIC0x
OTgsNyArMTkzLDcgQEAgdm9pZCBzdG9wU2hhcmVkVGltZXIoKQogICAgIH0KIH0KIAotdm9pZCBp
bnZhbGlkYXRlU2hhcmVkVGltZXIoKQordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFs
aWRhdGUoKQogewogfQogCg==
</data>
<flag name="review"
          id="289034"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264004</attachid>
            <date>2015-10-25 03:48:15 -0700</date>
            <delta_ts>2015-10-25 03:51:51 -0700</delta_ts>
            <desc>New patch</desc>
            <filename>wcore-shared-timer.diff</filename>
            <type>text/plain</type>
            <size>52158</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOThmM2VhNC4uYjIwNjMxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMDksNiArMjEwOSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9MaW5rSGFzaC5jcHAKICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmNwcAogICAgIHBsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuY3BwCisgICAgcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVy
LmNwcAogICAgIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKICAgICBwbGF0Zm9y
bS9Ob3RJbXBsZW1lbnRlZC5jcHAKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDVjYzFlNzEuLjBhMGFkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAor
MjAxNS0xMC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
KyAgICAgICAgTWFrZSBldmVyeSBwb3J0IGltcGxlbWVudCBNYWluVGhyZWFkU2hhcmVkVGltZXIg
aW5zdGVhZCBvZiB1c2luZyBnbG9iYWwgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIE1haW5UaHJlYWRTaGFyZWRUaW1lciB0byBp
dHMgb3duIGZpbGVzIGFuZCBhZGQgdGhlIGNvbW1vbgorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0
aGVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgTWFpblRocmVhZFNoYXJlZFRp
bWVyLmNwcC4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogVXBkYXRlIGZpbGVuYW1lcy4K
KyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpNYWluVGhyZWFkU2hhcmVkVGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6ZmlyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwLgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZFRpbWVyLmg6IFJlbW92ZSBNYWluVGhyZWFkU2hhcmVkVGltZXIKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gYW5kIHJlaW5kZW50IHRoZSBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkVGltZXI6OlNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVy
Ojp+U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXI6OmludmFsaWRh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRUaW1lcnM6OlRocmVhZFRpbWVycyk6IFVzZSBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnNpbmdsZXRvbigpLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzZXRTaGFy
ZWRUaW1lcik6IFVzZSBhIGxhbWJkYSBmdW5jdGlvbgorICAgICAgICBpbnN0ZWFkIG9mIGEgcG9p
bnRlciB0byBhIHN0YXRpYyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6
OnNoYXJlZFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRp
bWVycy5oOiBSZW1vdmVkIHVuc3VzZWQgc3RhdGljIG1ldGhvZCBzaGFyZWRUaW1lckZpcmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0dXBQb3dlck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6cmVzdGFydFNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2Vm
bC9NYWluVGhyZWFkU2hhcmVkVGltZXJFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnRp
bWVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVy
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0ay5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsu
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50
ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJXaW5kb3dXbmRQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6
OmluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpxdWV1
ZVRpbWVyUHJvYyk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNl
dEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlk
YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOiBVcGRhdGUgV29ya2Vy
U2hhcmVkVGltZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24gdG8gdXNlIHN0ZDo6ZnVuY3Rpb24g
aW5zdGVhZCBvZiBhIHBvaW50ZXIuIEFsc28KKyAgICAgICAgbWFyayB0aGUgY2xhc3MgYXMgZmlu
YWwgYW5kIHRoZSB2aXJ0dWFsIGltcGxlbWVudGF0aW9ucyBhcyBvdmVycmlkZS4KKwogMjAxNS0x
MC0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAg
ICAgIFVzZSBJbXBsZW1lbnRlZEFzIGZvciBNZWRpYURldmljZXMuZ2V0VXNlck1lZGlhRnJvbUpT
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDljYzExNTcuLjA0MTI3OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMTMsMTMgKzExMywxMyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9lZmwvTG9jYWxpemVkU3RyaW5nc0VmbC5jcHAKICAg
ICBwbGF0Zm9ybS9lZmwvTG9nZ2luZ0VmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvTUlNRVR5cGVS
ZWdpc3RyeUVmbC5jcHAKKyAgICBwbGF0Zm9ybS9lZmwvTWFpblRocmVhZFNoYXJlZFRpbWVyRWZs
LmNwcAogICAgIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcAogICAgIHBsYXRmb3JtL2Vm
bC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
TW91c2VFdmVudEVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1TY3JlZW5FZmwuY3Bw
CiAgICAgcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAKICAgICBwbGF0Zm9y
bS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwCi0gICAgcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVy
RWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9Tb3VuZEVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwv
VGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGJhYWFjYjkuLmEyMDlhOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC0xNjEsOCArMTYxLDggQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0
ay9Mb2dnaW5nR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9NSU1FVHlwZVJlZ2lzdHJ5R3RrLmNw
cAorICAgIHBsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsuY3BwCiAgICAgcGxh
dGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKLSAgICBwbGF0Zm9ybS9ndGsvU2hhcmVkVGlt
ZXJHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKICAgICBw
bGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmlu
ZGV4IDk3MDQ4ODYuLmNlNjg0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yNjMs
MTAgKzI2MywxMCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9j
Zi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiAg
ICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisgICAgcGxhdGZvcm0vY2YvTWFpblRo
cmVhZFNoYXJlZFRpbWVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5
U29mdExpbmsuY3BwCiAgICAgcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogICAgIHBs
YXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1NoYXJlZFRpbWVy
Q0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCiAKICAgICBwbGF0Zm9ybS9jb2NvYS9D
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFr
ZQppbmRleCAwMjExZjY4Li40ZWY4YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAt
MTI0LDYgKzEyNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L3dpbi9Mb2dnaW5nV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCisgICAg
cGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKICAgICBwbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAKICAg
ICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcApAQCAtMTMzLDcgKzEzNCw2
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9TY3JvbGxi
YXJUaGVtZVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAog
ICAgIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCi0gICAgcGxhdGZvcm0vd2luL1No
YXJlZFRpbWVyV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9Tb3VuZFdpbi5jcHAKICAgICBwbGF0
Zm9ybS93aW4vU3RydWN0dXJlZEV4Y2VwdGlvbkhhbmRsZXJTdXBwcmVzc29yLmNwcAogICAgIHBs
YXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNjdmMTdjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZFNo
YXJlZFRpbWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWFpblRocmVhZFNoYXJlZFRp
bWVyJiBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPE1haW5UaHJlYWRTaGFyZWRUaW1lcj4gaW5zdGFuY2U7CisgICAgcmV0dXJu
IGluc3RhbmNlOworfQorCitNYWluVGhyZWFkU2hhcmVkVGltZXI6Ok1haW5UaHJlYWRTaGFyZWRU
aW1lcigpCit7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0
aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZpcmVkRnVuY3Rpb24pCit7CisgICAgUkVMRUFT
RV9BU1NFUlQoIW1fZmlyZWRGdW5jdGlvbiB8fCAhZmlyZWRGdW5jdGlvbik7CisgICAgbV9maXJl
ZEZ1bmN0aW9uID0gV1RGOjptb3ZlKGZpcmVkRnVuY3Rpb24pOworfQorCit2b2lkIE1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6ZmlyZWQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2ZpcmVkRnVuY3Rp
b24pOworICAgIG1fZmlyZWRGdW5jdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGlt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMzFjNDMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaApAQCAt
MCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNYWluVGhyZWFk
U2hhcmVkVGltZXJfaAorI2RlZmluZSBNYWluVGhyZWFkU2hhcmVkVGltZXJfaAorCisjaW5jbHVk
ZSAiU2hhcmVkVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNYWluVGhyZWFkU2hhcmVkVGltZXIgZmluYWwgOiBw
dWJsaWMgU2hhcmVkVGltZXIgeworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxNYWlu
VGhyZWFkU2hhcmVkVGltZXI+OworcHVibGljOgorICAgIHN0YXRpYyBNYWluVGhyZWFkU2hhcmVk
VGltZXImIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3Vi
bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxp
ZGF0ZSgpIG92ZXJyaWRlOworCisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHByaXZhdGUs
IGJ1dCBDRiBhbmQgV2luZG93cyBpbXBsZW1lbnRhdGlvbnMKKyAgICAvLyBuZWVkIHRvIGNhbGwg
dGhpcyBmcm9tIHN0YXRpYyBtZXRob2RzIGF0IHRoZSBtb21lbnQuCisgICAgdm9pZCBmaXJlZCgp
IGNvbnN0OworCitwcml2YXRlOgorICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcigpOworCisgICAg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZmlyZWRGdW5jdGlvbiB7IG51bGxwdHIgfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1haW5UaHJlYWRTaGFyZWRUaW1l
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKaW5kZXggMjk5YzQ5OS4uYjkxOWJj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCkBAIC0zMSw1NCArMzEsMjIg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgLy8gRWFjaCB0aHJlYWQgaGFzIGl0cyBv
d24gc2luZ2xlIGluc3RhbmNlIG9mIHNoYXJlZCB0aW1lciwgd2hpY2ggaW1wbGVtZW50cyB0aGlz
IGludGVyZmFjZS4KLSAgICAvLyBUaGlzIGluc3RhbmNlIGlzIHNoYXJlZCBieSBhbGwgdGltZXJz
IGluIHRoZSB0aHJlYWQuCi0gICAgLy8gTm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHk7
IHVzZSB0aGUgVGltZXIgY2xhc3MgaW5zdGVhZC4KLSAgICBjbGFzcyBTaGFyZWRUaW1lciB7Ci0g
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYXJlZFRpbWVyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAgICAgICBTaGFyZWRUaW1lcigpIHsgfQotICAgICAg
ICB2aXJ0dWFsIH5TaGFyZWRUaW1lcigpIHt9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJl
ZEZ1bmN0aW9uKHZvaWQgKCopKCkpID0gMDsKLQotICAgICAgICAvLyBUaGUgZmlyZSBpbnRlcnZh
bCBpcyBpbiBzZWNvbmRzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IG1vbm90b25pYyBjbG9jayB0
aW1lLgotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZUludGVydmFsKGRvdWJsZSkgPSAwOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQg
aW52YWxpZGF0ZSgpIHsgfQotICAgIH07Ci0KLQotICAgIC8vIEltcGxlbWVudGVkIGJ5IHBvcnQg
KHNpbmNlIGl0IHByb3ZpZGVzIHRoZSBydW4gbG9vcCBmb3IgdGhlIG1haW4gdGhyZWFkKS4KLSAg
ICAvLyBGSVhNRTogbWFrZSBwb3J0cyBpbXBsZW1lbnQgTWFpblRocmVhZFNoYXJlZFRpbWVyIGRp
cmVjdGx5IGluc3RlYWQuCi0gICAgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9p
ZCAoKikoKSk7Ci0gICAgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUpOwot
ICAgIHZvaWQgc3RvcFNoYXJlZFRpbWVyKCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGlt
ZXIoKTsKLQotICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIFNoYXJlZFRpbWVyIGZvciB0aGUgbWFp
biB0aHJlYWQuCi0gICAgY2xhc3MgTWFpblRocmVhZFNoYXJlZFRpbWVyIGZpbmFsIDogcHVibGlj
IFNoYXJlZFRpbWVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlv
bih2b2lkICgqZnVuY3Rpb24pKCkpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNl
dFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbihmdW5jdGlvbik7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIHZvaWQgc2V0RmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoaW50ZXJ2
YWwpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBzdG9wU2hhcmVkVGltZXIoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGludmFsaWRhdGVTaGFyZWRUaW1lcigpOwotICAgICAgICB9Ci0gICAgfTsKKy8vIEVhY2ggdGhy
ZWFkIGhhcyBpdHMgb3duIHNpbmdsZSBpbnN0YW5jZSBvZiBzaGFyZWQgdGltZXIsIHdoaWNoIGlt
cGxlbWVudHMgdGhpcyBpbnRlcmZhY2UuCisvLyBUaGlzIGluc3RhbmNlIGlzIHNoYXJlZCBieSBh
bGwgdGltZXJzIGluIHRoZSB0aHJlYWQuCisvLyBOb3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJl
Y3RseTsgdXNlIHRoZSBUaW1lciBjbGFzcyBpbnN0ZWFkLgorY2xhc3MgU2hhcmVkVGltZXIgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYXJlZFRpbWVyKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkVGltZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5TaGFy
ZWRUaW1lcigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiYmKSA9IDA7CisKKyAgICAvLyBUaGUgZmlyZSBpbnRlcnZhbCBpcyBpbiBz
ZWNvbmRzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IG1vbm90b25pYyBjbG9jayB0aW1lLgorICAg
IHZpcnR1YWwgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN0b3AoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIHsgfQorfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFk
VGltZXJzLmNwcAppbmRleCAxMjMxY2EyLi4wMjI4MzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RocmVhZFRpbWVycy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJUaHJlYWRUaW1lcnMuaCIKIAorI2luY2x1ZGUgIk1haW5UaHJlYWRTaGFy
ZWRUaW1lci5oIgogI2luY2x1ZGUgIlNoYXJlZFRpbWVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkR2xv
YmFsRGF0YS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC00NywyNyArNDgsMjEgQEAgc3RhdGlj
IGNvbnN0IGRvdWJsZSBtYXhEdXJhdGlvbk9mRmlyaW5nVGltZXJzID0gMC4wNTA7CiAvLyBUaW1l
cnMgYXJlIGNyZWF0ZWQsIHN0YXJ0ZWQgYW5kIGZpcmVkIG9uIHRoZSBzYW1lIHRocmVhZCwgYW5k
IGVhY2ggdGhyZWFkIGhhcyBpdHMgb3duIFRocmVhZFRpbWVycwogLy8gY29weSB0byBrZWVwIHRo
ZSBoZWFwIGFuZCBhIHNldCBvZiBjdXJyZW50bHkgZmlyaW5nIHRpbWVycy4KIAotc3RhdGljIE1h
aW5UaHJlYWRTaGFyZWRUaW1lciogbWFpblRocmVhZFNoYXJlZFRpbWVyKCkKLXsKLSAgICBzdGF0
aWMgTWFpblRocmVhZFNoYXJlZFRpbWVyKiB0aW1lciA9IG5ldyBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI7Ci0gICAgcmV0dXJuIHRpbWVyOwotfQotCiBUaHJlYWRUaW1lcnM6OlRocmVhZFRpbWVycygp
CiAgICAgOiBtX3NoYXJlZFRpbWVyKDApCiAgICAgLCBtX2ZpcmluZ1RpbWVycyhmYWxzZSkKICAg
ICAsIG1fcGVuZGluZ1NoYXJlZFRpbWVyRmlyZVRpbWUoMCkKIHsKICAgICBpZiAoaXNVSVRocmVh
ZCgpKQotICAgICAgICBzZXRTaGFyZWRUaW1lcihtYWluVGhyZWFkU2hhcmVkVGltZXIoKSk7Cisg
ICAgICAgIHNldFNoYXJlZFRpbWVyKCZNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNpbmdsZXRvbigp
KTsKIH0KIAogLy8gQSB3b3JrZXIgdGhyZWFkIG1heSBpbml0aWFsaXplIFNoYXJlZFRpbWVyIGFm
dGVyIHNvbWUgdGltZXJzIGFyZSBjcmVhdGVkLgotLy8gQWxzbywgU2hhcmVkVGltZXIgY2FuIGJl
IHJlcGxhY2VkIHdpdGggMCBiZWZvcmUgYWxsIHRpbWVycyBhcmUgZGVzdHJveWVkLgorLy8gQWxz
bywgU2hhcmVkVGltZXIgY2FuIGJlIHJlcGxhY2VkIHdpdGggbnVsbHB0ciBiZWZvcmUgYWxsIHRp
bWVycyBhcmUgZGVzdHJveWVkLgogdm9pZCBUaHJlYWRUaW1lcnM6OnNldFNoYXJlZFRpbWVyKFNo
YXJlZFRpbWVyKiBzaGFyZWRUaW1lcikKIHsKICAgICBpZiAobV9zaGFyZWRUaW1lcikgewotICAg
ICAgICBtX3NoYXJlZFRpbWVyLT5zZXRGaXJlZEZ1bmN0aW9uKDApOworICAgICAgICBtX3NoYXJl
ZFRpbWVyLT5zZXRGaXJlZEZ1bmN0aW9uKG51bGxwdHIpOwogICAgICAgICBtX3NoYXJlZFRpbWVy
LT5zdG9wKCk7CiAgICAgICAgIG1fcGVuZGluZ1NoYXJlZFRpbWVyRmlyZVRpbWUgPSAwOwogICAg
IH0KQEAgLTc1LDcgKzcwLDcgQEAgdm9pZCBUaHJlYWRUaW1lcnM6OnNldFNoYXJlZFRpbWVyKFNo
YXJlZFRpbWVyKiBzaGFyZWRUaW1lcikKICAgICBtX3NoYXJlZFRpbWVyID0gc2hhcmVkVGltZXI7
CiAgICAgCiAgICAgaWYgKHNoYXJlZFRpbWVyKSB7Ci0gICAgICAgIG1fc2hhcmVkVGltZXItPnNl
dEZpcmVkRnVuY3Rpb24oVGhyZWFkVGltZXJzOjpzaGFyZWRUaW1lckZpcmVkKTsKKyAgICAgICAg
bV9zaGFyZWRUaW1lci0+c2V0RmlyZWRGdW5jdGlvbihbXSB7IHRocmVhZEdsb2JhbERhdGEoKS50
aHJlYWRUaW1lcnMoKS5zaGFyZWRUaW1lckZpcmVkSW50ZXJuYWwoKTsgfSk7CiAgICAgICAgIHVw
ZGF0ZVNoYXJlZFRpbWVyKCk7CiAgICAgfQogfQpAQCAtMTAxLDEyICs5Niw2IEBAIHZvaWQgVGhy
ZWFkVGltZXJzOjp1cGRhdGVTaGFyZWRUaW1lcigpCiAgICAgfQogfQogCi12b2lkIFRocmVhZFRp
bWVyczo6c2hhcmVkVGltZXJGaXJlZCgpCi17Ci0gICAgLy8gUmVkaXJlY3QgdG8gbm9uLXN0YXRp
YyBtZXRob2QuCi0gICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnNoYXJlZFRp
bWVyRmlyZWRJbnRlcm5hbCgpOwotfQotCiB2b2lkIFRocmVhZFRpbWVyczo6c2hhcmVkVGltZXJG
aXJlZEludGVybmFsKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkgfHwgKCFpc1dlYlRo
cmVhZCgpICYmICFpc1VJVGhyZWFkKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZFRpbWVycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGlt
ZXJzLmgKaW5kZXggMTVkOWYzNy4uZTRmMjYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGhyZWFkVGltZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkVGltZXJzLmgKQEAgLTUxLDggKzUxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIGZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgc3RhdGljIHZvaWQgc2hhcmVkVGltZXJGaXJlZCgpOwotCiAgICAgICAgIHZvaWQgc2hh
cmVkVGltZXJGaXJlZEludGVybmFsKCk7CiAgICAgICAgIHZvaWQgZmlyZVRpbWVyc0luTmVzdGVk
RXZlbnRMb29wSW50ZXJuYWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmRhNjI0NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAgLTAsMCArMSwxMjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1haW5UaHJlYWRTaGFyZWRUaW1lci5oIgor
CisjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgorCisjaWYgUExBVEZPUk0oTUFDKQor
I2ltcG9ydCAiUG93ZXJPYnNlcnZlck1hYy5oIgorI2VsaWYgUExBVEZPUk0oSU9TKQorI2ltcG9y
dCAiV2ViQ29yZVRocmVhZC5oIgorI2ltcG9ydCAiV2ViQ29yZVRocmVhZFJ1bi5oIgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIENGUnVuTG9vcFRpbWVyUmVmIHNoYXJl
ZFRpbWVyOworc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCop
Oworc3RhdGljIHZvaWQgcmVzdGFydFNoYXJlZFRpbWVyKCk7CisKK3N0YXRpYyBjb25zdCBDRlRp
bWVJbnRlcnZhbCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlID0gc3RkOjpudW1lcmljX2xp
bWl0czxDRlRpbWVJbnRlcnZhbD46Om1heCgpOworCisjaWYgUExBVEZPUk0oSU9TKQorc3RhdGlj
IHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYs
IHZvaWQqLCBDRlN0cmluZ1JlZiwgY29uc3Qgdm9pZCosIENGRGljdGlvbmFyeVJlZikKK3sKKyAg
ICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgcmVzdGFydFNoYXJlZFRpbWVyKCk7CisgICAgfSk7
Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgc2V0dXBQb3dlck9ic2VydmVyKCkKK3sKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgc3RhdGljIFBvd2VyT2JzZXJ2ZXIqIHBvd2VyT2JzZXJ2ZXI7Cisg
ICAgaWYgKCFwb3dlck9ic2VydmVyKQorICAgICAgICBwb3dlck9ic2VydmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0U2hhcmVkVGltZXIpLnJlbGVhc2UoKTsKKyNl
bGlmIFBMQVRGT1JNKElPUykKKyAgICBzdGF0aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRp
b25Ob3RpZmljYXRpb24gPSBmYWxzZTsKKyAgICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlv
bk5vdGlmaWNhdGlvbikgeworICAgICAgICByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmlj
YXRpb24gPSB0cnVlOworICAgICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiBub3RpZmljYXRp
b25DZW50ZXIgPSBDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCk7CisgICAgICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIobm90aWZpY2F0aW9uQ2VudGVyLCBudWxs
cHRyLCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSwgQ0ZTVFIoIlVJQXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmVOb3RpZmljYXRpb24iKSwgbnVsbHB0ciwgQ0ZOb3RpZmljYXRpb25TdXNwZW5z
aW9uQmVoYXZpb3JDb2FsZXNjZSk7CisgICAgfQorI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIHRp
bWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKQoreworICAgIEF1dG9kcmFpbmVkUG9v
bCBwb29sOworICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2luZ2xldG9uKCkuZmlyZWQoKTsK
K30KKworc3RhdGljIHZvaWQgcmVzdGFydFNoYXJlZFRpbWVyKCkKK3sKKyAgICBpZiAoIXNoYXJl
ZFRpbWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNp
bmdsZXRvbigpLnN0b3AoKTsKKyAgICB0aW1lckZpcmVkKDAsIDApOworfQorCit2b2lkIE1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgpCit7CisgICAgaWYgKCFzaGFyZWRUaW1lcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRp
bWVyKTsKKyAgICBDRlJlbGVhc2Uoc2hhcmVkVGltZXIpOworICAgIHNoYXJlZFRpbWVyID0gbnVs
bHB0cjsKK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbChk
b3VibGUgaW50ZXJ2YWwpCit7CisgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlvbik7CisKKyAgICBD
RkFic29sdXRlVGltZSBmaXJlRGF0ZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50
ZXJ2YWw7CisgICAgaWYgKCFzaGFyZWRUaW1lcikgeworICAgICAgICBzaGFyZWRUaW1lciA9IENG
UnVuTG9vcFRpbWVyQ3JlYXRlKG51bGxwdHIsIGZpcmVEYXRlLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0
YW50RnV0dXJlLCAwLCAwLCB0aW1lckZpcmVkLCBudWxscHRyKTsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVkVGlt
ZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisjZWxzZQorICAgICAgICBDRlJ1bkxvb3BBZGRU
aW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHNoYXJlZFRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9u
TW9kZXMpOworI2VuZGlmCisKKyAgICAgICAgc2V0dXBQb3dlck9ic2VydmVyKCk7CisKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNo
YXJlZFRpbWVyLCBmaXJlRGF0ZSk7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpz
dG9wKCkKK3sKKyAgICBpZiAoIXNoYXJlZFRpbWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBD
RlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwga0NGVGltZUludGVydmFs
RGlzdGFudEZ1dHVyZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkVGltZXJDRi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDZmZDcwN2IuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvU2hhcmVkVGltZXJDRi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiU2hhcmVkVGltZXIuaCIKLQotI2luY2x1ZGUgPHd0
Zi9BdXRvZHJhaW5lZFBvb2wuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLSNpbXBvcnQgIlBvd2Vy
T2JzZXJ2ZXJNYWMuaCIKLSNlbGlmIFBMQVRGT1JNKElPUykKLSNpbXBvcnQgIldlYkNvcmVUaHJl
YWQuaCIKLSNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiBzaGFyZWRUaW1lcjsKLXN0YXRp
YyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOwotc3RhdGljIHZvaWQgdGltZXJG
aXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwotc3RhdGljIHZvaWQgcmVzdGFydFNoYXJl
ZFRpbWVyKCk7Ci0KLXN0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCBrQ0ZUaW1lSW50ZXJ2YWxE
aXN0YW50RnV0dXJlID0gc3RkOjpudW1lcmljX2xpbWl0czxDRlRpbWVJbnRlcnZhbD46Om1heCgp
OwotCi0jaWYgUExBVEZPUk0oSU9TKQotc3RhdGljIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmUoQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqLCBDRlN0cmluZ1JlZiwgY29uc3Qg
dm9pZCosIENGRGljdGlvbmFyeVJlZikKLXsKLSAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAg
cmVzdGFydFNoYXJlZFRpbWVyKCk7Ci0gICAgfSk7Ci19Ci0jZW5kaWYKLQotc3RhdGljIHZvaWQg
c2V0dXBQb3dlck9ic2VydmVyKCkKLXsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgc3RhdGljIFBv
d2VyT2JzZXJ2ZXIqIHBvd2VyT2JzZXJ2ZXI7Ci0gICAgaWYgKCFwb3dlck9ic2VydmVyKQotICAg
ICAgICBwb3dlck9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0
YXJ0U2hhcmVkVGltZXIpLnJlbGVhc2UoKTsKLSNlbGlmIFBMQVRGT1JNKElPUykKLSAgICBzdGF0
aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBmYWxzZTsKLSAg
ICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikgewotICAgICAgICBy
ZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSB0cnVlOwotICAgICAgICBDRk5v
dGlmaWNhdGlvbkNlbnRlclJlZiBub3RpZmljYXRpb25DZW50ZXIgPSBDRk5vdGlmaWNhdGlvbkNl
bnRlckdldExvY2FsQ2VudGVyKCk7Ci0gICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2Jz
ZXJ2ZXIobm90aWZpY2F0aW9uQ2VudGVyLCBudWxscHRyLCBhcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZSwgQ0ZTVFIoIlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24iKSwg
bnVsbHB0ciwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JDb2FsZXNjZSk7Ci0gICAg
fQotI2VuZGlmCi19Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpm
KSgpKQotewotICAgIEFTU0VSVCghc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uIHx8IHNoYXJlZFRp
bWVyRmlyZWRGdW5jdGlvbiA9PSBmKTsKLQotICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiA9
IGY7Ci19Ci0KLXN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQq
KQotewotICAgIEF1dG9kcmFpbmVkUG9vbCBwb29sOwotICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbigpOwotfQotCi1zdGF0aWMgdm9pZCByZXN0YXJ0U2hhcmVkVGltZXIoKQotewotICAgIGlm
ICghc2hhcmVkVGltZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0b3BTaGFyZWRUaW1lcigp
OwotICAgIHRpbWVyRmlyZWQoMCwgMCk7Ci19Ci0KLXZvaWQgaW52YWxpZGF0ZVNoYXJlZFRpbWVy
KCkKLXsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJ1
bkxvb3BUaW1lckludmFsaWRhdGUoc2hhcmVkVGltZXIpOwotICAgIENGUmVsZWFzZShzaGFyZWRU
aW1lcik7Ci0gICAgc2hhcmVkVGltZXIgPSBudWxscHRyOwotfQotCi12b2lkIHNldFNoYXJlZFRp
bWVyRmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBBU1NFUlQoc2hhcmVkVGlt
ZXJGaXJlZEZ1bmN0aW9uKTsKLQotICAgIENGQWJzb2x1dGVUaW1lIGZpcmVEYXRlID0gQ0ZBYnNv
bHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBpbnRlcnZhbDsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKSB7
Ci0gICAgICAgIHNoYXJlZFRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUobnVsbHB0ciwgZmly
ZURhdGUsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUsIDAsIDAsIHRpbWVyRmlyZWQsIG51
bGxwdHIpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoV2Vi
VGhyZWFkUnVuTG9vcCgpLCBzaGFyZWRUaW1lciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSNl
bHNlCi0gICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgc2hh
cmVkVGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0jZW5kaWYKLQotICAgICAgICBzZXR1
cFBvd2VyT2JzZXJ2ZXIoKTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZSdW5M
b29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIsIGZpcmVEYXRlKTsKLX0KLQotdm9p
ZCBzdG9wU2hhcmVkVGltZXIoKQotewotICAgIGlmICghc2hhcmVkVGltZXIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyLCBr
Q0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL01haW5UaHJlYWRTaGFy
ZWRUaW1lckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTWFpblRocmVhZFNo
YXJlZFRpbWVyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Njhk
MzU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL01haW5U
aHJlYWRTaGFyZWRUaW1lckVmbC5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgorICogICAgICAgICAgIChDKSAy
MDA4IEFmb25zbyBSYWJlbG8gQ29zdGEgSnIuCisgKiAgICAgICAgICAgKEMpIDIwMDktMjAxMCBQ
cm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogICAgICAgICAgIChDKSAyMDA5LTIwMTAgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZFNoYXJlZFRpbWVy
LmgiCisKKyNpbmNsdWRlIDxFY29yZS5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgRWNvcmVfVGltZXIqIHNoYXJlZFRpbWVy
OworCitzdGF0aWMgRWluYV9Cb29sIHRpbWVyRXZlbnQodm9pZCopCit7CisgICAgc2hhcmVkVGlt
ZXIgPSBudWxscHRyOworICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2luZ2xlcm9uKCkuZmly
ZWQoKTsKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOworfQorCit2b2lkIE1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6c3RvcCgpCit7CisgICAgaWYgKHNoYXJlZFRpbWVyKSB7CisgICAg
ICAgIGVjb3JlX3RpbWVyX2RlbChzaGFyZWRUaW1lcik7CisgICAgICAgIHNoYXJlZFRpbWVyID0g
bnVsbHB0cjsKKyAgICB9Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJl
SW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIHN0b3AoKTsKKyAgICBzaGFyZWRUaW1l
ciA9IGVjb3JlX3RpbWVyX2xvb3BfYWRkKGludGVydmFsLCB0aW1lckV2ZW50LCBudWxscHRyKTsK
K30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUoKQoreworfQorCit9
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVm
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGJhMDM2Li4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVmbC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuCi0gKiAgICAgICAgICAgKEMpIDIwMDggQWZvbnNvIFJhYmVsbyBDb3N0YSBK
ci4KLSAqICAgICAgICAgICAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1z
Ci0gKiAgICAgICAgICAgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgotCi0jaW5jbHVkZSA8RWNvcmUuaD4KLSNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIEVj
b3JlX1RpbWVyICpfc2hhcmVkVGltZXIgPSAwOwotCi1zdGF0aWMgdm9pZCAoKl90aW1lckZ1bmN0
aW9uKSgpOwotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqZnVuYyko
KSkKLXsKLSAgICBfdGltZXJGdW5jdGlvbiA9IGZ1bmM7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jvb2wg
dGltZXJFdmVudCh2b2lkKikKLXsKLSAgICBfc2hhcmVkVGltZXIgPSAwOwotICAgIGlmIChfdGlt
ZXJGdW5jdGlvbikKLSAgICAgICAgX3RpbWVyRnVuY3Rpb24oKTsKLQotICAgIHJldHVybiBFQ09S
RV9DQUxMQkFDS19DQU5DRUw7Ci19Ci0KLXZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKLXsKLSAgICBp
ZiAoX3NoYXJlZFRpbWVyKSB7Ci0gICAgICAgIGVjb3JlX3RpbWVyX2RlbChfc2hhcmVkVGltZXIp
OwotICAgICAgICBfc2hhcmVkVGltZXIgPSAwOwotICAgIH0KLX0KLQotdm9pZCBhZGROZXdUaW1l
cihkb3VibGUgaW50ZXJ2YWwpCi17Ci0gICAgc3RvcFNoYXJlZFRpbWVyKCk7Ci0KLSAgICBfc2hh
cmVkVGltZXIgPSBlY29yZV90aW1lcl9sb29wX2FkZChpbnRlcnZhbCwgdGltZXJFdmVudCwgMCk7
Ci19Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQot
ewotICAgIGFkZE5ld1RpbWVyKGludGVydmFsKTsKLX0KLQotdm9pZCBpbnZhbGlkYXRlU2hhcmVk
VGltZXIoKQotewotfQotCi19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODdkOWI1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsuY3BwCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21h
aWwuY29tCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRo
cmVhZFNoYXJlZFRpbWVyLmgiCisKKyNpbmNsdWRlIDx3dGYvZ2xpYi9HTWFpbkxvb3BTb3VyY2Uu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgR01haW5Mb29wU291cmNlIGdTaGFy
ZWRUaW1lcjsKKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbChk
b3VibGUgaW50ZXJ2YWwpCit7CisgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlvbik7CisKKyAgICAv
LyBUaGlzIGlzIEdES19QUklPUklUWV9SRURSQVcsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIGRlcGVu
ZCBvbiBHREsgaGVyZSBqdXN0IHRvIHVzZSBhIGNvbnN0YW50LgorICAgIHN0YXRpYyBjb25zdCBp
bnQgcHJpb3JpdHkgPSBHX1BSSU9SSVRZX0hJR0hfSURMRSArIDIwOworICAgIGdTaGFyZWRUaW1l
ci5zY2hlZHVsZUFmdGVyRGVsYXkoIltXZWJLaXRdIHNoYXJlZFRpbWVyVGltZW91dENhbGxiYWNr
IiwgW3RoaXNdIHsgZmlyZWQoKTsgfSwKKyAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nh
c3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJs
ZT4oaW50ZXJ2YWwpKSwgcHJpb3JpdHkpOworfQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1l
cjo6c3RvcCgpCit7CisgICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOworfQorCit2b2lkIE1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgpCit7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjZmY3ZDczLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TaGFyZWRUaW1lckd0ay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNv
bQotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZFRpbWVy
LmgiCi0KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HTWFpbkxvb3BTb3VyY2UuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdGF0aWMgR01haW5Mb29wU291cmNlIGdTaGFyZWRUaW1lcjsKLXN0YXRp
YyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOwotCi12b2lkIHNldFNoYXJlZFRp
bWVyRmlyZWRGdW5jdGlvbih2b2lkICgqZikoKSkKLXsKLSAgICBzaGFyZWRUaW1lckZpcmVkRnVu
Y3Rpb24gPSBmOwotICAgIGlmICghc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKQotICAgICAgICBn
U2hhcmVkVGltZXIuY2FuY2VsKCk7Ci19Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2
YWwoZG91YmxlIGludGVydmFsKQotewotICAgIEFTU0VSVChzaGFyZWRUaW1lckZpcmVkRnVuY3Rp
b24pOwotCi0gICAgLy8gVGhpcyBpcyBHREtfUFJJT1JJVFlfUkVEUkFXLCBidXQgd2UgZG9uJ3Qg
d2FudCB0byBkZXBlbmQgb24gR0RLIGhlcmUganVzdCB0byB1c2UgYSBjb25zdGFudC4KLSAgICBz
dGF0aWMgY29uc3QgaW50IHByaW9yaXR5ID0gR19QUklPUklUWV9ISUdIX0lETEUgKyAyMDsKLSAg
ICBnU2hhcmVkVGltZXIuc2NoZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSBzaGFyZWRUaW1lclRp
bWVvdXRDYWxsYmFjayIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPihzaGFyZWRUaW1lckZpcmVkRnVu
Y3Rpb24pLAotICAgICAgICBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6
bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihpbnRlcnZhbCkpLCBw
cmlvcml0eSk7Ci19Ci0KLXZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKLXsKLSAgICBnU2hhcmVkVGlt
ZXIuY2FuY2VsKCk7Ci19Ci0KLXZvaWQgaW52YWxpZGF0ZVNoYXJlZFRpbWVyKCkKLXsKLX0KLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFy
ZWRUaW1lcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTWFpblRocmVhZFNo
YXJlZFRpbWVyV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTY2
MGRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01haW5U
aHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKQEAgLTAsMCArMSwxOTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJNYWluVGhyZWFkU2hhcmVkVGltZXIuaCIKKworI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYkNvcmVJbnN0YW5jZUhhbmRsZS5oIgor
I2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KKwor
I2luY2x1ZGUgPG1tc3lzdGVtLmg+CisKKy8vIFRoZXNlIGFyZW4ndCBpbiB3aW51c2VyLmggd2l0
aCB0aGUgTVNWUyAyMDAzIFBsYXRmb3JtIFNESywgCisvLyBzbyB1c2UgZGVmYXVsdCB2YWx1ZXMg
aW4gdGhhdCBjYXNlLgorI2lmbmRlZiBVU0VSX1RJTUVSX01JTklNVU0KKyNkZWZpbmUgVVNFUl9U
SU1FUl9NSU5JTVVNIDB4MDAwMDAwMEEKKyNlbmRpZgorCisjaWZuZGVmIFVTRVJfVElNRVJfTUFY
SU1VTQorI2RlZmluZSBVU0VSX1RJTUVSX01BWElNVU0gMHg3RkZGRkZGRgorI2VuZGlmCisKKyNp
Zm5kZWYgUVNfUkFXSU5QVVQKKyNkZWZpbmUgUVNfUkFXSU5QVVQgICAgICAgICAweDA0MDAKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBVSU5UIHRpbWVySUQ7CisKK3N0
YXRpYyBIQU5ETEUgdGltZXI7CitzdGF0aWMgSFdORCB0aW1lcldpbmRvd0hhbmRsZSA9IDA7Citj
b25zdCBMUENXU1RSIGtUaW1lcldpbmRvd0NsYXNzTmFtZSA9IEwiVGltZXJXaW5kb3dDbGFzcyI7
CisKK3N0YXRpYyBVSU5UIHRpbWVyRmlyZWRNZXNzYWdlID0gMDsKK3N0YXRpYyBIQU5ETEUgdGlt
ZXJRdWV1ZTsKK3N0YXRpYyBib29sIGhpZ2hSZXNUaW1lckFjdGl2ZTsKK3N0YXRpYyBib29sIHBy
b2Nlc3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgPSBmYWxzZTsKK3N0YXRpYyBMT05HIHBlbmRpbmdU
aW1lcnM7CisKK2NvbnN0IGludCB0aW1lclJlc29sdXRpb24gPSAxOyAvLyBUbyBpbXByb3ZlIHRp
bWVyIHJlc29sdXRpb24sIHdlIGNhbGwgdGltZUJlZ2luUGVyaW9kL3RpbWVFbmRQZXJpb2Qgd2l0
aCB0aGlzIHZhbHVlIHRvIGluY3JlYXNlIHRpbWVyIHJlc29sdXRpb24gdG8gMW1zLgorY29uc3Qg
aW50IGhpZ2hSZXNvbHV0aW9uVGhyZXNob2xkTXNlYyA9IDE2OyAvLyBPbmx5IGFjdGl2YXRlIGhp
Z2gtcmVzIHRpbWVyIGZvciBzdWItMTZtcyB0aW1lcnMgKFdpbmRvd3MgY2FuIGZpcmUgdGltZXJz
IGF0IDE2bXMgaW50ZXJ2YWxzIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHN5c3RlbSByZXNvbHV0aW9u
KS4KK2NvbnN0IGludCBzdG9wSGlnaFJlc1RpbWVySW5Nc2VjID0gMzAwOyAvLyBTdG9wIGhpZ2gt
cmVzIHRpbWVyIGFmdGVyIDAuMyBzZWNvbmRzIHRvIGxlc3NlbiBwb3dlciBjb25zdW1wdGlvbiAo
d2UgZG9uJ3QgdXNlIGEgc21hbGxlciB0aW1lIHNpbmNlIG9zY2lsbGF0aW5nIGJldHdlZW4gaGln
aCBhbmQgbG93IHJlc29sdXRpb24gYnJlYWtzIHRpbWVyIGFjY3VyYWN5IG9uIFhQKS4KKworZW51
bSB7CisgICAgc2hhcmVkVGltZXJJRCA9IDEwMDAsCisgICAgZW5kSGlnaFJlc1RpbWVySUQgPSAx
MDAxLAorfTsKKworTFJFU1VMVCBDQUxMQkFDSyBUaW1lcldpbmRvd1duZFByb2MoSFdORCBoV25k
LCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCit7CisgICAgaWYg
KG1lc3NhZ2UgPT0gV01fVElNRVIpIHsKKyAgICAgICAgaWYgKHdQYXJhbSA9PSBzaGFyZWRUaW1l
cklEKSB7CisgICAgICAgICAgICBLaWxsVGltZXIodGltZXJXaW5kb3dIYW5kbGUsIHNoYXJlZFRp
bWVySUQpOworICAgICAgICAgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKS5m
aXJlZCgpOworICAgICAgICB9IGVsc2UgaWYgKHdQYXJhbSA9PSBlbmRIaWdoUmVzVGltZXJJRCkg
eworICAgICAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCBlbmRIaWdoUmVzVGlt
ZXJJRCk7CisgICAgICAgICAgICBoaWdoUmVzVGltZXJBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAg
ICAgIHRpbWVFbmRQZXJpb2QodGltZXJSZXNvbHV0aW9uKTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZSBpZiAobWVzc2FnZSA9PSB0aW1lckZpcmVkTWVzc2FnZSkgeworICAgICAgICBJbnRlcmxvY2tl
ZEV4Y2hhbmdlKCZwZW5kaW5nVGltZXJzLCAwKTsKKyAgICAgICAgcHJvY2Vzc2luZ0N1c3RvbVRp
bWVyTWVzc2FnZSA9IHRydWU7CisgICAgICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2luZ2xl
dG9uKCkuZmlyZWQoKTsKKyAgICAgICAgcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IGZh
bHNlOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBtZXNz
YWdlLCB3UGFyYW0sIGxQYXJhbSk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZU9mZlNjcmVlblRpbWVyV2luZG93KCkKK3sKKyAgICBpZiAodGltZXJXaW5kb3dI
YW5kbGUpCisgICAgICAgIHJldHVybjsKKworICAgIFdORENMQVNTRVggd2NleDsKKyAgICBtZW1z
ZXQoJndjZXgsIDAsIHNpemVvZihXTkRDTEFTU0VYKSk7CisgICAgd2NleC5jYlNpemUgPSBzaXpl
b2YoV05EQ0xBU1NFWCk7CisKKyAgICB3Y2V4LmxwZm5XbmRQcm9jICAgID0gVGltZXJXaW5kb3dX
bmRQcm9jOworICAgIHdjZXguaEluc3RhbmNlICAgICAgPSBXZWJDb3JlOjppbnN0YW5jZUhhbmRs
ZSgpOworICAgIHdjZXgubHBzekNsYXNzTmFtZSAgPSBrVGltZXJXaW5kb3dDbGFzc05hbWU7Cisg
ICAgUmVnaXN0ZXJDbGFzc0V4KCZ3Y2V4KTsKKworICAgIHRpbWVyV2luZG93SGFuZGxlID0gQ3Jl
YXRlV2luZG93KGtUaW1lcldpbmRvd0NsYXNzTmFtZSwgMCwgMCwKKyAgICAgICBDV19VU0VERUZB
VUxULCAwLCBDV19VU0VERUZBVUxULCAwLCBIV05EX01FU1NBR0UsIDAsIFdlYkNvcmU6Omluc3Rh
bmNlSGFuZGxlKCksIDApOworCisgICAgdGltZXJGaXJlZE1lc3NhZ2UgPSBSZWdpc3RlcldpbmRv
d01lc3NhZ2UoTCJjb20uYXBwbGUuV2ViS2l0LlRpbWVyRmlyZWQiKTsKK30KKworc3RhdGljIHZv
aWQgTlRBUEkgcXVldWVUaW1lclByb2MoUFZPSUQsIEJPT0xFQU4pCit7CisgICAgaWYgKEludGVy
bG9ja2VkSW5jcmVtZW50KCZwZW5kaW5nVGltZXJzKSA9PSAxKQorICAgICAgICBQb3N0TWVzc2Fn
ZSh0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJGaXJlZE1lc3NhZ2UsIDAsIDApOworfQorCit2b2lk
IE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkK
K3sKKyAgICBBU1NFUlQobV9maXJlZEZ1bmN0aW9uKTsKKworICAgIHVuc2lnbmVkIGludGVydmFs
SW5NUzsKKyAgICBpbnRlcnZhbCAqPSAxMDAwOworICAgIGlmIChpbnRlcnZhbCA+IFVTRVJfVElN
RVJfTUFYSU1VTSkKKyAgICAgICAgaW50ZXJ2YWxJbk1TID0gVVNFUl9USU1FUl9NQVhJTVVNOwor
ICAgIGVsc2UKKyAgICAgICAgaW50ZXJ2YWxJbk1TID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlu
dGVydmFsKTsKKworICAgIGluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldpbmRvdygpOworICAgIGJv
b2wgdGltZXJTZXQgPSBmYWxzZTsKKworICAgIGlmIChTZXR0aW5nczo6c2hvdWxkVXNlSGlnaFJl
c29sdXRpb25UaW1lcnMoKSkgeworICAgICAgICBpZiAoaW50ZXJ2YWwgPCBoaWdoUmVzb2x1dGlv
blRocmVzaG9sZE1zZWMpIHsKKyAgICAgICAgICAgIGlmICghaGlnaFJlc1RpbWVyQWN0aXZlKSB7
CisgICAgICAgICAgICAgICAgaGlnaFJlc1RpbWVyQWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB0aW1lQmVnaW5QZXJpb2QodGltZXJSZXNvbHV0aW9uKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIFNldFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCBlbmRIaWdoUmVzVGltZXJJRCwg
c3RvcEhpZ2hSZXNUaW1lckluTXNlYywgMCk7CisgICAgICAgIH0KKworICAgICAgICBEV09SRCBx
dWV1ZVN0YXR1cyA9IExPV09SRChHZXRRdWV1ZVN0YXR1cyhRU19QQUlOVCB8IFFTX01PVVNFQlVU
VE9OIHwgUVNfS0VZIHwgUVNfUkFXSU5QVVQpKTsKKworICAgICAgICAvLyBXaW4zMiBoYXMgYSB0
cmktbGV2ZWwgcXVldWUgd2l0aCBhcHBsaWNhdGlvbiBtZXNzYWdlcyA+IHVzZXIgaW5wdXQgPiBX
TV9QQUlOVC9XTV9USU1FUi4KKworICAgICAgICAvLyBJZiB0aGUgcXVldWUgZG9lc24ndCBjb250
YWlucyBpbnB1dCBldmVudHMsIHdlIHVzZSBhIGhpZ2hlciBwcmlvcnR5IHRpbWVyIGV2ZW50IHBv
c3RpbmcgbWVjaGFuaXNtLgorICAgICAgICBpZiAoIShxdWV1ZVN0YXR1cyAmIChRU19NT1VTRUJV
VFRPTiB8IFFTX0tFWSB8IFFTX1JBV0lOUFVUKSkpIHsKKyAgICAgICAgICAgIGlmIChpbnRlcnZh
bEluTVMgPCBVU0VSX1RJTUVSX01JTklNVU0gJiYgIXByb2Nlc3NpbmdDdXN0b21UaW1lck1lc3Nh
Z2UgJiYgIShxdWV1ZVN0YXR1cyAmIFFTX1BBSU5UKSkgeworICAgICAgICAgICAgICAgIC8vIENh
bGwgUG9zdE1lc3NhZ2UgaW1tZWRpYXRlbHkgaWYgdGhlIHRpbWVyIGlzIGFscmVhZHkgZXhwaXJl
ZCwgdW5sZXNzIGEgcGFpbnQgaXMgcGVuZGluZy4KKyAgICAgICAgICAgICAgICAvLyAod2UgcHJp
b3JpdGl6ZSBwYWludHMgb3ZlciB0aW1lcnMpCisgICAgICAgICAgICAgICAgaWYgKEludGVybG9j
a2VkSW5jcmVtZW50KCZwZW5kaW5nVGltZXJzKSA9PSAxKQorICAgICAgICAgICAgICAgICAgICBQ
b3N0TWVzc2FnZSh0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJGaXJlZE1lc3NhZ2UsIDAsIDApOwor
ICAgICAgICAgICAgICAgIHRpbWVyU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBkZWxheSB0aGUgUG9zdE1lc3NhZ2UgdmlhIGEg
Q3JlYXRlVGltZXJRdWV1ZVRpbWVyCisgICAgICAgICAgICAgICAgaWYgKCF0aW1lclF1ZXVlKQor
ICAgICAgICAgICAgICAgICAgICB0aW1lclF1ZXVlID0gQ3JlYXRlVGltZXJRdWV1ZSgpOworICAg
ICAgICAgICAgICAgIGlmICh0aW1lcikKKyAgICAgICAgICAgICAgICAgICAgRGVsZXRlVGltZXJR
dWV1ZVRpbWVyKHRpbWVyUXVldWUsIHRpbWVyLCAwKTsKKyAgICAgICAgICAgICAgICB0aW1lclNl
dCA9IENyZWF0ZVRpbWVyUXVldWVUaW1lcigmdGltZXIsIHRpbWVyUXVldWUsIHF1ZXVlVGltZXJQ
cm9jLCAwLCBpbnRlcnZhbEluTVMsIDAsIFdUX0VYRUNVVEVJTlRJTUVSVEhSRUFEIHwgV1RfRVhF
Q1VURU9OTFlPTkNFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICh0aW1lclNldCkgeworICAgICAgICBpZiAodGltZXJJRCkgeworICAgICAgICAgICAgS2lsbFRp
bWVyKHRpbWVyV2luZG93SGFuZGxlLCB0aW1lcklEKTsKKyAgICAgICAgICAgIHRpbWVySUQgPSAw
OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGltZXJJRCA9IFNldFRpbWVyKHRp
bWVyV2luZG93SGFuZGxlLCBzaGFyZWRUaW1lcklELCBpbnRlcnZhbEluTVMsIDApOworICAgICAg
ICB0aW1lciA9IDA7CisgICAgfQorfQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3Rv
cCgpCit7CisgICAgaWYgKHRpbWVyUXVldWUgJiYgdGltZXIpIHsKKyAgICAgICAgRGVsZXRlVGlt
ZXJRdWV1ZVRpbWVyKHRpbWVyUXVldWUsIHRpbWVyLCAwKTsKKyAgICAgICAgdGltZXIgPSAwOwor
ICAgIH0KKworICAgIGlmICh0aW1lcklEKSB7CisgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRv
d0hhbmRsZSwgdGltZXJJRCk7CisgICAgICAgIHRpbWVySUQgPSAwOworICAgIH0KK30KKwordm9p
ZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUoKQoreworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZFRpbWVyV2luLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggM2QwMmIxOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjA1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgotCi0jaW5jbHVkZSAi
UGFnZS5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNl
SGFuZGxlLmgiCi0jaW5jbHVkZSAiV2lkZ2V0LmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvV2luZG93c0V4
dHJhcy5oPgotCi0jaW5jbHVkZSA8bW1zeXN0ZW0uaD4KLQotLy8gVGhlc2UgYXJlbid0IGluIHdp
bnVzZXIuaCB3aXRoIHRoZSBNU1ZTIDIwMDMgUGxhdGZvcm0gU0RLLCAKLS8vIHNvIHVzZSBkZWZh
dWx0IHZhbHVlcyBpbiB0aGF0IGNhc2UuCi0jaWZuZGVmIFVTRVJfVElNRVJfTUlOSU1VTQotI2Rl
ZmluZSBVU0VSX1RJTUVSX01JTklNVU0gMHgwMDAwMDAwQQotI2VuZGlmCi0KLSNpZm5kZWYgVVNF
Ul9USU1FUl9NQVhJTVVNCi0jZGVmaW5lIFVTRVJfVElNRVJfTUFYSU1VTSAweDdGRkZGRkZGCi0j
ZW5kaWYKLQotI2lmbmRlZiBRU19SQVdJTlBVVAotI2RlZmluZSBRU19SQVdJTlBVVCAgICAgICAg
IDB4MDQwMAotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIFVJTlQgdGlt
ZXJJRDsKLXN0YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOwotCi1zdGF0
aWMgSEFORExFIHRpbWVyOwotc3RhdGljIEhXTkQgdGltZXJXaW5kb3dIYW5kbGUgPSAwOwotY29u
c3QgTFBDV1NUUiBrVGltZXJXaW5kb3dDbGFzc05hbWUgPSBMIlRpbWVyV2luZG93Q2xhc3MiOwot
Ci1zdGF0aWMgVUlOVCB0aW1lckZpcmVkTWVzc2FnZSA9IDA7Ci1zdGF0aWMgSEFORExFIHRpbWVy
UXVldWU7Ci1zdGF0aWMgYm9vbCBoaWdoUmVzVGltZXJBY3RpdmU7Ci1zdGF0aWMgYm9vbCBwcm9j
ZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlID0gZmFsc2U7Ci1zdGF0aWMgTE9ORyBwZW5kaW5nVGlt
ZXJzOwotCi1jb25zdCBpbnQgdGltZXJSZXNvbHV0aW9uID0gMTsgLy8gVG8gaW1wcm92ZSB0aW1l
ciByZXNvbHV0aW9uLCB3ZSBjYWxsIHRpbWVCZWdpblBlcmlvZC90aW1lRW5kUGVyaW9kIHdpdGgg
dGhpcyB2YWx1ZSB0byBpbmNyZWFzZSB0aW1lciByZXNvbHV0aW9uIHRvIDFtcy4KLWNvbnN0IGlu
dCBoaWdoUmVzb2x1dGlvblRocmVzaG9sZE1zZWMgPSAxNjsgLy8gT25seSBhY3RpdmF0ZSBoaWdo
LXJlcyB0aW1lciBmb3Igc3ViLTE2bXMgdGltZXJzIChXaW5kb3dzIGNhbiBmaXJlIHRpbWVycyBh
dCAxNm1zIGludGVydmFscyB3aXRob3V0IGNoYW5naW5nIHRoZSBzeXN0ZW0gcmVzb2x1dGlvbiku
Ci1jb25zdCBpbnQgc3RvcEhpZ2hSZXNUaW1lckluTXNlYyA9IDMwMDsgLy8gU3RvcCBoaWdoLXJl
cyB0aW1lciBhZnRlciAwLjMgc2Vjb25kcyB0byBsZXNzZW4gcG93ZXIgY29uc3VtcHRpb24gKHdl
IGRvbid0IHVzZSBhIHNtYWxsZXIgdGltZSBzaW5jZSBvc2NpbGxhdGluZyBiZXR3ZWVuIGhpZ2gg
YW5kIGxvdyByZXNvbHV0aW9uIGJyZWFrcyB0aW1lciBhY2N1cmFjeSBvbiBYUCkuCi0KLWVudW0g
ewotICAgIHNoYXJlZFRpbWVySUQgPSAxMDAwLAotICAgIGVuZEhpZ2hSZXNUaW1lcklEID0gMTAw
MSwKLX07Ci0KLUxSRVNVTFQgQ0FMTEJBQ0sgVGltZXJXaW5kb3dXbmRQcm9jKEhXTkQgaFduZCwg
VUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQotewotICAgIGlmICht
ZXNzYWdlID09IFdNX1RJTUVSKSB7Ci0gICAgICAgIGlmICh3UGFyYW0gPT0gc2hhcmVkVGltZXJJ
RCkgewotICAgICAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCBzaGFyZWRUaW1l
cklEKTsKLSAgICAgICAgICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbigpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKHdQYXJhbSA9PSBlbmRIaWdoUmVzVGltZXJJRCkgewotICAgICAg
ICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCBlbmRIaWdoUmVzVGltZXJJRCk7Ci0g
ICAgICAgICAgICBoaWdoUmVzVGltZXJBY3RpdmUgPSBmYWxzZTsKLSAgICAgICAgICAgIHRpbWVF
bmRQZXJpb2QodGltZXJSZXNvbHV0aW9uKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAobWVz
c2FnZSA9PSB0aW1lckZpcmVkTWVzc2FnZSkgewotICAgICAgICBJbnRlcmxvY2tlZEV4Y2hhbmdl
KCZwZW5kaW5nVGltZXJzLCAwKTsKLSAgICAgICAgcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2Fn
ZSA9IHRydWU7Ci0gICAgICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbigpOwotICAgICAgICBw
cm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlID0gZmFsc2U7Ci0gICAgfSBlbHNlCi0gICAgICAg
IHJldHVybiBEZWZXaW5kb3dQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKLQot
ICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplT2ZmU2NyZWVuVGltZXJX
aW5kb3coKQotewotICAgIGlmICh0aW1lcldpbmRvd0hhbmRsZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgV05EQ0xBU1NFWCB3Y2V4OwotICAgIG1lbXNldCgmd2NleCwgMCwgc2l6ZW9mKFdORENM
QVNTRVgpKTsKLSAgICB3Y2V4LmNiU2l6ZSA9IHNpemVvZihXTkRDTEFTU0VYKTsKLQotICAgIHdj
ZXgubHBmblduZFByb2MgICAgPSBUaW1lcldpbmRvd1duZFByb2M7Ci0gICAgd2NleC5oSW5zdGFu
Y2UgICAgICA9IFdlYkNvcmU6Omluc3RhbmNlSGFuZGxlKCk7Ci0gICAgd2NleC5scHN6Q2xhc3NO
YW1lICA9IGtUaW1lcldpbmRvd0NsYXNzTmFtZTsKLSAgICBSZWdpc3RlckNsYXNzRXgoJndjZXgp
OwotCi0gICAgdGltZXJXaW5kb3dIYW5kbGUgPSBDcmVhdGVXaW5kb3coa1RpbWVyV2luZG93Q2xh
c3NOYW1lLCAwLCAwLAotICAgICAgIENXX1VTRURFRkFVTFQsIDAsIENXX1VTRURFRkFVTFQsIDAs
IEhXTkRfTUVTU0FHRSwgMCwgV2ViQ29yZTo6aW5zdGFuY2VIYW5kbGUoKSwgMCk7Ci0KLSAgICB0
aW1lckZpcmVkTWVzc2FnZSA9IFJlZ2lzdGVyV2luZG93TWVzc2FnZShMImNvbS5hcHBsZS5XZWJL
aXQuVGltZXJGaXJlZCIpOwotfQotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2
b2lkICgqZikoKSkKLXsKLSAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gPSBmOwotfQotCi1z
dGF0aWMgdm9pZCBOVEFQSSBxdWV1ZVRpbWVyUHJvYyhQVk9JRCwgQk9PTEVBTikKLXsKLSAgICBp
ZiAoSW50ZXJsb2NrZWRJbmNyZW1lbnQoJnBlbmRpbmdUaW1lcnMpID09IDEpCi0gICAgICAgIFBv
c3RNZXNzYWdlKHRpbWVyV2luZG93SGFuZGxlLCB0aW1lckZpcmVkTWVzc2FnZSwgMCwgMCk7Ci19
Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQotewot
ICAgIEFTU0VSVChzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOwotCi0gICAgdW5zaWduZWQgaW50
ZXJ2YWxJbk1TOwotICAgIGludGVydmFsICo9IDEwMDA7Ci0gICAgaWYgKGludGVydmFsID4gVVNF
Ul9USU1FUl9NQVhJTVVNKQotICAgICAgICBpbnRlcnZhbEluTVMgPSBVU0VSX1RJTUVSX01BWElN
VU07Ci0gICAgZWxzZQotICAgICAgICBpbnRlcnZhbEluTVMgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaW50ZXJ2YWwpOwotCi0gICAgaW5pdGlhbGl6ZU9mZlNjcmVlblRpbWVyV2luZG93KCk7Ci0g
ICAgYm9vbCB0aW1lclNldCA9IGZhbHNlOwotCi0gICAgaWYgKFNldHRpbmdzOjpzaG91bGRVc2VI
aWdoUmVzb2x1dGlvblRpbWVycygpKSB7Ci0gICAgICAgIGlmIChpbnRlcnZhbCA8IGhpZ2hSZXNv
bHV0aW9uVGhyZXNob2xkTXNlYykgewotICAgICAgICAgICAgaWYgKCFoaWdoUmVzVGltZXJBY3Rp
dmUpIHsKLSAgICAgICAgICAgICAgICBoaWdoUmVzVGltZXJBY3RpdmUgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIHRpbWVCZWdpblBlcmlvZCh0aW1lclJlc29sdXRpb24pOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgU2V0VGltZXIodGltZXJXaW5kb3dIYW5kbGUsIGVuZEhpZ2hSZXNUaW1l
cklELCBzdG9wSGlnaFJlc1RpbWVySW5Nc2VjLCAwKTsKLSAgICAgICAgfQotCi0gICAgICAgIERX
T1JEIHF1ZXVlU3RhdHVzID0gTE9XT1JEKEdldFF1ZXVlU3RhdHVzKFFTX1BBSU5UIHwgUVNfTU9V
U0VCVVRUT04gfCBRU19LRVkgfCBRU19SQVdJTlBVVCkpOwotCi0gICAgICAgIC8vIFdpbjMyIGhh
cyBhIHRyaS1sZXZlbCBxdWV1ZSB3aXRoIGFwcGxpY2F0aW9uIG1lc3NhZ2VzID4gdXNlciBpbnB1
dCA+IFdNX1BBSU5UL1dNX1RJTUVSLgotCi0gICAgICAgIC8vIElmIHRoZSBxdWV1ZSBkb2Vzbid0
IGNvbnRhaW5zIGlucHV0IGV2ZW50cywgd2UgdXNlIGEgaGlnaGVyIHByaW9ydHkgdGltZXIgZXZl
bnQgcG9zdGluZyBtZWNoYW5pc20uCi0gICAgICAgIGlmICghKHF1ZXVlU3RhdHVzICYgKFFTX01P
VVNFQlVUVE9OIHwgUVNfS0VZIHwgUVNfUkFXSU5QVVQpKSkgewotICAgICAgICAgICAgaWYgKGlu
dGVydmFsSW5NUyA8IFVTRVJfVElNRVJfTUlOSU1VTSAmJiAhcHJvY2Vzc2luZ0N1c3RvbVRpbWVy
TWVzc2FnZSAmJiAhKHF1ZXVlU3RhdHVzICYgUVNfUEFJTlQpKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gQ2FsbCBQb3N0TWVzc2FnZSBpbW1lZGlhdGVseSBpZiB0aGUgdGltZXIgaXMgYWxyZWFkeSBl
eHBpcmVkLCB1bmxlc3MgYSBwYWludCBpcyBwZW5kaW5nLgotICAgICAgICAgICAgICAgIC8vICh3
ZSBwcmlvcml0aXplIHBhaW50cyBvdmVyIHRpbWVycykKLSAgICAgICAgICAgICAgICBpZiAoSW50
ZXJsb2NrZWRJbmNyZW1lbnQoJnBlbmRpbmdUaW1lcnMpID09IDEpCi0gICAgICAgICAgICAgICAg
ICAgIFBvc3RNZXNzYWdlKHRpbWVyV2luZG93SGFuZGxlLCB0aW1lckZpcmVkTWVzc2FnZSwgMCwg
MCk7Ci0gICAgICAgICAgICAgICAgdGltZXJTZXQgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGRlbGF5IHRoZSBQb3N0TWVzc2FnZSB2
aWEgYSBDcmVhdGVUaW1lclF1ZXVlVGltZXIKLSAgICAgICAgICAgICAgICBpZiAoIXRpbWVyUXVl
dWUpCi0gICAgICAgICAgICAgICAgICAgIHRpbWVyUXVldWUgPSBDcmVhdGVUaW1lclF1ZXVlKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKHRpbWVyKQotICAgICAgICAgICAgICAgICAgICBEZWxldGVU
aW1lclF1ZXVlVGltZXIodGltZXJRdWV1ZSwgdGltZXIsIDApOwotICAgICAgICAgICAgICAgIHRp
bWVyU2V0ID0gQ3JlYXRlVGltZXJRdWV1ZVRpbWVyKCZ0aW1lciwgdGltZXJRdWV1ZSwgcXVldWVU
aW1lclByb2MsIDAsIGludGVydmFsSW5NUywgMCwgV1RfRVhFQ1VURUlOVElNRVJUSFJFQUQgfCBX
VF9FWEVDVVRFT05MWU9OQ0UpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgaWYgKHRpbWVyU2V0KSB7Ci0gICAgICAgIGlmICh0aW1lcklEKSB7Ci0gICAgICAgICAgICBL
aWxsVGltZXIodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVySUQpOwotICAgICAgICAgICAgdGltZXJJ
RCA9IDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICB0aW1lcklEID0gU2V0VGlt
ZXIodGltZXJXaW5kb3dIYW5kbGUsIHNoYXJlZFRpbWVySUQsIGludGVydmFsSW5NUywgMCk7Ci0g
ICAgICAgIHRpbWVyID0gMDsKLSAgICB9Ci19Ci0KLXZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKLXsK
LSAgICBpZiAodGltZXJRdWV1ZSAmJiB0aW1lcikgewotICAgICAgICBEZWxldGVUaW1lclF1ZXVl
VGltZXIodGltZXJRdWV1ZSwgdGltZXIsIDApOwotICAgICAgICB0aW1lciA9IDA7Ci0gICAgfQot
Ci0gICAgaWYgKHRpbWVySUQpIHsKLSAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFuZGxl
LCB0aW1lcklEKTsKLSAgICAgICAgdGltZXJJRCA9IDA7Ci0gICAgfQotfQotCi12b2lkIGludmFs
aWRhdGVTaGFyZWRUaW1lcigpCi17Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clJ1bkxvb3AuY3BwCmluZGV4IGU4MTIzMDguLjY1OWQwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFdvcmtlclNoYXJlZFRpbWVyIDogcHVibGljIFNoYXJlZFRpbWVyIHsK
K2NsYXNzIFdvcmtlclNoYXJlZFRpbWVyIGZpbmFsIDogcHVibGljIFNoYXJlZFRpbWVyIHsKIHB1
YmxpYzoKICAgICBXb3JrZXJTaGFyZWRUaW1lcigpCiAgICAgICAgIDogbV9zaGFyZWRUaW1lckZ1
bmN0aW9uKDApCkBAIC01MCwxNiArNTAsMTYgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFNo
YXJlZFRpbWVyIGludGVyZmFjZS4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbih2
b2lkICgqZnVuY3Rpb24pKCkpIHsgbV9zaGFyZWRUaW1lckZ1bmN0aW9uID0gZnVuY3Rpb247IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkgeyBtX25l
eHRGaXJlVGltZSA9IGludGVydmFsICsgY3VycmVudFRpbWUoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBzdG9wKCkgeyBtX25leHRGaXJlVGltZSA9IDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rmly
ZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikgb3ZlcnJpZGUgeyBt
X3NoYXJlZFRpbWVyRnVuY3Rpb24gPSBXVEY6Om1vdmUoZnVuY3Rpb24pOyB9CisgICAgdmlydHVh
bCB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpIG92ZXJyaWRlIHsgbV9uZXh0
RmlyZVRpbWUgPSBpbnRlcnZhbCArIGN1cnJlbnRUaW1lKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpIG92ZXJyaWRlIHsgbV9uZXh0RmlyZVRpbWUgPSAwOyB9CiAKICAgICBib29sIGlzQWN0
aXZlKCkgeyByZXR1cm4gbV9zaGFyZWRUaW1lckZ1bmN0aW9uICYmIG1fbmV4dEZpcmVUaW1lOyB9
CiAgICAgZG91YmxlIGZpcmVUaW1lKCkgeyByZXR1cm4gbV9uZXh0RmlyZVRpbWU7IH0KICAgICB2
b2lkIGZpcmUoKSB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbigpOyB9CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCAoKm1fc2hhcmVkVGltZXJGdW5jdGlvbikoKTsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gbV9zaGFyZWRUaW1lckZ1bmN0aW9uOwogICAgIGRvdWJsZSBtX25leHRGaXJlVGltZTsKIH07
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264005</attachid>
            <date>2015-10-25 03:51:51 -0700</date>
            <delta_ts>2015-10-25 05:59:36 -0700</delta_ts>
            <desc>Fix EFL build</desc>
            <filename>wcore-shared-timer.diff</filename>
            <type>text/plain</type>
            <size>52158</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOThmM2VhNC4uYjIwNjMxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMDksNiArMjEwOSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9MaW5rSGFzaC5jcHAKICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmNwcAogICAgIHBsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuY3BwCisgICAgcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVy
LmNwcAogICAgIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKICAgICBwbGF0Zm9y
bS9Ob3RJbXBsZW1lbnRlZC5jcHAKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDVjYzFlNzEuLjBhMGFkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAor
MjAxNS0xMC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
KyAgICAgICAgTWFrZSBldmVyeSBwb3J0IGltcGxlbWVudCBNYWluVGhyZWFkU2hhcmVkVGltZXIg
aW5zdGVhZCBvZiB1c2luZyBnbG9iYWwgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIE1haW5UaHJlYWRTaGFyZWRUaW1lciB0byBp
dHMgb3duIGZpbGVzIGFuZCBhZGQgdGhlIGNvbW1vbgorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0
aGVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgTWFpblRocmVhZFNoYXJlZFRp
bWVyLmNwcC4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogVXBkYXRlIGZpbGVuYW1lcy4K
KyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpNYWluVGhyZWFkU2hhcmVkVGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6ZmlyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwLgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZFRpbWVyLmg6IFJlbW92ZSBNYWluVGhyZWFkU2hhcmVkVGltZXIKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gYW5kIHJlaW5kZW50IHRoZSBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkVGltZXI6OlNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVy
Ojp+U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXI6OmludmFsaWRh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRUaW1lcnM6OlRocmVhZFRpbWVycyk6IFVzZSBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnNpbmdsZXRvbigpLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzZXRTaGFy
ZWRUaW1lcik6IFVzZSBhIGxhbWJkYSBmdW5jdGlvbgorICAgICAgICBpbnN0ZWFkIG9mIGEgcG9p
bnRlciB0byBhIHN0YXRpYyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6
OnNoYXJlZFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRp
bWVycy5oOiBSZW1vdmVkIHVuc3VzZWQgc3RhdGljIG1ldGhvZCBzaGFyZWRUaW1lckZpcmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0dXBQb3dlck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6cmVzdGFydFNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2Vm
bC9NYWluVGhyZWFkU2hhcmVkVGltZXJFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnRp
bWVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVy
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0ay5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsu
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50
ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJXaW5kb3dXbmRQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6
OmluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpxdWV1
ZVRpbWVyUHJvYyk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNl
dEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlk
YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOiBVcGRhdGUgV29ya2Vy
U2hhcmVkVGltZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24gdG8gdXNlIHN0ZDo6ZnVuY3Rpb24g
aW5zdGVhZCBvZiBhIHBvaW50ZXIuIEFsc28KKyAgICAgICAgbWFyayB0aGUgY2xhc3MgYXMgZmlu
YWwgYW5kIHRoZSB2aXJ0dWFsIGltcGxlbWVudGF0aW9ucyBhcyBvdmVycmlkZS4KKwogMjAxNS0x
MC0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAg
ICAgIFVzZSBJbXBsZW1lbnRlZEFzIGZvciBNZWRpYURldmljZXMuZ2V0VXNlck1lZGlhRnJvbUpT
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDljYzExNTcuLjA0MTI3OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMTMsMTMgKzExMywxMyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9lZmwvTG9jYWxpemVkU3RyaW5nc0VmbC5jcHAKICAg
ICBwbGF0Zm9ybS9lZmwvTG9nZ2luZ0VmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvTUlNRVR5cGVS
ZWdpc3RyeUVmbC5jcHAKKyAgICBwbGF0Zm9ybS9lZmwvTWFpblRocmVhZFNoYXJlZFRpbWVyRWZs
LmNwcAogICAgIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcAogICAgIHBsYXRmb3JtL2Vm
bC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
TW91c2VFdmVudEVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1TY3JlZW5FZmwuY3Bw
CiAgICAgcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAKICAgICBwbGF0Zm9y
bS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwCi0gICAgcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVy
RWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9Tb3VuZEVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwv
VGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGJhYWFjYjkuLmEyMDlhOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC0xNjEsOCArMTYxLDggQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0
ay9Mb2dnaW5nR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9NSU1FVHlwZVJlZ2lzdHJ5R3RrLmNw
cAorICAgIHBsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsuY3BwCiAgICAgcGxh
dGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKLSAgICBwbGF0Zm9ybS9ndGsvU2hhcmVkVGlt
ZXJHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKICAgICBw
bGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmlu
ZGV4IDk3MDQ4ODYuLmNlNjg0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yNjMs
MTAgKzI2MywxMCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9j
Zi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiAg
ICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisgICAgcGxhdGZvcm0vY2YvTWFpblRo
cmVhZFNoYXJlZFRpbWVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5
U29mdExpbmsuY3BwCiAgICAgcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogICAgIHBs
YXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1NoYXJlZFRpbWVy
Q0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCiAKICAgICBwbGF0Zm9ybS9jb2NvYS9D
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFr
ZQppbmRleCAwMjExZjY4Li40ZWY4YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAt
MTI0LDYgKzEyNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L3dpbi9Mb2dnaW5nV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCisgICAg
cGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKICAgICBwbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAKICAg
ICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcApAQCAtMTMzLDcgKzEzNCw2
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9TY3JvbGxi
YXJUaGVtZVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAog
ICAgIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCi0gICAgcGxhdGZvcm0vd2luL1No
YXJlZFRpbWVyV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9Tb3VuZFdpbi5jcHAKICAgICBwbGF0
Zm9ybS93aW4vU3RydWN0dXJlZEV4Y2VwdGlvbkhhbmRsZXJTdXBwcmVzc29yLmNwcAogICAgIHBs
YXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNjdmMTdjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZFNo
YXJlZFRpbWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWFpblRocmVhZFNoYXJlZFRp
bWVyJiBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPE1haW5UaHJlYWRTaGFyZWRUaW1lcj4gaW5zdGFuY2U7CisgICAgcmV0dXJu
IGluc3RhbmNlOworfQorCitNYWluVGhyZWFkU2hhcmVkVGltZXI6Ok1haW5UaHJlYWRTaGFyZWRU
aW1lcigpCit7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0
aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZpcmVkRnVuY3Rpb24pCit7CisgICAgUkVMRUFT
RV9BU1NFUlQoIW1fZmlyZWRGdW5jdGlvbiB8fCAhZmlyZWRGdW5jdGlvbik7CisgICAgbV9maXJl
ZEZ1bmN0aW9uID0gV1RGOjptb3ZlKGZpcmVkRnVuY3Rpb24pOworfQorCit2b2lkIE1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6ZmlyZWQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2ZpcmVkRnVuY3Rp
b24pOworICAgIG1fZmlyZWRGdW5jdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGlt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMzFjNDMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaApAQCAt
MCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNYWluVGhyZWFk
U2hhcmVkVGltZXJfaAorI2RlZmluZSBNYWluVGhyZWFkU2hhcmVkVGltZXJfaAorCisjaW5jbHVk
ZSAiU2hhcmVkVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNYWluVGhyZWFkU2hhcmVkVGltZXIgZmluYWwgOiBw
dWJsaWMgU2hhcmVkVGltZXIgeworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxNYWlu
VGhyZWFkU2hhcmVkVGltZXI+OworcHVibGljOgorICAgIHN0YXRpYyBNYWluVGhyZWFkU2hhcmVk
VGltZXImIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3Vi
bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxp
ZGF0ZSgpIG92ZXJyaWRlOworCisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHByaXZhdGUs
IGJ1dCBDRiBhbmQgV2luZG93cyBpbXBsZW1lbnRhdGlvbnMKKyAgICAvLyBuZWVkIHRvIGNhbGwg
dGhpcyBmcm9tIHN0YXRpYyBtZXRob2RzIGF0IHRoZSBtb21lbnQuCisgICAgdm9pZCBmaXJlZCgp
IGNvbnN0OworCitwcml2YXRlOgorICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcigpOworCisgICAg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZmlyZWRGdW5jdGlvbiB7IG51bGxwdHIgfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1haW5UaHJlYWRTaGFyZWRUaW1l
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKaW5kZXggMjk5YzQ5OS4uYjkxOWJj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCkBAIC0zMSw1NCArMzEsMjIg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgLy8gRWFjaCB0aHJlYWQgaGFzIGl0cyBv
d24gc2luZ2xlIGluc3RhbmNlIG9mIHNoYXJlZCB0aW1lciwgd2hpY2ggaW1wbGVtZW50cyB0aGlz
IGludGVyZmFjZS4KLSAgICAvLyBUaGlzIGluc3RhbmNlIGlzIHNoYXJlZCBieSBhbGwgdGltZXJz
IGluIHRoZSB0aHJlYWQuCi0gICAgLy8gTm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHk7
IHVzZSB0aGUgVGltZXIgY2xhc3MgaW5zdGVhZC4KLSAgICBjbGFzcyBTaGFyZWRUaW1lciB7Ci0g
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYXJlZFRpbWVyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAgICAgICBTaGFyZWRUaW1lcigpIHsgfQotICAgICAg
ICB2aXJ0dWFsIH5TaGFyZWRUaW1lcigpIHt9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJl
ZEZ1bmN0aW9uKHZvaWQgKCopKCkpID0gMDsKLQotICAgICAgICAvLyBUaGUgZmlyZSBpbnRlcnZh
bCBpcyBpbiBzZWNvbmRzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IG1vbm90b25pYyBjbG9jayB0
aW1lLgotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZUludGVydmFsKGRvdWJsZSkgPSAwOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQg
aW52YWxpZGF0ZSgpIHsgfQotICAgIH07Ci0KLQotICAgIC8vIEltcGxlbWVudGVkIGJ5IHBvcnQg
KHNpbmNlIGl0IHByb3ZpZGVzIHRoZSBydW4gbG9vcCBmb3IgdGhlIG1haW4gdGhyZWFkKS4KLSAg
ICAvLyBGSVhNRTogbWFrZSBwb3J0cyBpbXBsZW1lbnQgTWFpblRocmVhZFNoYXJlZFRpbWVyIGRp
cmVjdGx5IGluc3RlYWQuCi0gICAgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9p
ZCAoKikoKSk7Ci0gICAgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUpOwot
ICAgIHZvaWQgc3RvcFNoYXJlZFRpbWVyKCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGlt
ZXIoKTsKLQotICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIFNoYXJlZFRpbWVyIGZvciB0aGUgbWFp
biB0aHJlYWQuCi0gICAgY2xhc3MgTWFpblRocmVhZFNoYXJlZFRpbWVyIGZpbmFsIDogcHVibGlj
IFNoYXJlZFRpbWVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlv
bih2b2lkICgqZnVuY3Rpb24pKCkpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNl
dFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbihmdW5jdGlvbik7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIHZvaWQgc2V0RmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoaW50ZXJ2
YWwpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBzdG9wU2hhcmVkVGltZXIoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGludmFsaWRhdGVTaGFyZWRUaW1lcigpOwotICAgICAgICB9Ci0gICAgfTsKKy8vIEVhY2ggdGhy
ZWFkIGhhcyBpdHMgb3duIHNpbmdsZSBpbnN0YW5jZSBvZiBzaGFyZWQgdGltZXIsIHdoaWNoIGlt
cGxlbWVudHMgdGhpcyBpbnRlcmZhY2UuCisvLyBUaGlzIGluc3RhbmNlIGlzIHNoYXJlZCBieSBh
bGwgdGltZXJzIGluIHRoZSB0aHJlYWQuCisvLyBOb3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJl
Y3RseTsgdXNlIHRoZSBUaW1lciBjbGFzcyBpbnN0ZWFkLgorY2xhc3MgU2hhcmVkVGltZXIgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYXJlZFRpbWVyKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkVGltZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5TaGFy
ZWRUaW1lcigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiYmKSA9IDA7CisKKyAgICAvLyBUaGUgZmlyZSBpbnRlcnZhbCBpcyBpbiBz
ZWNvbmRzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IG1vbm90b25pYyBjbG9jayB0aW1lLgorICAg
IHZpcnR1YWwgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN0b3AoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIHsgfQorfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFk
VGltZXJzLmNwcAppbmRleCAxMjMxY2EyLi4wMjI4MzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RocmVhZFRpbWVycy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJUaHJlYWRUaW1lcnMuaCIKIAorI2luY2x1ZGUgIk1haW5UaHJlYWRTaGFy
ZWRUaW1lci5oIgogI2luY2x1ZGUgIlNoYXJlZFRpbWVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkR2xv
YmFsRGF0YS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC00NywyNyArNDgsMjEgQEAgc3RhdGlj
IGNvbnN0IGRvdWJsZSBtYXhEdXJhdGlvbk9mRmlyaW5nVGltZXJzID0gMC4wNTA7CiAvLyBUaW1l
cnMgYXJlIGNyZWF0ZWQsIHN0YXJ0ZWQgYW5kIGZpcmVkIG9uIHRoZSBzYW1lIHRocmVhZCwgYW5k
IGVhY2ggdGhyZWFkIGhhcyBpdHMgb3duIFRocmVhZFRpbWVycwogLy8gY29weSB0byBrZWVwIHRo
ZSBoZWFwIGFuZCBhIHNldCBvZiBjdXJyZW50bHkgZmlyaW5nIHRpbWVycy4KIAotc3RhdGljIE1h
aW5UaHJlYWRTaGFyZWRUaW1lciogbWFpblRocmVhZFNoYXJlZFRpbWVyKCkKLXsKLSAgICBzdGF0
aWMgTWFpblRocmVhZFNoYXJlZFRpbWVyKiB0aW1lciA9IG5ldyBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI7Ci0gICAgcmV0dXJuIHRpbWVyOwotfQotCiBUaHJlYWRUaW1lcnM6OlRocmVhZFRpbWVycygp
CiAgICAgOiBtX3NoYXJlZFRpbWVyKDApCiAgICAgLCBtX2ZpcmluZ1RpbWVycyhmYWxzZSkKICAg
ICAsIG1fcGVuZGluZ1NoYXJlZFRpbWVyRmlyZVRpbWUoMCkKIHsKICAgICBpZiAoaXNVSVRocmVh
ZCgpKQotICAgICAgICBzZXRTaGFyZWRUaW1lcihtYWluVGhyZWFkU2hhcmVkVGltZXIoKSk7Cisg
ICAgICAgIHNldFNoYXJlZFRpbWVyKCZNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNpbmdsZXRvbigp
KTsKIH0KIAogLy8gQSB3b3JrZXIgdGhyZWFkIG1heSBpbml0aWFsaXplIFNoYXJlZFRpbWVyIGFm
dGVyIHNvbWUgdGltZXJzIGFyZSBjcmVhdGVkLgotLy8gQWxzbywgU2hhcmVkVGltZXIgY2FuIGJl
IHJlcGxhY2VkIHdpdGggMCBiZWZvcmUgYWxsIHRpbWVycyBhcmUgZGVzdHJveWVkLgorLy8gQWxz
bywgU2hhcmVkVGltZXIgY2FuIGJlIHJlcGxhY2VkIHdpdGggbnVsbHB0ciBiZWZvcmUgYWxsIHRp
bWVycyBhcmUgZGVzdHJveWVkLgogdm9pZCBUaHJlYWRUaW1lcnM6OnNldFNoYXJlZFRpbWVyKFNo
YXJlZFRpbWVyKiBzaGFyZWRUaW1lcikKIHsKICAgICBpZiAobV9zaGFyZWRUaW1lcikgewotICAg
ICAgICBtX3NoYXJlZFRpbWVyLT5zZXRGaXJlZEZ1bmN0aW9uKDApOworICAgICAgICBtX3NoYXJl
ZFRpbWVyLT5zZXRGaXJlZEZ1bmN0aW9uKG51bGxwdHIpOwogICAgICAgICBtX3NoYXJlZFRpbWVy
LT5zdG9wKCk7CiAgICAgICAgIG1fcGVuZGluZ1NoYXJlZFRpbWVyRmlyZVRpbWUgPSAwOwogICAg
IH0KQEAgLTc1LDcgKzcwLDcgQEAgdm9pZCBUaHJlYWRUaW1lcnM6OnNldFNoYXJlZFRpbWVyKFNo
YXJlZFRpbWVyKiBzaGFyZWRUaW1lcikKICAgICBtX3NoYXJlZFRpbWVyID0gc2hhcmVkVGltZXI7
CiAgICAgCiAgICAgaWYgKHNoYXJlZFRpbWVyKSB7Ci0gICAgICAgIG1fc2hhcmVkVGltZXItPnNl
dEZpcmVkRnVuY3Rpb24oVGhyZWFkVGltZXJzOjpzaGFyZWRUaW1lckZpcmVkKTsKKyAgICAgICAg
bV9zaGFyZWRUaW1lci0+c2V0RmlyZWRGdW5jdGlvbihbXSB7IHRocmVhZEdsb2JhbERhdGEoKS50
aHJlYWRUaW1lcnMoKS5zaGFyZWRUaW1lckZpcmVkSW50ZXJuYWwoKTsgfSk7CiAgICAgICAgIHVw
ZGF0ZVNoYXJlZFRpbWVyKCk7CiAgICAgfQogfQpAQCAtMTAxLDEyICs5Niw2IEBAIHZvaWQgVGhy
ZWFkVGltZXJzOjp1cGRhdGVTaGFyZWRUaW1lcigpCiAgICAgfQogfQogCi12b2lkIFRocmVhZFRp
bWVyczo6c2hhcmVkVGltZXJGaXJlZCgpCi17Ci0gICAgLy8gUmVkaXJlY3QgdG8gbm9uLXN0YXRp
YyBtZXRob2QuCi0gICAgdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnNoYXJlZFRp
bWVyRmlyZWRJbnRlcm5hbCgpOwotfQotCiB2b2lkIFRocmVhZFRpbWVyczo6c2hhcmVkVGltZXJG
aXJlZEludGVybmFsKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkgfHwgKCFpc1dlYlRo
cmVhZCgpICYmICFpc1VJVGhyZWFkKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZFRpbWVycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGlt
ZXJzLmgKaW5kZXggMTVkOWYzNy4uZTRmMjYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGhyZWFkVGltZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkVGltZXJzLmgKQEAgLTUxLDggKzUxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIGZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgc3RhdGljIHZvaWQgc2hhcmVkVGltZXJGaXJlZCgpOwotCiAgICAgICAgIHZvaWQgc2hh
cmVkVGltZXJGaXJlZEludGVybmFsKCk7CiAgICAgICAgIHZvaWQgZmlyZVRpbWVyc0luTmVzdGVk
RXZlbnRMb29wSW50ZXJuYWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmRhNjI0NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAgLTAsMCArMSwxMjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1haW5UaHJlYWRTaGFyZWRUaW1lci5oIgor
CisjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgorCisjaWYgUExBVEZPUk0oTUFDKQor
I2ltcG9ydCAiUG93ZXJPYnNlcnZlck1hYy5oIgorI2VsaWYgUExBVEZPUk0oSU9TKQorI2ltcG9y
dCAiV2ViQ29yZVRocmVhZC5oIgorI2ltcG9ydCAiV2ViQ29yZVRocmVhZFJ1bi5oIgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIENGUnVuTG9vcFRpbWVyUmVmIHNoYXJl
ZFRpbWVyOworc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCop
Oworc3RhdGljIHZvaWQgcmVzdGFydFNoYXJlZFRpbWVyKCk7CisKK3N0YXRpYyBjb25zdCBDRlRp
bWVJbnRlcnZhbCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlID0gc3RkOjpudW1lcmljX2xp
bWl0czxDRlRpbWVJbnRlcnZhbD46Om1heCgpOworCisjaWYgUExBVEZPUk0oSU9TKQorc3RhdGlj
IHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYs
IHZvaWQqLCBDRlN0cmluZ1JlZiwgY29uc3Qgdm9pZCosIENGRGljdGlvbmFyeVJlZikKK3sKKyAg
ICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgcmVzdGFydFNoYXJlZFRpbWVyKCk7CisgICAgfSk7
Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgc2V0dXBQb3dlck9ic2VydmVyKCkKK3sKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgc3RhdGljIFBvd2VyT2JzZXJ2ZXIqIHBvd2VyT2JzZXJ2ZXI7Cisg
ICAgaWYgKCFwb3dlck9ic2VydmVyKQorICAgICAgICBwb3dlck9ic2VydmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0U2hhcmVkVGltZXIpLnJlbGVhc2UoKTsKKyNl
bGlmIFBMQVRGT1JNKElPUykKKyAgICBzdGF0aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRp
b25Ob3RpZmljYXRpb24gPSBmYWxzZTsKKyAgICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlv
bk5vdGlmaWNhdGlvbikgeworICAgICAgICByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmlj
YXRpb24gPSB0cnVlOworICAgICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiBub3RpZmljYXRp
b25DZW50ZXIgPSBDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCk7CisgICAgICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIobm90aWZpY2F0aW9uQ2VudGVyLCBudWxs
cHRyLCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSwgQ0ZTVFIoIlVJQXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmVOb3RpZmljYXRpb24iKSwgbnVsbHB0ciwgQ0ZOb3RpZmljYXRpb25TdXNwZW5z
aW9uQmVoYXZpb3JDb2FsZXNjZSk7CisgICAgfQorI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIHRp
bWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKQoreworICAgIEF1dG9kcmFpbmVkUG9v
bCBwb29sOworICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2luZ2xldG9uKCkuZmlyZWQoKTsK
K30KKworc3RhdGljIHZvaWQgcmVzdGFydFNoYXJlZFRpbWVyKCkKK3sKKyAgICBpZiAoIXNoYXJl
ZFRpbWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNp
bmdsZXRvbigpLnN0b3AoKTsKKyAgICB0aW1lckZpcmVkKDAsIDApOworfQorCit2b2lkIE1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgpCit7CisgICAgaWYgKCFzaGFyZWRUaW1lcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRp
bWVyKTsKKyAgICBDRlJlbGVhc2Uoc2hhcmVkVGltZXIpOworICAgIHNoYXJlZFRpbWVyID0gbnVs
bHB0cjsKK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbChk
b3VibGUgaW50ZXJ2YWwpCit7CisgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlvbik7CisKKyAgICBD
RkFic29sdXRlVGltZSBmaXJlRGF0ZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50
ZXJ2YWw7CisgICAgaWYgKCFzaGFyZWRUaW1lcikgeworICAgICAgICBzaGFyZWRUaW1lciA9IENG
UnVuTG9vcFRpbWVyQ3JlYXRlKG51bGxwdHIsIGZpcmVEYXRlLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0
YW50RnV0dXJlLCAwLCAwLCB0aW1lckZpcmVkLCBudWxscHRyKTsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVkVGlt
ZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisjZWxzZQorICAgICAgICBDRlJ1bkxvb3BBZGRU
aW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHNoYXJlZFRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9u
TW9kZXMpOworI2VuZGlmCisKKyAgICAgICAgc2V0dXBQb3dlck9ic2VydmVyKCk7CisKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNo
YXJlZFRpbWVyLCBmaXJlRGF0ZSk7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpz
dG9wKCkKK3sKKyAgICBpZiAoIXNoYXJlZFRpbWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBD
RlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwga0NGVGltZUludGVydmFs
RGlzdGFudEZ1dHVyZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkVGltZXJDRi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDZmZDcwN2IuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvU2hhcmVkVGltZXJDRi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiU2hhcmVkVGltZXIuaCIKLQotI2luY2x1ZGUgPHd0
Zi9BdXRvZHJhaW5lZFBvb2wuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykKLSNpbXBvcnQgIlBvd2Vy
T2JzZXJ2ZXJNYWMuaCIKLSNlbGlmIFBMQVRGT1JNKElPUykKLSNpbXBvcnQgIldlYkNvcmVUaHJl
YWQuaCIKLSNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiBzaGFyZWRUaW1lcjsKLXN0YXRp
YyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOwotc3RhdGljIHZvaWQgdGltZXJG
aXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwotc3RhdGljIHZvaWQgcmVzdGFydFNoYXJl
ZFRpbWVyKCk7Ci0KLXN0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCBrQ0ZUaW1lSW50ZXJ2YWxE
aXN0YW50RnV0dXJlID0gc3RkOjpudW1lcmljX2xpbWl0czxDRlRpbWVJbnRlcnZhbD46Om1heCgp
OwotCi0jaWYgUExBVEZPUk0oSU9TKQotc3RhdGljIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmUoQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqLCBDRlN0cmluZ1JlZiwgY29uc3Qg
dm9pZCosIENGRGljdGlvbmFyeVJlZikKLXsKLSAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAg
cmVzdGFydFNoYXJlZFRpbWVyKCk7Ci0gICAgfSk7Ci19Ci0jZW5kaWYKLQotc3RhdGljIHZvaWQg
c2V0dXBQb3dlck9ic2VydmVyKCkKLXsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgc3RhdGljIFBv
d2VyT2JzZXJ2ZXIqIHBvd2VyT2JzZXJ2ZXI7Ci0gICAgaWYgKCFwb3dlck9ic2VydmVyKQotICAg
ICAgICBwb3dlck9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0
YXJ0U2hhcmVkVGltZXIpLnJlbGVhc2UoKTsKLSNlbGlmIFBMQVRGT1JNKElPUykKLSAgICBzdGF0
aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBmYWxzZTsKLSAg
ICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikgewotICAgICAgICBy
ZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSB0cnVlOwotICAgICAgICBDRk5v
dGlmaWNhdGlvbkNlbnRlclJlZiBub3RpZmljYXRpb25DZW50ZXIgPSBDRk5vdGlmaWNhdGlvbkNl
bnRlckdldExvY2FsQ2VudGVyKCk7Ci0gICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2Jz
ZXJ2ZXIobm90aWZpY2F0aW9uQ2VudGVyLCBudWxscHRyLCBhcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZSwgQ0ZTVFIoIlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24iKSwg
bnVsbHB0ciwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JDb2FsZXNjZSk7Ci0gICAg
fQotI2VuZGlmCi19Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpm
KSgpKQotewotICAgIEFTU0VSVCghc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uIHx8IHNoYXJlZFRp
bWVyRmlyZWRGdW5jdGlvbiA9PSBmKTsKLQotICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiA9
IGY7Ci19Ci0KLXN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQq
KQotewotICAgIEF1dG9kcmFpbmVkUG9vbCBwb29sOwotICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbigpOwotfQotCi1zdGF0aWMgdm9pZCByZXN0YXJ0U2hhcmVkVGltZXIoKQotewotICAgIGlm
ICghc2hhcmVkVGltZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0b3BTaGFyZWRUaW1lcigp
OwotICAgIHRpbWVyRmlyZWQoMCwgMCk7Ci19Ci0KLXZvaWQgaW52YWxpZGF0ZVNoYXJlZFRpbWVy
KCkKLXsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJ1
bkxvb3BUaW1lckludmFsaWRhdGUoc2hhcmVkVGltZXIpOwotICAgIENGUmVsZWFzZShzaGFyZWRU
aW1lcik7Ci0gICAgc2hhcmVkVGltZXIgPSBudWxscHRyOwotfQotCi12b2lkIHNldFNoYXJlZFRp
bWVyRmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBBU1NFUlQoc2hhcmVkVGlt
ZXJGaXJlZEZ1bmN0aW9uKTsKLQotICAgIENGQWJzb2x1dGVUaW1lIGZpcmVEYXRlID0gQ0ZBYnNv
bHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBpbnRlcnZhbDsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKSB7
Ci0gICAgICAgIHNoYXJlZFRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUobnVsbHB0ciwgZmly
ZURhdGUsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUsIDAsIDAsIHRpbWVyRmlyZWQsIG51
bGxwdHIpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoV2Vi
VGhyZWFkUnVuTG9vcCgpLCBzaGFyZWRUaW1lciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSNl
bHNlCi0gICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgc2hh
cmVkVGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0jZW5kaWYKLQotICAgICAgICBzZXR1
cFBvd2VyT2JzZXJ2ZXIoKTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZSdW5M
b29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIsIGZpcmVEYXRlKTsKLX0KLQotdm9p
ZCBzdG9wU2hhcmVkVGltZXIoKQotewotICAgIGlmICghc2hhcmVkVGltZXIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyLCBr
Q0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL01haW5UaHJlYWRTaGFy
ZWRUaW1lckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTWFpblRocmVhZFNo
YXJlZFRpbWVyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTA2
YzI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL01haW5U
aHJlYWRTaGFyZWRUaW1lckVmbC5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgorICogICAgICAgICAgIChDKSAy
MDA4IEFmb25zbyBSYWJlbG8gQ29zdGEgSnIuCisgKiAgICAgICAgICAgKEMpIDIwMDktMjAxMCBQ
cm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogICAgICAgICAgIChDKSAyMDA5LTIwMTAgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZFNoYXJlZFRpbWVy
LmgiCisKKyNpbmNsdWRlIDxFY29yZS5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgRWNvcmVfVGltZXIqIHNoYXJlZFRpbWVy
OworCitzdGF0aWMgRWluYV9Cb29sIHRpbWVyRXZlbnQodm9pZCopCit7CisgICAgc2hhcmVkVGlt
ZXIgPSBudWxscHRyOworICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2luZ2xldG9uKCkuZmly
ZWQoKTsKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOworfQorCit2b2lkIE1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6c3RvcCgpCit7CisgICAgaWYgKHNoYXJlZFRpbWVyKSB7CisgICAg
ICAgIGVjb3JlX3RpbWVyX2RlbChzaGFyZWRUaW1lcik7CisgICAgICAgIHNoYXJlZFRpbWVyID0g
bnVsbHB0cjsKKyAgICB9Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJl
SW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIHN0b3AoKTsKKyAgICBzaGFyZWRUaW1l
ciA9IGVjb3JlX3RpbWVyX2xvb3BfYWRkKGludGVydmFsLCB0aW1lckV2ZW50LCBudWxscHRyKTsK
K30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUoKQoreworfQorCit9
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVm
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGJhMDM2Li4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVmbC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuCi0gKiAgICAgICAgICAgKEMpIDIwMDggQWZvbnNvIFJhYmVsbyBDb3N0YSBK
ci4KLSAqICAgICAgICAgICAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1z
Ci0gKiAgICAgICAgICAgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgotCi0jaW5jbHVkZSA8RWNvcmUuaD4KLSNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIEVj
b3JlX1RpbWVyICpfc2hhcmVkVGltZXIgPSAwOwotCi1zdGF0aWMgdm9pZCAoKl90aW1lckZ1bmN0
aW9uKSgpOwotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqZnVuYyko
KSkKLXsKLSAgICBfdGltZXJGdW5jdGlvbiA9IGZ1bmM7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jvb2wg
dGltZXJFdmVudCh2b2lkKikKLXsKLSAgICBfc2hhcmVkVGltZXIgPSAwOwotICAgIGlmIChfdGlt
ZXJGdW5jdGlvbikKLSAgICAgICAgX3RpbWVyRnVuY3Rpb24oKTsKLQotICAgIHJldHVybiBFQ09S
RV9DQUxMQkFDS19DQU5DRUw7Ci19Ci0KLXZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKLXsKLSAgICBp
ZiAoX3NoYXJlZFRpbWVyKSB7Ci0gICAgICAgIGVjb3JlX3RpbWVyX2RlbChfc2hhcmVkVGltZXIp
OwotICAgICAgICBfc2hhcmVkVGltZXIgPSAwOwotICAgIH0KLX0KLQotdm9pZCBhZGROZXdUaW1l
cihkb3VibGUgaW50ZXJ2YWwpCi17Ci0gICAgc3RvcFNoYXJlZFRpbWVyKCk7Ci0KLSAgICBfc2hh
cmVkVGltZXIgPSBlY29yZV90aW1lcl9sb29wX2FkZChpbnRlcnZhbCwgdGltZXJFdmVudCwgMCk7
Ci19Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQot
ewotICAgIGFkZE5ld1RpbWVyKGludGVydmFsKTsKLX0KLQotdm9pZCBpbnZhbGlkYXRlU2hhcmVk
VGltZXIoKQotewotfQotCi19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODdkOWI1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsuY3BwCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21h
aWwuY29tCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRo
cmVhZFNoYXJlZFRpbWVyLmgiCisKKyNpbmNsdWRlIDx3dGYvZ2xpYi9HTWFpbkxvb3BTb3VyY2Uu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgR01haW5Mb29wU291cmNlIGdTaGFy
ZWRUaW1lcjsKKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbChk
b3VibGUgaW50ZXJ2YWwpCit7CisgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlvbik7CisKKyAgICAv
LyBUaGlzIGlzIEdES19QUklPUklUWV9SRURSQVcsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIGRlcGVu
ZCBvbiBHREsgaGVyZSBqdXN0IHRvIHVzZSBhIGNvbnN0YW50LgorICAgIHN0YXRpYyBjb25zdCBp
bnQgcHJpb3JpdHkgPSBHX1BSSU9SSVRZX0hJR0hfSURMRSArIDIwOworICAgIGdTaGFyZWRUaW1l
ci5zY2hlZHVsZUFmdGVyRGVsYXkoIltXZWJLaXRdIHNoYXJlZFRpbWVyVGltZW91dENhbGxiYWNr
IiwgW3RoaXNdIHsgZmlyZWQoKTsgfSwKKyAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nh
c3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJs
ZT4oaW50ZXJ2YWwpKSwgcHJpb3JpdHkpOworfQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1l
cjo6c3RvcCgpCit7CisgICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOworfQorCit2b2lkIE1haW5U
aHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgpCit7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjZmY3ZDczLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TaGFyZWRUaW1lckd0ay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNv
bQotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZFRpbWVy
LmgiCi0KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HTWFpbkxvb3BTb3VyY2UuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdGF0aWMgR01haW5Mb29wU291cmNlIGdTaGFyZWRUaW1lcjsKLXN0YXRp
YyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOwotCi12b2lkIHNldFNoYXJlZFRp
bWVyRmlyZWRGdW5jdGlvbih2b2lkICgqZikoKSkKLXsKLSAgICBzaGFyZWRUaW1lckZpcmVkRnVu
Y3Rpb24gPSBmOwotICAgIGlmICghc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKQotICAgICAgICBn
U2hhcmVkVGltZXIuY2FuY2VsKCk7Ci19Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2
YWwoZG91YmxlIGludGVydmFsKQotewotICAgIEFTU0VSVChzaGFyZWRUaW1lckZpcmVkRnVuY3Rp
b24pOwotCi0gICAgLy8gVGhpcyBpcyBHREtfUFJJT1JJVFlfUkVEUkFXLCBidXQgd2UgZG9uJ3Qg
d2FudCB0byBkZXBlbmQgb24gR0RLIGhlcmUganVzdCB0byB1c2UgYSBjb25zdGFudC4KLSAgICBz
dGF0aWMgY29uc3QgaW50IHByaW9yaXR5ID0gR19QUklPUklUWV9ISUdIX0lETEUgKyAyMDsKLSAg
ICBnU2hhcmVkVGltZXIuc2NoZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSBzaGFyZWRUaW1lclRp
bWVvdXRDYWxsYmFjayIsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPihzaGFyZWRUaW1lckZpcmVkRnVu
Y3Rpb24pLAotICAgICAgICBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6
bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihpbnRlcnZhbCkpLCBw
cmlvcml0eSk7Ci19Ci0KLXZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKLXsKLSAgICBnU2hhcmVkVGlt
ZXIuY2FuY2VsKCk7Ci19Ci0KLXZvaWQgaW52YWxpZGF0ZVNoYXJlZFRpbWVyKCkKLXsKLX0KLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFy
ZWRUaW1lcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTWFpblRocmVhZFNo
YXJlZFRpbWVyV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTY2
MGRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01haW5U
aHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKQEAgLTAsMCArMSwxOTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJNYWluVGhyZWFkU2hhcmVkVGltZXIuaCIKKworI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYkNvcmVJbnN0YW5jZUhhbmRsZS5oIgor
I2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KKwor
I2luY2x1ZGUgPG1tc3lzdGVtLmg+CisKKy8vIFRoZXNlIGFyZW4ndCBpbiB3aW51c2VyLmggd2l0
aCB0aGUgTVNWUyAyMDAzIFBsYXRmb3JtIFNESywgCisvLyBzbyB1c2UgZGVmYXVsdCB2YWx1ZXMg
aW4gdGhhdCBjYXNlLgorI2lmbmRlZiBVU0VSX1RJTUVSX01JTklNVU0KKyNkZWZpbmUgVVNFUl9U
SU1FUl9NSU5JTVVNIDB4MDAwMDAwMEEKKyNlbmRpZgorCisjaWZuZGVmIFVTRVJfVElNRVJfTUFY
SU1VTQorI2RlZmluZSBVU0VSX1RJTUVSX01BWElNVU0gMHg3RkZGRkZGRgorI2VuZGlmCisKKyNp
Zm5kZWYgUVNfUkFXSU5QVVQKKyNkZWZpbmUgUVNfUkFXSU5QVVQgICAgICAgICAweDA0MDAKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBVSU5UIHRpbWVySUQ7CisKK3N0
YXRpYyBIQU5ETEUgdGltZXI7CitzdGF0aWMgSFdORCB0aW1lcldpbmRvd0hhbmRsZSA9IDA7Citj
b25zdCBMUENXU1RSIGtUaW1lcldpbmRvd0NsYXNzTmFtZSA9IEwiVGltZXJXaW5kb3dDbGFzcyI7
CisKK3N0YXRpYyBVSU5UIHRpbWVyRmlyZWRNZXNzYWdlID0gMDsKK3N0YXRpYyBIQU5ETEUgdGlt
ZXJRdWV1ZTsKK3N0YXRpYyBib29sIGhpZ2hSZXNUaW1lckFjdGl2ZTsKK3N0YXRpYyBib29sIHBy
b2Nlc3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgPSBmYWxzZTsKK3N0YXRpYyBMT05HIHBlbmRpbmdU
aW1lcnM7CisKK2NvbnN0IGludCB0aW1lclJlc29sdXRpb24gPSAxOyAvLyBUbyBpbXByb3ZlIHRp
bWVyIHJlc29sdXRpb24sIHdlIGNhbGwgdGltZUJlZ2luUGVyaW9kL3RpbWVFbmRQZXJpb2Qgd2l0
aCB0aGlzIHZhbHVlIHRvIGluY3JlYXNlIHRpbWVyIHJlc29sdXRpb24gdG8gMW1zLgorY29uc3Qg
aW50IGhpZ2hSZXNvbHV0aW9uVGhyZXNob2xkTXNlYyA9IDE2OyAvLyBPbmx5IGFjdGl2YXRlIGhp
Z2gtcmVzIHRpbWVyIGZvciBzdWItMTZtcyB0aW1lcnMgKFdpbmRvd3MgY2FuIGZpcmUgdGltZXJz
IGF0IDE2bXMgaW50ZXJ2YWxzIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHN5c3RlbSByZXNvbHV0aW9u
KS4KK2NvbnN0IGludCBzdG9wSGlnaFJlc1RpbWVySW5Nc2VjID0gMzAwOyAvLyBTdG9wIGhpZ2gt
cmVzIHRpbWVyIGFmdGVyIDAuMyBzZWNvbmRzIHRvIGxlc3NlbiBwb3dlciBjb25zdW1wdGlvbiAo
d2UgZG9uJ3QgdXNlIGEgc21hbGxlciB0aW1lIHNpbmNlIG9zY2lsbGF0aW5nIGJldHdlZW4gaGln
aCBhbmQgbG93IHJlc29sdXRpb24gYnJlYWtzIHRpbWVyIGFjY3VyYWN5IG9uIFhQKS4KKworZW51
bSB7CisgICAgc2hhcmVkVGltZXJJRCA9IDEwMDAsCisgICAgZW5kSGlnaFJlc1RpbWVySUQgPSAx
MDAxLAorfTsKKworTFJFU1VMVCBDQUxMQkFDSyBUaW1lcldpbmRvd1duZFByb2MoSFdORCBoV25k
LCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCit7CisgICAgaWYg
KG1lc3NhZ2UgPT0gV01fVElNRVIpIHsKKyAgICAgICAgaWYgKHdQYXJhbSA9PSBzaGFyZWRUaW1l
cklEKSB7CisgICAgICAgICAgICBLaWxsVGltZXIodGltZXJXaW5kb3dIYW5kbGUsIHNoYXJlZFRp
bWVySUQpOworICAgICAgICAgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKS5m
aXJlZCgpOworICAgICAgICB9IGVsc2UgaWYgKHdQYXJhbSA9PSBlbmRIaWdoUmVzVGltZXJJRCkg
eworICAgICAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCBlbmRIaWdoUmVzVGlt
ZXJJRCk7CisgICAgICAgICAgICBoaWdoUmVzVGltZXJBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAg
ICAgIHRpbWVFbmRQZXJpb2QodGltZXJSZXNvbHV0aW9uKTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZSBpZiAobWVzc2FnZSA9PSB0aW1lckZpcmVkTWVzc2FnZSkgeworICAgICAgICBJbnRlcmxvY2tl
ZEV4Y2hhbmdlKCZwZW5kaW5nVGltZXJzLCAwKTsKKyAgICAgICAgcHJvY2Vzc2luZ0N1c3RvbVRp
bWVyTWVzc2FnZSA9IHRydWU7CisgICAgICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2luZ2xl
dG9uKCkuZmlyZWQoKTsKKyAgICAgICAgcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IGZh
bHNlOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBtZXNz
YWdlLCB3UGFyYW0sIGxQYXJhbSk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZU9mZlNjcmVlblRpbWVyV2luZG93KCkKK3sKKyAgICBpZiAodGltZXJXaW5kb3dI
YW5kbGUpCisgICAgICAgIHJldHVybjsKKworICAgIFdORENMQVNTRVggd2NleDsKKyAgICBtZW1z
ZXQoJndjZXgsIDAsIHNpemVvZihXTkRDTEFTU0VYKSk7CisgICAgd2NleC5jYlNpemUgPSBzaXpl
b2YoV05EQ0xBU1NFWCk7CisKKyAgICB3Y2V4LmxwZm5XbmRQcm9jICAgID0gVGltZXJXaW5kb3dX
bmRQcm9jOworICAgIHdjZXguaEluc3RhbmNlICAgICAgPSBXZWJDb3JlOjppbnN0YW5jZUhhbmRs
ZSgpOworICAgIHdjZXgubHBzekNsYXNzTmFtZSAgPSBrVGltZXJXaW5kb3dDbGFzc05hbWU7Cisg
ICAgUmVnaXN0ZXJDbGFzc0V4KCZ3Y2V4KTsKKworICAgIHRpbWVyV2luZG93SGFuZGxlID0gQ3Jl
YXRlV2luZG93KGtUaW1lcldpbmRvd0NsYXNzTmFtZSwgMCwgMCwKKyAgICAgICBDV19VU0VERUZB
VUxULCAwLCBDV19VU0VERUZBVUxULCAwLCBIV05EX01FU1NBR0UsIDAsIFdlYkNvcmU6Omluc3Rh
bmNlSGFuZGxlKCksIDApOworCisgICAgdGltZXJGaXJlZE1lc3NhZ2UgPSBSZWdpc3RlcldpbmRv
d01lc3NhZ2UoTCJjb20uYXBwbGUuV2ViS2l0LlRpbWVyRmlyZWQiKTsKK30KKworc3RhdGljIHZv
aWQgTlRBUEkgcXVldWVUaW1lclByb2MoUFZPSUQsIEJPT0xFQU4pCit7CisgICAgaWYgKEludGVy
bG9ja2VkSW5jcmVtZW50KCZwZW5kaW5nVGltZXJzKSA9PSAxKQorICAgICAgICBQb3N0TWVzc2Fn
ZSh0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJGaXJlZE1lc3NhZ2UsIDAsIDApOworfQorCit2b2lk
IE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkK
K3sKKyAgICBBU1NFUlQobV9maXJlZEZ1bmN0aW9uKTsKKworICAgIHVuc2lnbmVkIGludGVydmFs
SW5NUzsKKyAgICBpbnRlcnZhbCAqPSAxMDAwOworICAgIGlmIChpbnRlcnZhbCA+IFVTRVJfVElN
RVJfTUFYSU1VTSkKKyAgICAgICAgaW50ZXJ2YWxJbk1TID0gVVNFUl9USU1FUl9NQVhJTVVNOwor
ICAgIGVsc2UKKyAgICAgICAgaW50ZXJ2YWxJbk1TID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlu
dGVydmFsKTsKKworICAgIGluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldpbmRvdygpOworICAgIGJv
b2wgdGltZXJTZXQgPSBmYWxzZTsKKworICAgIGlmIChTZXR0aW5nczo6c2hvdWxkVXNlSGlnaFJl
c29sdXRpb25UaW1lcnMoKSkgeworICAgICAgICBpZiAoaW50ZXJ2YWwgPCBoaWdoUmVzb2x1dGlv
blRocmVzaG9sZE1zZWMpIHsKKyAgICAgICAgICAgIGlmICghaGlnaFJlc1RpbWVyQWN0aXZlKSB7
CisgICAgICAgICAgICAgICAgaGlnaFJlc1RpbWVyQWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB0aW1lQmVnaW5QZXJpb2QodGltZXJSZXNvbHV0aW9uKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIFNldFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCBlbmRIaWdoUmVzVGltZXJJRCwg
c3RvcEhpZ2hSZXNUaW1lckluTXNlYywgMCk7CisgICAgICAgIH0KKworICAgICAgICBEV09SRCBx
dWV1ZVN0YXR1cyA9IExPV09SRChHZXRRdWV1ZVN0YXR1cyhRU19QQUlOVCB8IFFTX01PVVNFQlVU
VE9OIHwgUVNfS0VZIHwgUVNfUkFXSU5QVVQpKTsKKworICAgICAgICAvLyBXaW4zMiBoYXMgYSB0
cmktbGV2ZWwgcXVldWUgd2l0aCBhcHBsaWNhdGlvbiBtZXNzYWdlcyA+IHVzZXIgaW5wdXQgPiBX
TV9QQUlOVC9XTV9USU1FUi4KKworICAgICAgICAvLyBJZiB0aGUgcXVldWUgZG9lc24ndCBjb250
YWlucyBpbnB1dCBldmVudHMsIHdlIHVzZSBhIGhpZ2hlciBwcmlvcnR5IHRpbWVyIGV2ZW50IHBv
c3RpbmcgbWVjaGFuaXNtLgorICAgICAgICBpZiAoIShxdWV1ZVN0YXR1cyAmIChRU19NT1VTRUJV
VFRPTiB8IFFTX0tFWSB8IFFTX1JBV0lOUFVUKSkpIHsKKyAgICAgICAgICAgIGlmIChpbnRlcnZh
bEluTVMgPCBVU0VSX1RJTUVSX01JTklNVU0gJiYgIXByb2Nlc3NpbmdDdXN0b21UaW1lck1lc3Nh
Z2UgJiYgIShxdWV1ZVN0YXR1cyAmIFFTX1BBSU5UKSkgeworICAgICAgICAgICAgICAgIC8vIENh
bGwgUG9zdE1lc3NhZ2UgaW1tZWRpYXRlbHkgaWYgdGhlIHRpbWVyIGlzIGFscmVhZHkgZXhwaXJl
ZCwgdW5sZXNzIGEgcGFpbnQgaXMgcGVuZGluZy4KKyAgICAgICAgICAgICAgICAvLyAod2UgcHJp
b3JpdGl6ZSBwYWludHMgb3ZlciB0aW1lcnMpCisgICAgICAgICAgICAgICAgaWYgKEludGVybG9j
a2VkSW5jcmVtZW50KCZwZW5kaW5nVGltZXJzKSA9PSAxKQorICAgICAgICAgICAgICAgICAgICBQ
b3N0TWVzc2FnZSh0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJGaXJlZE1lc3NhZ2UsIDAsIDApOwor
ICAgICAgICAgICAgICAgIHRpbWVyU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBkZWxheSB0aGUgUG9zdE1lc3NhZ2UgdmlhIGEg
Q3JlYXRlVGltZXJRdWV1ZVRpbWVyCisgICAgICAgICAgICAgICAgaWYgKCF0aW1lclF1ZXVlKQor
ICAgICAgICAgICAgICAgICAgICB0aW1lclF1ZXVlID0gQ3JlYXRlVGltZXJRdWV1ZSgpOworICAg
ICAgICAgICAgICAgIGlmICh0aW1lcikKKyAgICAgICAgICAgICAgICAgICAgRGVsZXRlVGltZXJR
dWV1ZVRpbWVyKHRpbWVyUXVldWUsIHRpbWVyLCAwKTsKKyAgICAgICAgICAgICAgICB0aW1lclNl
dCA9IENyZWF0ZVRpbWVyUXVldWVUaW1lcigmdGltZXIsIHRpbWVyUXVldWUsIHF1ZXVlVGltZXJQ
cm9jLCAwLCBpbnRlcnZhbEluTVMsIDAsIFdUX0VYRUNVVEVJTlRJTUVSVEhSRUFEIHwgV1RfRVhF
Q1VURU9OTFlPTkNFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICh0aW1lclNldCkgeworICAgICAgICBpZiAodGltZXJJRCkgeworICAgICAgICAgICAgS2lsbFRp
bWVyKHRpbWVyV2luZG93SGFuZGxlLCB0aW1lcklEKTsKKyAgICAgICAgICAgIHRpbWVySUQgPSAw
OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGltZXJJRCA9IFNldFRpbWVyKHRp
bWVyV2luZG93SGFuZGxlLCBzaGFyZWRUaW1lcklELCBpbnRlcnZhbEluTVMsIDApOworICAgICAg
ICB0aW1lciA9IDA7CisgICAgfQorfQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3Rv
cCgpCit7CisgICAgaWYgKHRpbWVyUXVldWUgJiYgdGltZXIpIHsKKyAgICAgICAgRGVsZXRlVGlt
ZXJRdWV1ZVRpbWVyKHRpbWVyUXVldWUsIHRpbWVyLCAwKTsKKyAgICAgICAgdGltZXIgPSAwOwor
ICAgIH0KKworICAgIGlmICh0aW1lcklEKSB7CisgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRv
d0hhbmRsZSwgdGltZXJJRCk7CisgICAgICAgIHRpbWVySUQgPSAwOworICAgIH0KK30KKwordm9p
ZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUoKQoreworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZFRpbWVyV2luLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggM2QwMmIxOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjA1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgotCi0jaW5jbHVkZSAi
UGFnZS5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNl
SGFuZGxlLmgiCi0jaW5jbHVkZSAiV2lkZ2V0LmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvV2luZG93c0V4
dHJhcy5oPgotCi0jaW5jbHVkZSA8bW1zeXN0ZW0uaD4KLQotLy8gVGhlc2UgYXJlbid0IGluIHdp
bnVzZXIuaCB3aXRoIHRoZSBNU1ZTIDIwMDMgUGxhdGZvcm0gU0RLLCAKLS8vIHNvIHVzZSBkZWZh
dWx0IHZhbHVlcyBpbiB0aGF0IGNhc2UuCi0jaWZuZGVmIFVTRVJfVElNRVJfTUlOSU1VTQotI2Rl
ZmluZSBVU0VSX1RJTUVSX01JTklNVU0gMHgwMDAwMDAwQQotI2VuZGlmCi0KLSNpZm5kZWYgVVNF
Ul9USU1FUl9NQVhJTVVNCi0jZGVmaW5lIFVTRVJfVElNRVJfTUFYSU1VTSAweDdGRkZGRkZGCi0j
ZW5kaWYKLQotI2lmbmRlZiBRU19SQVdJTlBVVAotI2RlZmluZSBRU19SQVdJTlBVVCAgICAgICAg
IDB4MDQwMAotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIFVJTlQgdGlt
ZXJJRDsKLXN0YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOwotCi1zdGF0
aWMgSEFORExFIHRpbWVyOwotc3RhdGljIEhXTkQgdGltZXJXaW5kb3dIYW5kbGUgPSAwOwotY29u
c3QgTFBDV1NUUiBrVGltZXJXaW5kb3dDbGFzc05hbWUgPSBMIlRpbWVyV2luZG93Q2xhc3MiOwot
Ci1zdGF0aWMgVUlOVCB0aW1lckZpcmVkTWVzc2FnZSA9IDA7Ci1zdGF0aWMgSEFORExFIHRpbWVy
UXVldWU7Ci1zdGF0aWMgYm9vbCBoaWdoUmVzVGltZXJBY3RpdmU7Ci1zdGF0aWMgYm9vbCBwcm9j
ZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlID0gZmFsc2U7Ci1zdGF0aWMgTE9ORyBwZW5kaW5nVGlt
ZXJzOwotCi1jb25zdCBpbnQgdGltZXJSZXNvbHV0aW9uID0gMTsgLy8gVG8gaW1wcm92ZSB0aW1l
ciByZXNvbHV0aW9uLCB3ZSBjYWxsIHRpbWVCZWdpblBlcmlvZC90aW1lRW5kUGVyaW9kIHdpdGgg
dGhpcyB2YWx1ZSB0byBpbmNyZWFzZSB0aW1lciByZXNvbHV0aW9uIHRvIDFtcy4KLWNvbnN0IGlu
dCBoaWdoUmVzb2x1dGlvblRocmVzaG9sZE1zZWMgPSAxNjsgLy8gT25seSBhY3RpdmF0ZSBoaWdo
LXJlcyB0aW1lciBmb3Igc3ViLTE2bXMgdGltZXJzIChXaW5kb3dzIGNhbiBmaXJlIHRpbWVycyBh
dCAxNm1zIGludGVydmFscyB3aXRob3V0IGNoYW5naW5nIHRoZSBzeXN0ZW0gcmVzb2x1dGlvbiku
Ci1jb25zdCBpbnQgc3RvcEhpZ2hSZXNUaW1lckluTXNlYyA9IDMwMDsgLy8gU3RvcCBoaWdoLXJl
cyB0aW1lciBhZnRlciAwLjMgc2Vjb25kcyB0byBsZXNzZW4gcG93ZXIgY29uc3VtcHRpb24gKHdl
IGRvbid0IHVzZSBhIHNtYWxsZXIgdGltZSBzaW5jZSBvc2NpbGxhdGluZyBiZXR3ZWVuIGhpZ2gg
YW5kIGxvdyByZXNvbHV0aW9uIGJyZWFrcyB0aW1lciBhY2N1cmFjeSBvbiBYUCkuCi0KLWVudW0g
ewotICAgIHNoYXJlZFRpbWVySUQgPSAxMDAwLAotICAgIGVuZEhpZ2hSZXNUaW1lcklEID0gMTAw
MSwKLX07Ci0KLUxSRVNVTFQgQ0FMTEJBQ0sgVGltZXJXaW5kb3dXbmRQcm9jKEhXTkQgaFduZCwg
VUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQotewotICAgIGlmICht
ZXNzYWdlID09IFdNX1RJTUVSKSB7Ci0gICAgICAgIGlmICh3UGFyYW0gPT0gc2hhcmVkVGltZXJJ
RCkgewotICAgICAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCBzaGFyZWRUaW1l
cklEKTsKLSAgICAgICAgICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbigpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKHdQYXJhbSA9PSBlbmRIaWdoUmVzVGltZXJJRCkgewotICAgICAg
ICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCBlbmRIaWdoUmVzVGltZXJJRCk7Ci0g
ICAgICAgICAgICBoaWdoUmVzVGltZXJBY3RpdmUgPSBmYWxzZTsKLSAgICAgICAgICAgIHRpbWVF
bmRQZXJpb2QodGltZXJSZXNvbHV0aW9uKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAobWVz
c2FnZSA9PSB0aW1lckZpcmVkTWVzc2FnZSkgewotICAgICAgICBJbnRlcmxvY2tlZEV4Y2hhbmdl
KCZwZW5kaW5nVGltZXJzLCAwKTsKLSAgICAgICAgcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2Fn
ZSA9IHRydWU7Ci0gICAgICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbigpOwotICAgICAgICBw
cm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlID0gZmFsc2U7Ci0gICAgfSBlbHNlCi0gICAgICAg
IHJldHVybiBEZWZXaW5kb3dQcm9jKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKLQot
ICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplT2ZmU2NyZWVuVGltZXJX
aW5kb3coKQotewotICAgIGlmICh0aW1lcldpbmRvd0hhbmRsZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgV05EQ0xBU1NFWCB3Y2V4OwotICAgIG1lbXNldCgmd2NleCwgMCwgc2l6ZW9mKFdORENM
QVNTRVgpKTsKLSAgICB3Y2V4LmNiU2l6ZSA9IHNpemVvZihXTkRDTEFTU0VYKTsKLQotICAgIHdj
ZXgubHBmblduZFByb2MgICAgPSBUaW1lcldpbmRvd1duZFByb2M7Ci0gICAgd2NleC5oSW5zdGFu
Y2UgICAgICA9IFdlYkNvcmU6Omluc3RhbmNlSGFuZGxlKCk7Ci0gICAgd2NleC5scHN6Q2xhc3NO
YW1lICA9IGtUaW1lcldpbmRvd0NsYXNzTmFtZTsKLSAgICBSZWdpc3RlckNsYXNzRXgoJndjZXgp
OwotCi0gICAgdGltZXJXaW5kb3dIYW5kbGUgPSBDcmVhdGVXaW5kb3coa1RpbWVyV2luZG93Q2xh
c3NOYW1lLCAwLCAwLAotICAgICAgIENXX1VTRURFRkFVTFQsIDAsIENXX1VTRURFRkFVTFQsIDAs
IEhXTkRfTUVTU0FHRSwgMCwgV2ViQ29yZTo6aW5zdGFuY2VIYW5kbGUoKSwgMCk7Ci0KLSAgICB0
aW1lckZpcmVkTWVzc2FnZSA9IFJlZ2lzdGVyV2luZG93TWVzc2FnZShMImNvbS5hcHBsZS5XZWJL
aXQuVGltZXJGaXJlZCIpOwotfQotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2
b2lkICgqZikoKSkKLXsKLSAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gPSBmOwotfQotCi1z
dGF0aWMgdm9pZCBOVEFQSSBxdWV1ZVRpbWVyUHJvYyhQVk9JRCwgQk9PTEVBTikKLXsKLSAgICBp
ZiAoSW50ZXJsb2NrZWRJbmNyZW1lbnQoJnBlbmRpbmdUaW1lcnMpID09IDEpCi0gICAgICAgIFBv
c3RNZXNzYWdlKHRpbWVyV2luZG93SGFuZGxlLCB0aW1lckZpcmVkTWVzc2FnZSwgMCwgMCk7Ci19
Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQotewot
ICAgIEFTU0VSVChzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOwotCi0gICAgdW5zaWduZWQgaW50
ZXJ2YWxJbk1TOwotICAgIGludGVydmFsICo9IDEwMDA7Ci0gICAgaWYgKGludGVydmFsID4gVVNF
Ul9USU1FUl9NQVhJTVVNKQotICAgICAgICBpbnRlcnZhbEluTVMgPSBVU0VSX1RJTUVSX01BWElN
VU07Ci0gICAgZWxzZQotICAgICAgICBpbnRlcnZhbEluTVMgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaW50ZXJ2YWwpOwotCi0gICAgaW5pdGlhbGl6ZU9mZlNjcmVlblRpbWVyV2luZG93KCk7Ci0g
ICAgYm9vbCB0aW1lclNldCA9IGZhbHNlOwotCi0gICAgaWYgKFNldHRpbmdzOjpzaG91bGRVc2VI
aWdoUmVzb2x1dGlvblRpbWVycygpKSB7Ci0gICAgICAgIGlmIChpbnRlcnZhbCA8IGhpZ2hSZXNv
bHV0aW9uVGhyZXNob2xkTXNlYykgewotICAgICAgICAgICAgaWYgKCFoaWdoUmVzVGltZXJBY3Rp
dmUpIHsKLSAgICAgICAgICAgICAgICBoaWdoUmVzVGltZXJBY3RpdmUgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIHRpbWVCZWdpblBlcmlvZCh0aW1lclJlc29sdXRpb24pOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgU2V0VGltZXIodGltZXJXaW5kb3dIYW5kbGUsIGVuZEhpZ2hSZXNUaW1l
cklELCBzdG9wSGlnaFJlc1RpbWVySW5Nc2VjLCAwKTsKLSAgICAgICAgfQotCi0gICAgICAgIERX
T1JEIHF1ZXVlU3RhdHVzID0gTE9XT1JEKEdldFF1ZXVlU3RhdHVzKFFTX1BBSU5UIHwgUVNfTU9V
U0VCVVRUT04gfCBRU19LRVkgfCBRU19SQVdJTlBVVCkpOwotCi0gICAgICAgIC8vIFdpbjMyIGhh
cyBhIHRyaS1sZXZlbCBxdWV1ZSB3aXRoIGFwcGxpY2F0aW9uIG1lc3NhZ2VzID4gdXNlciBpbnB1
dCA+IFdNX1BBSU5UL1dNX1RJTUVSLgotCi0gICAgICAgIC8vIElmIHRoZSBxdWV1ZSBkb2Vzbid0
IGNvbnRhaW5zIGlucHV0IGV2ZW50cywgd2UgdXNlIGEgaGlnaGVyIHByaW9ydHkgdGltZXIgZXZl
bnQgcG9zdGluZyBtZWNoYW5pc20uCi0gICAgICAgIGlmICghKHF1ZXVlU3RhdHVzICYgKFFTX01P
VVNFQlVUVE9OIHwgUVNfS0VZIHwgUVNfUkFXSU5QVVQpKSkgewotICAgICAgICAgICAgaWYgKGlu
dGVydmFsSW5NUyA8IFVTRVJfVElNRVJfTUlOSU1VTSAmJiAhcHJvY2Vzc2luZ0N1c3RvbVRpbWVy
TWVzc2FnZSAmJiAhKHF1ZXVlU3RhdHVzICYgUVNfUEFJTlQpKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gQ2FsbCBQb3N0TWVzc2FnZSBpbW1lZGlhdGVseSBpZiB0aGUgdGltZXIgaXMgYWxyZWFkeSBl
eHBpcmVkLCB1bmxlc3MgYSBwYWludCBpcyBwZW5kaW5nLgotICAgICAgICAgICAgICAgIC8vICh3
ZSBwcmlvcml0aXplIHBhaW50cyBvdmVyIHRpbWVycykKLSAgICAgICAgICAgICAgICBpZiAoSW50
ZXJsb2NrZWRJbmNyZW1lbnQoJnBlbmRpbmdUaW1lcnMpID09IDEpCi0gICAgICAgICAgICAgICAg
ICAgIFBvc3RNZXNzYWdlKHRpbWVyV2luZG93SGFuZGxlLCB0aW1lckZpcmVkTWVzc2FnZSwgMCwg
MCk7Ci0gICAgICAgICAgICAgICAgdGltZXJTZXQgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGRlbGF5IHRoZSBQb3N0TWVzc2FnZSB2
aWEgYSBDcmVhdGVUaW1lclF1ZXVlVGltZXIKLSAgICAgICAgICAgICAgICBpZiAoIXRpbWVyUXVl
dWUpCi0gICAgICAgICAgICAgICAgICAgIHRpbWVyUXVldWUgPSBDcmVhdGVUaW1lclF1ZXVlKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKHRpbWVyKQotICAgICAgICAgICAgICAgICAgICBEZWxldGVU
aW1lclF1ZXVlVGltZXIodGltZXJRdWV1ZSwgdGltZXIsIDApOwotICAgICAgICAgICAgICAgIHRp
bWVyU2V0ID0gQ3JlYXRlVGltZXJRdWV1ZVRpbWVyKCZ0aW1lciwgdGltZXJRdWV1ZSwgcXVldWVU
aW1lclByb2MsIDAsIGludGVydmFsSW5NUywgMCwgV1RfRVhFQ1VURUlOVElNRVJUSFJFQUQgfCBX
VF9FWEVDVVRFT05MWU9OQ0UpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgaWYgKHRpbWVyU2V0KSB7Ci0gICAgICAgIGlmICh0aW1lcklEKSB7Ci0gICAgICAgICAgICBL
aWxsVGltZXIodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVySUQpOwotICAgICAgICAgICAgdGltZXJJ
RCA9IDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICB0aW1lcklEID0gU2V0VGlt
ZXIodGltZXJXaW5kb3dIYW5kbGUsIHNoYXJlZFRpbWVySUQsIGludGVydmFsSW5NUywgMCk7Ci0g
ICAgICAgIHRpbWVyID0gMDsKLSAgICB9Ci19Ci0KLXZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKLXsK
LSAgICBpZiAodGltZXJRdWV1ZSAmJiB0aW1lcikgewotICAgICAgICBEZWxldGVUaW1lclF1ZXVl
VGltZXIodGltZXJRdWV1ZSwgdGltZXIsIDApOwotICAgICAgICB0aW1lciA9IDA7Ci0gICAgfQot
Ci0gICAgaWYgKHRpbWVySUQpIHsKLSAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFuZGxl
LCB0aW1lcklEKTsKLSAgICAgICAgdGltZXJJRCA9IDA7Ci0gICAgfQotfQotCi12b2lkIGludmFs
aWRhdGVTaGFyZWRUaW1lcigpCi17Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clJ1bkxvb3AuY3BwCmluZGV4IGU4MTIzMDguLjY1OWQwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFdvcmtlclNoYXJlZFRpbWVyIDogcHVibGljIFNoYXJlZFRpbWVyIHsK
K2NsYXNzIFdvcmtlclNoYXJlZFRpbWVyIGZpbmFsIDogcHVibGljIFNoYXJlZFRpbWVyIHsKIHB1
YmxpYzoKICAgICBXb3JrZXJTaGFyZWRUaW1lcigpCiAgICAgICAgIDogbV9zaGFyZWRUaW1lckZ1
bmN0aW9uKDApCkBAIC01MCwxNiArNTAsMTYgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFNo
YXJlZFRpbWVyIGludGVyZmFjZS4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbih2
b2lkICgqZnVuY3Rpb24pKCkpIHsgbV9zaGFyZWRUaW1lckZ1bmN0aW9uID0gZnVuY3Rpb247IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkgeyBtX25l
eHRGaXJlVGltZSA9IGludGVydmFsICsgY3VycmVudFRpbWUoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBzdG9wKCkgeyBtX25leHRGaXJlVGltZSA9IDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rmly
ZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikgb3ZlcnJpZGUgeyBt
X3NoYXJlZFRpbWVyRnVuY3Rpb24gPSBXVEY6Om1vdmUoZnVuY3Rpb24pOyB9CisgICAgdmlydHVh
bCB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpIG92ZXJyaWRlIHsgbV9uZXh0
RmlyZVRpbWUgPSBpbnRlcnZhbCArIGN1cnJlbnRUaW1lKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpIG92ZXJyaWRlIHsgbV9uZXh0RmlyZVRpbWUgPSAwOyB9CiAKICAgICBib29sIGlzQWN0
aXZlKCkgeyByZXR1cm4gbV9zaGFyZWRUaW1lckZ1bmN0aW9uICYmIG1fbmV4dEZpcmVUaW1lOyB9
CiAgICAgZG91YmxlIGZpcmVUaW1lKCkgeyByZXR1cm4gbV9uZXh0RmlyZVRpbWU7IH0KICAgICB2
b2lkIGZpcmUoKSB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbigpOyB9CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCAoKm1fc2hhcmVkVGltZXJGdW5jdGlvbikoKTsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gbV9zaGFyZWRUaW1lckZ1bmN0aW9uOwogICAgIGRvdWJsZSBtX25leHRGaXJlVGltZTsKIH07
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264007</attachid>
            <date>2015-10-25 05:59:36 -0700</date>
            <delta_ts>2015-10-26 10:58:52 -0700</delta_ts>
            <desc>Try to fix win build</desc>
            <filename>wcore-shared-timer.diff</filename>
            <type>text/plain</type>
            <size>52288</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOThmM2VhNC4uYjIwNjMxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMDksNiArMjEwOSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9MaW5rSGFzaC5jcHAKICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmNwcAogICAgIHBsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuY3BwCisgICAgcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVy
LmNwcAogICAgIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKICAgICBwbGF0Zm9y
bS9Ob3RJbXBsZW1lbnRlZC5jcHAKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDVjYzFlNzEuLjBhMGFkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAor
MjAxNS0xMC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
KyAgICAgICAgTWFrZSBldmVyeSBwb3J0IGltcGxlbWVudCBNYWluVGhyZWFkU2hhcmVkVGltZXIg
aW5zdGVhZCBvZiB1c2luZyBnbG9iYWwgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIE1haW5UaHJlYWRTaGFyZWRUaW1lciB0byBp
dHMgb3duIGZpbGVzIGFuZCBhZGQgdGhlIGNvbW1vbgorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0
aGVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgTWFpblRocmVhZFNoYXJlZFRp
bWVyLmNwcC4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogVXBkYXRlIGZpbGVuYW1lcy4K
KyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpNYWluVGhyZWFkU2hhcmVkVGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6ZmlyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwLgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZFRpbWVyLmg6IFJlbW92ZSBNYWluVGhyZWFkU2hhcmVkVGltZXIKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gYW5kIHJlaW5kZW50IHRoZSBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkVGltZXI6OlNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVy
Ojp+U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXI6OmludmFsaWRh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRUaW1lcnM6OlRocmVhZFRpbWVycyk6IFVzZSBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnNpbmdsZXRvbigpLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzZXRTaGFy
ZWRUaW1lcik6IFVzZSBhIGxhbWJkYSBmdW5jdGlvbgorICAgICAgICBpbnN0ZWFkIG9mIGEgcG9p
bnRlciB0byBhIHN0YXRpYyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6
OnNoYXJlZFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRp
bWVycy5oOiBSZW1vdmVkIHVuc3VzZWQgc3RhdGljIG1ldGhvZCBzaGFyZWRUaW1lckZpcmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0dXBQb3dlck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6cmVzdGFydFNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2Vm
bC9NYWluVGhyZWFkU2hhcmVkVGltZXJFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnRp
bWVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVy
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0ay5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsu
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50
ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJXaW5kb3dXbmRQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6
OmluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpxdWV1
ZVRpbWVyUHJvYyk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNl
dEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlk
YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOiBVcGRhdGUgV29ya2Vy
U2hhcmVkVGltZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24gdG8gdXNlIHN0ZDo6ZnVuY3Rpb24g
aW5zdGVhZCBvZiBhIHBvaW50ZXIuIEFsc28KKyAgICAgICAgbWFyayB0aGUgY2xhc3MgYXMgZmlu
YWwgYW5kIHRoZSB2aXJ0dWFsIGltcGxlbWVudGF0aW9ucyBhcyBvdmVycmlkZS4KKwogMjAxNS0x
MC0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAg
ICAgIFVzZSBJbXBsZW1lbnRlZEFzIGZvciBNZWRpYURldmljZXMuZ2V0VXNlck1lZGlhRnJvbUpT
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDljYzExNTcuLjA0MTI3OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMTMsMTMgKzExMywxMyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9lZmwvTG9jYWxpemVkU3RyaW5nc0VmbC5jcHAKICAg
ICBwbGF0Zm9ybS9lZmwvTG9nZ2luZ0VmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvTUlNRVR5cGVS
ZWdpc3RyeUVmbC5jcHAKKyAgICBwbGF0Zm9ybS9lZmwvTWFpblRocmVhZFNoYXJlZFRpbWVyRWZs
LmNwcAogICAgIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcAogICAgIHBsYXRmb3JtL2Vm
bC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
TW91c2VFdmVudEVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1TY3JlZW5FZmwuY3Bw
CiAgICAgcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAKICAgICBwbGF0Zm9y
bS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwCi0gICAgcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVy
RWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9Tb3VuZEVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwv
VGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGJhYWFjYjkuLmEyMDlhOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC0xNjEsOCArMTYxLDggQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0
ay9Mb2dnaW5nR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9NSU1FVHlwZVJlZ2lzdHJ5R3RrLmNw
cAorICAgIHBsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsuY3BwCiAgICAgcGxh
dGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKLSAgICBwbGF0Zm9ybS9ndGsvU2hhcmVkVGlt
ZXJHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKICAgICBw
bGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmlu
ZGV4IDk3MDQ4ODYuLmNlNjg0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yNjMs
MTAgKzI2MywxMCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9j
Zi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCiAg
ICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisgICAgcGxhdGZvcm0vY2YvTWFpblRo
cmVhZFNoYXJlZFRpbWVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3NpYmlsaXR5
U29mdExpbmsuY3BwCiAgICAgcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAogICAgIHBs
YXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1NoYXJlZFRpbWVy
Q0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCiAKICAgICBwbGF0Zm9ybS9jb2NvYS9D
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFr
ZQppbmRleCAwMjExZjY4Li40ZWY4YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAt
MTI0LDYgKzEyNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L3dpbi9Mb2dnaW5nV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCisgICAg
cGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKICAgICBwbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAKICAg
ICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcApAQCAtMTMzLDcgKzEzNCw2
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9TY3JvbGxi
YXJUaGVtZVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAog
ICAgIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCi0gICAgcGxhdGZvcm0vd2luL1No
YXJlZFRpbWVyV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9Tb3VuZFdpbi5jcHAKICAgICBwbGF0
Zm9ybS93aW4vU3RydWN0dXJlZEV4Y2VwdGlvbkhhbmRsZXJTdXBwcmVzc29yLmNwcAogICAgIHBs
YXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNjdmMTdjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZFNo
YXJlZFRpbWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWFpblRocmVhZFNoYXJlZFRp
bWVyJiBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPE1haW5UaHJlYWRTaGFyZWRUaW1lcj4gaW5zdGFuY2U7CisgICAgcmV0dXJu
IGluc3RhbmNlOworfQorCitNYWluVGhyZWFkU2hhcmVkVGltZXI6Ok1haW5UaHJlYWRTaGFyZWRU
aW1lcigpCit7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0
aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZpcmVkRnVuY3Rpb24pCit7CisgICAgUkVMRUFT
RV9BU1NFUlQoIW1fZmlyZWRGdW5jdGlvbiB8fCAhZmlyZWRGdW5jdGlvbik7CisgICAgbV9maXJl
ZEZ1bmN0aW9uID0gV1RGOjptb3ZlKGZpcmVkRnVuY3Rpb24pOworfQorCit2b2lkIE1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6ZmlyZWQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2ZpcmVkRnVuY3Rp
b24pOworICAgIG1fZmlyZWRGdW5jdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGlt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMzFjNDMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaApAQCAt
MCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNYWluVGhyZWFk
U2hhcmVkVGltZXJfaAorI2RlZmluZSBNYWluVGhyZWFkU2hhcmVkVGltZXJfaAorCisjaW5jbHVk
ZSAiU2hhcmVkVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNYWluVGhyZWFkU2hhcmVkVGltZXIgZmluYWwgOiBw
dWJsaWMgU2hhcmVkVGltZXIgeworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxNYWlu
VGhyZWFkU2hhcmVkVGltZXI+OworcHVibGljOgorICAgIHN0YXRpYyBNYWluVGhyZWFkU2hhcmVk
VGltZXImIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3Vi
bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxp
ZGF0ZSgpIG92ZXJyaWRlOworCisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHByaXZhdGUs
IGJ1dCBDRiBhbmQgV2luZG93cyBpbXBsZW1lbnRhdGlvbnMKKyAgICAvLyBuZWVkIHRvIGNhbGwg
dGhpcyBmcm9tIHN0YXRpYyBtZXRob2RzIGF0IHRoZSBtb21lbnQuCisgICAgdm9pZCBmaXJlZCgp
IGNvbnN0OworCitwcml2YXRlOgorICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcigpOworCisgICAg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZmlyZWRGdW5jdGlvbiB7IG51bGxwdHIgfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1haW5UaHJlYWRTaGFyZWRUaW1l
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKaW5kZXggMjk5YzQ5OS4uY2FjMWI5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCkBAIC0yNiw1OSArMjYsMjgg
QEAKICNpZm5kZWYgU2hhcmVkVGltZXJfaAogI2RlZmluZSBTaGFyZWRUaW1lcl9oCiAKKyNpbmNs
dWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIC8vIEVhY2gg
dGhyZWFkIGhhcyBpdHMgb3duIHNpbmdsZSBpbnN0YW5jZSBvZiBzaGFyZWQgdGltZXIsIHdoaWNo
IGltcGxlbWVudHMgdGhpcyBpbnRlcmZhY2UuCi0gICAgLy8gVGhpcyBpbnN0YW5jZSBpcyBzaGFy
ZWQgYnkgYWxsIHRpbWVycyBpbiB0aGUgdGhyZWFkLgotICAgIC8vIE5vdCBpbnRlbmRlZCB0byBi
ZSB1c2VkIGRpcmVjdGx5OyB1c2UgdGhlIFRpbWVyIGNsYXNzIGluc3RlYWQuCi0gICAgY2xhc3Mg
U2hhcmVkVGltZXIgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFyZWRUaW1lcik7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgU2hhcmVkVGlt
ZXIoKSB7IH0KLSAgICAgICAgdmlydHVhbCB+U2hhcmVkVGltZXIoKSB7fQotICAgICAgICB2aXJ0
dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbih2b2lkICgqKSgpKSA9IDA7Ci0KLSAgICAgICAgLy8g
VGhlIGZpcmUgaW50ZXJ2YWwgaXMgaW4gc2Vjb25kcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBt
b25vdG9uaWMgY2xvY2sgdGltZS4KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldEZpcmVJbnRlcnZh
bChkb3VibGUpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7Ci0KLSAgICAg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSB7IH0KLSAgICB9OwotCi0KLSAgICAvLyBJbXBs
ZW1lbnRlZCBieSBwb3J0IChzaW5jZSBpdCBwcm92aWRlcyB0aGUgcnVuIGxvb3AgZm9yIHRoZSBt
YWluIHRocmVhZCkuCi0gICAgLy8gRklYTUU6IG1ha2UgcG9ydHMgaW1wbGVtZW50IE1haW5UaHJl
YWRTaGFyZWRUaW1lciBkaXJlY3RseSBpbnN0ZWFkLgotICAgIHZvaWQgc2V0U2hhcmVkVGltZXJG
aXJlZEZ1bmN0aW9uKHZvaWQgKCopKCkpOwotICAgIHZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50
ZXJ2YWwoZG91YmxlKTsKLSAgICB2b2lkIHN0b3BTaGFyZWRUaW1lcigpOwotICAgIHZvaWQgaW52
YWxpZGF0ZVNoYXJlZFRpbWVyKCk7Ci0KLSAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBTaGFyZWRU
aW1lciBmb3IgdGhlIG1haW4gdGhyZWFkLgotICAgIGNsYXNzIE1haW5UaHJlYWRTaGFyZWRUaW1l
ciBmaW5hbCA6IHB1YmxpYyBTaGFyZWRUaW1lciB7Ci0gICAgcHVibGljOgotICAgICAgICB2b2lk
IHNldEZpcmVkRnVuY3Rpb24odm9pZCAoKmZ1bmN0aW9uKSgpKSBvdmVycmlkZQotICAgICAgICB7
Ci0gICAgICAgICAgICBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24oZnVuY3Rpb24pOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3VibGUgaW50
ZXJ2YWwpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNldFNoYXJlZFRpbWVyRmly
ZUludGVydmFsKGludGVydmFsKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBz
dG9wKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgc3RvcFNoYXJlZFRpbWVyKCk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGludmFsaWRhdGUoKSBvdmVycmlkZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpbnZhbGlkYXRlU2hhcmVkVGltZXIoKTsKLSAgICAgICAgfQotICAg
IH07CisvLyBFYWNoIHRocmVhZCBoYXMgaXRzIG93biBzaW5nbGUgaW5zdGFuY2Ugb2Ygc2hhcmVk
IHRpbWVyLCB3aGljaCBpbXBsZW1lbnRzIHRoaXMgaW50ZXJmYWNlLgorLy8gVGhpcyBpbnN0YW5j
ZSBpcyBzaGFyZWQgYnkgYWxsIHRpbWVycyBpbiB0aGUgdGhyZWFkLgorLy8gTm90IGludGVuZGVk
IHRvIGJlIHVzZWQgZGlyZWN0bHk7IHVzZSB0aGUgVGltZXIgY2xhc3MgaW5zdGVhZC4KK2NsYXNz
IFNoYXJlZFRpbWVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFyZWRUaW1lcik7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZFRpbWVyKCkgeyB9Cisg
ICAgdmlydHVhbCB+U2hhcmVkVGltZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZWRG
dW5jdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworCisgICAgLy8gVGhlIGZpcmUg
aW50ZXJ2YWwgaXMgaW4gc2Vjb25kcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBtb25vdG9uaWMg
Y2xvY2sgdGltZS4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZUludGVydmFsKGRvdWJsZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGUoKSB7IH0KK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAKaW5kZXggMTIzMWNhMi4uMDIyODM0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGhyZWFkVGltZXJzLmgiCiAKKyNpbmNsdWRl
ICJNYWluVGhyZWFkU2hhcmVkVGltZXIuaCIKICNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgogI2lu
Y2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtNDcsMjcg
KzQ4LDIxIEBAIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4RHVyYXRpb25PZkZpcmluZ1RpbWVycyA9
IDAuMDUwOwogLy8gVGltZXJzIGFyZSBjcmVhdGVkLCBzdGFydGVkIGFuZCBmaXJlZCBvbiB0aGUg
c2FtZSB0aHJlYWQsIGFuZCBlYWNoIHRocmVhZCBoYXMgaXRzIG93biBUaHJlYWRUaW1lcnMKIC8v
IGNvcHkgdG8ga2VlcCB0aGUgaGVhcCBhbmQgYSBzZXQgb2YgY3VycmVudGx5IGZpcmluZyB0aW1l
cnMuCiAKLXN0YXRpYyBNYWluVGhyZWFkU2hhcmVkVGltZXIqIG1haW5UaHJlYWRTaGFyZWRUaW1l
cigpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWRTaGFyZWRUaW1lciogdGltZXIgPSBuZXcgTWFp
blRocmVhZFNoYXJlZFRpbWVyOwotICAgIHJldHVybiB0aW1lcjsKLX0KLQogVGhyZWFkVGltZXJz
OjpUaHJlYWRUaW1lcnMoKQogICAgIDogbV9zaGFyZWRUaW1lcigwKQogICAgICwgbV9maXJpbmdU
aW1lcnMoZmFsc2UpCiAgICAgLCBtX3BlbmRpbmdTaGFyZWRUaW1lckZpcmVUaW1lKDApCiB7CiAg
ICAgaWYgKGlzVUlUaHJlYWQoKSkKLSAgICAgICAgc2V0U2hhcmVkVGltZXIobWFpblRocmVhZFNo
YXJlZFRpbWVyKCkpOworICAgICAgICBzZXRTaGFyZWRUaW1lcigmTWFpblRocmVhZFNoYXJlZFRp
bWVyOjpzaW5nbGV0b24oKSk7CiB9CiAKIC8vIEEgd29ya2VyIHRocmVhZCBtYXkgaW5pdGlhbGl6
ZSBTaGFyZWRUaW1lciBhZnRlciBzb21lIHRpbWVycyBhcmUgY3JlYXRlZC4KLS8vIEFsc28sIFNo
YXJlZFRpbWVyIGNhbiBiZSByZXBsYWNlZCB3aXRoIDAgYmVmb3JlIGFsbCB0aW1lcnMgYXJlIGRl
c3Ryb3llZC4KKy8vIEFsc28sIFNoYXJlZFRpbWVyIGNhbiBiZSByZXBsYWNlZCB3aXRoIG51bGxw
dHIgYmVmb3JlIGFsbCB0aW1lcnMgYXJlIGRlc3Ryb3llZC4KIHZvaWQgVGhyZWFkVGltZXJzOjpz
ZXRTaGFyZWRUaW1lcihTaGFyZWRUaW1lciogc2hhcmVkVGltZXIpCiB7CiAgICAgaWYgKG1fc2hh
cmVkVGltZXIpIHsKLSAgICAgICAgbV9zaGFyZWRUaW1lci0+c2V0RmlyZWRGdW5jdGlvbigwKTsK
KyAgICAgICAgbV9zaGFyZWRUaW1lci0+c2V0RmlyZWRGdW5jdGlvbihudWxscHRyKTsKICAgICAg
ICAgbV9zaGFyZWRUaW1lci0+c3RvcCgpOwogICAgICAgICBtX3BlbmRpbmdTaGFyZWRUaW1lckZp
cmVUaW1lID0gMDsKICAgICB9CkBAIC03NSw3ICs3MCw3IEBAIHZvaWQgVGhyZWFkVGltZXJzOjpz
ZXRTaGFyZWRUaW1lcihTaGFyZWRUaW1lciogc2hhcmVkVGltZXIpCiAgICAgbV9zaGFyZWRUaW1l
ciA9IHNoYXJlZFRpbWVyOwogICAgIAogICAgIGlmIChzaGFyZWRUaW1lcikgewotICAgICAgICBt
X3NoYXJlZFRpbWVyLT5zZXRGaXJlZEZ1bmN0aW9uKFRocmVhZFRpbWVyczo6c2hhcmVkVGltZXJG
aXJlZCk7CisgICAgICAgIG1fc2hhcmVkVGltZXItPnNldEZpcmVkRnVuY3Rpb24oW10geyB0aHJl
YWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkuc2hhcmVkVGltZXJGaXJlZEludGVybmFsKCk7
IH0pOwogICAgICAgICB1cGRhdGVTaGFyZWRUaW1lcigpOwogICAgIH0KIH0KQEAgLTEwMSwxMiAr
OTYsNiBAQCB2b2lkIFRocmVhZFRpbWVyczo6dXBkYXRlU2hhcmVkVGltZXIoKQogICAgIH0KIH0K
IAotdm9pZCBUaHJlYWRUaW1lcnM6OnNoYXJlZFRpbWVyRmlyZWQoKQotewotICAgIC8vIFJlZGly
ZWN0IHRvIG5vbi1zdGF0aWMgbWV0aG9kLgotICAgIHRocmVhZEdsb2JhbERhdGEoKS50aHJlYWRU
aW1lcnMoKS5zaGFyZWRUaW1lckZpcmVkSW50ZXJuYWwoKTsKLX0KLQogdm9pZCBUaHJlYWRUaW1l
cnM6OnNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpIHx8ICghaXNXZWJUaHJlYWQoKSAmJiAhaXNVSVRocmVhZCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZFRpbWVycy5oCmluZGV4IDE1ZDlmMzcuLmU0ZjI2MjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5oCkBAIC01MSw4ICs1MSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyB2b2lkIHNoYXJlZFRpbWVyRmlyZWQoKTsKLQog
ICAgICAgICB2b2lkIHNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpOwogICAgICAgICB2b2lkIGZp
cmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcEludGVybmFsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTYyNDc5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBA
IC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwLCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNYWluVGhyZWFk
U2hhcmVkVGltZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KKworI2lm
IFBMQVRGT1JNKE1BQykKKyNpbXBvcnQgIlBvd2VyT2JzZXJ2ZXJNYWMuaCIKKyNlbGlmIFBMQVRG
T1JNKElPUykKKyNpbXBvcnQgIldlYkNvcmVUaHJlYWQuaCIKKyNpbXBvcnQgIldlYkNvcmVUaHJl
YWRSdW4uaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBDRlJ1bkxv
b3BUaW1lclJlZiBzaGFyZWRUaW1lcjsKK3N0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29w
VGltZXJSZWYsIHZvaWQqKTsKK3N0YXRpYyB2b2lkIHJlc3RhcnRTaGFyZWRUaW1lcigpOworCitz
dGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8Q0ZUaW1lSW50ZXJ2YWw+OjptYXgoKTsKKworI2lmIFBMQVRG
T1JNKElPUykKK3N0YXRpYyB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKENGTm90aWZp
Y2F0aW9uQ2VudGVyUmVmLCB2b2lkKiwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rp
b25hcnlSZWYpCit7CisgICAgV2ViVGhyZWFkUnVuKF57CisgICAgICAgIHJlc3RhcnRTaGFyZWRU
aW1lcigpOworICAgIH0pOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNl
cnZlcigpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBw
b3dlck9ic2VydmVyOworICAgIGlmICghcG93ZXJPYnNlcnZlcikKKyAgICAgICAgcG93ZXJPYnNl
cnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVy
KS5yZWxlYXNlKCk7CisjZWxpZiBQTEFURk9STShJT1MpCisgICAgc3RhdGljIGJvb2wgcmVnaXN0
ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gZmFsc2U7CisgICAgaWYgKCFyZWdpc3Rl
cmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24pIHsKKyAgICAgICAgcmVnaXN0ZXJlZEZvckFw
cGxpY2F0aW9uTm90aWZpY2F0aW9uID0gdHJ1ZTsKKyAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50
ZXJSZWYgbm90aWZpY2F0aW9uQ2VudGVyID0gQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENl
bnRlcigpOworICAgICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKG5vdGlmaWNh
dGlvbkNlbnRlciwgbnVsbHB0ciwgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUsIENGU1RSKCJV
SUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIiksIG51bGxwdHIsIENGTm90
aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yQ29hbGVzY2UpOworICAgIH0KKyNlbmRpZgorfQor
CitzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKikKK3sKKyAg
ICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKKyAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNpbmds
ZXRvbigpLmZpcmVkKCk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc3RhcnRTaGFyZWRUaW1lcigpCit7
CisgICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgTWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKS5zdG9wKCk7CisgICAgdGltZXJGaXJlZCgwLCAwKTsK
K30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUoKQoreworICAgIGlm
ICghc2hhcmVkVGltZXIpCisgICAgICAgIHJldHVybjsKKworICAgIENGUnVuTG9vcFRpbWVySW52
YWxpZGF0ZShzaGFyZWRUaW1lcik7CisgICAgQ0ZSZWxlYXNlKHNoYXJlZFRpbWVyKTsKKyAgICBz
aGFyZWRUaW1lciA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpz
ZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIEFTU0VSVChtX2ZpcmVkRnVu
Y3Rpb24pOworCisgICAgQ0ZBYnNvbHV0ZVRpbWUgZmlyZURhdGUgPSBDRkFic29sdXRlVGltZUdl
dEN1cnJlbnQoKSArIGludGVydmFsOworICAgIGlmICghc2hhcmVkVGltZXIpIHsKKyAgICAgICAg
c2hhcmVkVGltZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0ZShudWxscHRyLCBmaXJlRGF0ZSwga0NG
VGltZUludGVydmFsRGlzdGFudEZ1dHVyZSwgMCwgMCwgdGltZXJGaXJlZCwgbnVsbHB0cik7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihXZWJUaHJlYWRSdW5M
b29wKCksIHNoYXJlZFRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAg
ICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBzaGFyZWRUaW1lciwg
a0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyNlbmRpZgorCisgICAgICAgIHNldHVwUG93ZXJPYnNl
cnZlcigpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDRlJ1bkxvb3BUaW1lclNl
dE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwgZmlyZURhdGUpOworfQorCit2b2lkIE1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c3RvcCgpCit7CisgICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIs
IGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRUaW1lckNG
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmQ3MDdiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTAsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlNoYXJlZFRpbWVyLmgi
Ci0KLSNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+Ci0KLSNpZiBQTEFURk9STShNQUMp
Ci0jaW1wb3J0ICJQb3dlck9ic2VydmVyTWFjLmgiCi0jZWxpZiBQTEFURk9STShJT1MpCi0jaW1w
b3J0ICJXZWJDb3JlVGhyZWFkLmgiCi0jaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCi0jZW5k
aWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgQ0ZSdW5Mb29wVGltZXJSZWYgc2hh
cmVkVGltZXI7Ci1zdGF0aWMgdm9pZCAoKnNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbikoKTsKLXN0
YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKLXN0YXRpYyB2
b2lkIHJlc3RhcnRTaGFyZWRUaW1lcigpOwotCi1zdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwg
a0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8Q0ZUaW1l
SW50ZXJ2YWw+OjptYXgoKTsKLQotI2lmIFBMQVRGT1JNKElPUykKLXN0YXRpYyB2b2lkIGFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiwgQ0ZT
dHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCi17Ci0gICAgV2ViVGhyZWFk
UnVuKF57Ci0gICAgICAgIHJlc3RhcnRTaGFyZWRUaW1lcigpOwotICAgIH0pOwotfQotI2VuZGlm
Ci0KLXN0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZlcigpCi17Ci0jaWYgUExBVEZPUk0oTUFD
KQotICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBwb3dlck9ic2VydmVyOwotICAgIGlmICghcG93
ZXJPYnNlcnZlcikKLSAgICAgICAgcG93ZXJPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UG93
ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7Ci0jZWxpZiBQTEFURk9S
TShJT1MpCi0gICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0
aW9uID0gZmFsc2U7Ci0gICAgaWYgKCFyZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRp
b24pIHsKLSAgICAgICAgcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gdHJ1
ZTsKLSAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYgbm90aWZpY2F0aW9uQ2VudGVyID0g
Q0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpOwotICAgICAgICBDRk5vdGlmaWNh
dGlvbkNlbnRlckFkZE9ic2VydmVyKG5vdGlmaWNhdGlvbkNlbnRlciwgbnVsbHB0ciwgYXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmUsIENGU1RSKCJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
Tm90aWZpY2F0aW9uIiksIG51bGxwdHIsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9y
Q29hbGVzY2UpOwotICAgIH0KLSNlbmRpZgotfQotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRG
dW5jdGlvbih2b2lkICgqZikoKSkKLXsKLSAgICBBU1NFUlQoIXNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbiB8fCBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gPT0gZik7Ci0KLSAgICBzaGFyZWRUaW1l
ckZpcmVkRnVuY3Rpb24gPSBmOwotfQotCi1zdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9v
cFRpbWVyUmVmLCB2b2lkKikKLXsKLSAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKLSAgICBzaGFy
ZWRUaW1lckZpcmVkRnVuY3Rpb24oKTsKLX0KLQotc3RhdGljIHZvaWQgcmVzdGFydFNoYXJlZFRp
bWVyKCkKLXsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBz
dG9wU2hhcmVkVGltZXIoKTsKLSAgICB0aW1lckZpcmVkKDAsIDApOwotfQotCi12b2lkIGludmFs
aWRhdGVTaGFyZWRUaW1lcigpCi17Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRpbWVyKTsKLSAgICBD
RlJlbGVhc2Uoc2hhcmVkVGltZXIpOwotICAgIHNoYXJlZFRpbWVyID0gbnVsbHB0cjsKLX0KLQot
dm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCi17Ci0gICAg
QVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7Ci0KLSAgICBDRkFic29sdXRlVGltZSBm
aXJlRGF0ZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50ZXJ2YWw7Ci0gICAgaWYg
KCFzaGFyZWRUaW1lcikgewotICAgICAgICBzaGFyZWRUaW1lciA9IENGUnVuTG9vcFRpbWVyQ3Jl
YXRlKG51bGxwdHIsIGZpcmVEYXRlLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlLCAwLCAw
LCB0aW1lckZpcmVkLCBudWxscHRyKTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIENGUnVu
TG9vcEFkZFRpbWVyKFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVkVGltZXIsIGtDRlJ1bkxvb3BD
b21tb25Nb2Rlcyk7Ci0jZWxzZQotICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BH
ZXRDdXJyZW50KCksIHNoYXJlZFRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2VuZGlm
Ci0KLSAgICAgICAgc2V0dXBQb3dlck9ic2VydmVyKCk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyLCBmaXJl
RGF0ZSk7Ci19Ci0KLXZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKLXsKLSAgICBpZiAoIXNoYXJlZFRp
bWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0
ZShzaGFyZWRUaW1lciwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9NYWluVGhyZWFkU2hhcmVkVGltZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL01haW5UaHJlYWRTaGFyZWRUaW1lckVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMDkwNmMyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9NYWluVGhyZWFkU2hhcmVkVGltZXJFZmwuY3BwCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KKyAq
ICAgICAgICAgICAoQykgMjAwOCBBZm9uc28gUmFiZWxvIENvc3RhIEpyLgorICogICAgICAgICAg
IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAqICAgICAgICAgICAo
QykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1haW5U
aHJlYWRTaGFyZWRUaW1lci5oIgorCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEVjb3JlX1Rp
bWVyKiBzaGFyZWRUaW1lcjsKKworc3RhdGljIEVpbmFfQm9vbCB0aW1lckV2ZW50KHZvaWQqKQor
eworICAgIHNoYXJlZFRpbWVyID0gbnVsbHB0cjsKKyAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6
OnNpbmdsZXRvbigpLmZpcmVkKCk7CisgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsK
K30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3AoKQoreworICAgIGlmIChzaGFy
ZWRUaW1lcikgeworICAgICAgICBlY29yZV90aW1lcl9kZWwoc2hhcmVkVGltZXIpOworICAgICAg
ICBzaGFyZWRUaW1lciA9IG51bGxwdHI7CisgICAgfQorfQorCit2b2lkIE1haW5UaHJlYWRTaGFy
ZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAgICBzdG9wKCk7
CisgICAgc2hhcmVkVGltZXIgPSBlY29yZV90aW1lcl9sb29wX2FkZChpbnRlcnZhbCwgdGltZXJF
dmVudCwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlk
YXRlKCkKK3sKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvU2hhcmVkVGltZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NoYXJl
ZFRpbWVyRWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBiYTAzNi4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgotICogICAgICAgICAgIChDKSAyMDA4IEFmb25z
byBSYWJlbG8gQ29zdGEgSnIuCi0gKiAgICAgICAgICAgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04g
ZW1iZWRkZWQgc3lzdGVtcwotICogICAgICAgICAgIChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVj
dHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkVGltZXIuaCIKLQotI2luY2x1ZGUgPEVj
b3JlLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0YXRpYyBFY29yZV9UaW1lciAqX3NoYXJlZFRpbWVyID0gMDsKLQotc3RhdGljIHZv
aWQgKCpfdGltZXJGdW5jdGlvbikoKTsKLQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rp
b24odm9pZCAoKmZ1bmMpKCkpCi17Ci0gICAgX3RpbWVyRnVuY3Rpb24gPSBmdW5jOwotfQotCi1z
dGF0aWMgRWluYV9Cb29sIHRpbWVyRXZlbnQodm9pZCopCi17Ci0gICAgX3NoYXJlZFRpbWVyID0g
MDsKLSAgICBpZiAoX3RpbWVyRnVuY3Rpb24pCi0gICAgICAgIF90aW1lckZ1bmN0aW9uKCk7Ci0K
LSAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOwotfQotCi12b2lkIHN0b3BTaGFyZWRU
aW1lcigpCi17Ci0gICAgaWYgKF9zaGFyZWRUaW1lcikgewotICAgICAgICBlY29yZV90aW1lcl9k
ZWwoX3NoYXJlZFRpbWVyKTsKLSAgICAgICAgX3NoYXJlZFRpbWVyID0gMDsKLSAgICB9Ci19Ci0K
LXZvaWQgYWRkTmV3VGltZXIoZG91YmxlIGludGVydmFsKQotewotICAgIHN0b3BTaGFyZWRUaW1l
cigpOwotCi0gICAgX3NoYXJlZFRpbWVyID0gZWNvcmVfdGltZXJfbG9vcF9hZGQoaW50ZXJ2YWws
IHRpbWVyRXZlbnQsIDApOwotfQotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRv
dWJsZSBpbnRlcnZhbCkKLXsKLSAgICBhZGROZXdUaW1lcihpbnRlcnZhbCk7Ci19Ci0KLXZvaWQg
aW52YWxpZGF0ZVNoYXJlZFRpbWVyKCkKLXsKLX0KLQotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvTWFpblRocmVhZFNoYXJlZFRpbWVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZDliNTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTWFpblRocmVhZFNoYXJlZFRpbWVyR3RrLmNw
cApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1l
bCBtaWtlLmVtbWVsQGdtYWlsLmNvbQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk1haW5UaHJlYWRTaGFyZWRUaW1lci5oIgorCisjaW5jbHVkZSA8d3RmL2dsaWIv
R01haW5Mb29wU291cmNlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEdNYWlu
TG9vcFNvdXJjZSBnU2hhcmVkVGltZXI7CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpz
ZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIEFTU0VSVChtX2ZpcmVkRnVu
Y3Rpb24pOworCisgICAgLy8gVGhpcyBpcyBHREtfUFJJT1JJVFlfUkVEUkFXLCBidXQgd2UgZG9u
J3Qgd2FudCB0byBkZXBlbmQgb24gR0RLIGhlcmUganVzdCB0byB1c2UgYSBjb25zdGFudC4KKyAg
ICBzdGF0aWMgY29uc3QgaW50IHByaW9yaXR5ID0gR19QUklPUklUWV9ISUdIX0lETEUgKyAyMDsK
KyAgICBnU2hhcmVkVGltZXIuc2NoZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSBzaGFyZWRUaW1l
clRpbWVvdXRDYWxsYmFjayIsIFt0aGlzXSB7IGZpcmVkKCk7IH0sCisgICAgICAgIHN0ZDo6Y2hy
b25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+KHN0ZDo6Y2hyb25v
OjpkdXJhdGlvbjxkb3VibGU+KGludGVydmFsKSksIHByaW9yaXR5KTsKK30KKwordm9pZCBNYWlu
VGhyZWFkU2hhcmVkVGltZXI6OnN0b3AoKQoreworICAgIGdTaGFyZWRUaW1lci5jYW5jZWwoKTsK
K30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUoKQoreworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZmN2Q3My4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlr
ZS5lbW1lbEBnbWFpbC5jb20KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJTaGFyZWRUaW1lci5oIgotCi0jaW5jbHVkZSA8d3RmL2dsaWIvR01haW5Mb29wU291cmNl
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIEdNYWluTG9vcFNvdXJjZSBnU2hh
cmVkVGltZXI7Ci1zdGF0aWMgdm9pZCAoKnNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbikoKTsKLQot
dm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpCi17Ci0gICAgc2hh
cmVkVGltZXJGaXJlZEZ1bmN0aW9uID0gZjsKLSAgICBpZiAoIXNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbikKLSAgICAgICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOwotfQotCi12b2lkIHNldFNoYXJl
ZFRpbWVyRmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBBU1NFUlQoc2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uKTsKLQotICAgIC8vIFRoaXMgaXMgR0RLX1BSSU9SSVRZX1JFRFJB
VywgYnV0IHdlIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9uIEdESyBoZXJlIGp1c3QgdG8gdXNlIGEg
Y29uc3RhbnQuCi0gICAgc3RhdGljIGNvbnN0IGludCBwcmlvcml0eSA9IEdfUFJJT1JJVFlfSElH
SF9JRExFICsgMjA7Ci0gICAgZ1NoYXJlZFRpbWVyLnNjaGVkdWxlQWZ0ZXJEZWxheSgiW1dlYktp
dF0gc2hhcmVkVGltZXJUaW1lb3V0Q2FsbGJhY2siLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oc2hh
cmVkVGltZXJGaXJlZEZ1bmN0aW9uKSwKLSAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nh
c3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJs
ZT4oaW50ZXJ2YWwpKSwgcHJpb3JpdHkpOwotfQotCi12b2lkIHN0b3BTaGFyZWRUaW1lcigpCi17
Ci0gICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOwotfQotCi12b2lkIGludmFsaWRhdGVTaGFyZWRU
aW1lcigpCi17Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9NYWluVGhyZWFkU2hhcmVkVGltZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOWE2NjBkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9NYWluVGhyZWFkU2hhcmVkVGltZXJXaW4uY3BwCkBAIC0wLDAgKzEsMTk4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZFNoYXJlZFRpbWVyLmgiCisKKyNpbmNs
dWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJDb3JlSW5z
dGFuY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9XaW5k
b3dzRXh0cmFzLmg+CisKKyNpbmNsdWRlIDxtbXN5c3RlbS5oPgorCisvLyBUaGVzZSBhcmVuJ3Qg
aW4gd2ludXNlci5oIHdpdGggdGhlIE1TVlMgMjAwMyBQbGF0Zm9ybSBTREssIAorLy8gc28gdXNl
IGRlZmF1bHQgdmFsdWVzIGluIHRoYXQgY2FzZS4KKyNpZm5kZWYgVVNFUl9USU1FUl9NSU5JTVVN
CisjZGVmaW5lIFVTRVJfVElNRVJfTUlOSU1VTSAweDAwMDAwMDBBCisjZW5kaWYKKworI2lmbmRl
ZiBVU0VSX1RJTUVSX01BWElNVU0KKyNkZWZpbmUgVVNFUl9USU1FUl9NQVhJTVVNIDB4N0ZGRkZG
RkYKKyNlbmRpZgorCisjaWZuZGVmIFFTX1JBV0lOUFVUCisjZGVmaW5lIFFTX1JBV0lOUFVUICAg
ICAgICAgMHgwNDAwCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgVUlO
VCB0aW1lcklEOworCitzdGF0aWMgSEFORExFIHRpbWVyOworc3RhdGljIEhXTkQgdGltZXJXaW5k
b3dIYW5kbGUgPSAwOworY29uc3QgTFBDV1NUUiBrVGltZXJXaW5kb3dDbGFzc05hbWUgPSBMIlRp
bWVyV2luZG93Q2xhc3MiOworCitzdGF0aWMgVUlOVCB0aW1lckZpcmVkTWVzc2FnZSA9IDA7Citz
dGF0aWMgSEFORExFIHRpbWVyUXVldWU7CitzdGF0aWMgYm9vbCBoaWdoUmVzVGltZXJBY3RpdmU7
CitzdGF0aWMgYm9vbCBwcm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlID0gZmFsc2U7CitzdGF0
aWMgTE9ORyBwZW5kaW5nVGltZXJzOworCitjb25zdCBpbnQgdGltZXJSZXNvbHV0aW9uID0gMTsg
Ly8gVG8gaW1wcm92ZSB0aW1lciByZXNvbHV0aW9uLCB3ZSBjYWxsIHRpbWVCZWdpblBlcmlvZC90
aW1lRW5kUGVyaW9kIHdpdGggdGhpcyB2YWx1ZSB0byBpbmNyZWFzZSB0aW1lciByZXNvbHV0aW9u
IHRvIDFtcy4KK2NvbnN0IGludCBoaWdoUmVzb2x1dGlvblRocmVzaG9sZE1zZWMgPSAxNjsgLy8g
T25seSBhY3RpdmF0ZSBoaWdoLXJlcyB0aW1lciBmb3Igc3ViLTE2bXMgdGltZXJzIChXaW5kb3dz
IGNhbiBmaXJlIHRpbWVycyBhdCAxNm1zIGludGVydmFscyB3aXRob3V0IGNoYW5naW5nIHRoZSBz
eXN0ZW0gcmVzb2x1dGlvbikuCitjb25zdCBpbnQgc3RvcEhpZ2hSZXNUaW1lckluTXNlYyA9IDMw
MDsgLy8gU3RvcCBoaWdoLXJlcyB0aW1lciBhZnRlciAwLjMgc2Vjb25kcyB0byBsZXNzZW4gcG93
ZXIgY29uc3VtcHRpb24gKHdlIGRvbid0IHVzZSBhIHNtYWxsZXIgdGltZSBzaW5jZSBvc2NpbGxh
dGluZyBiZXR3ZWVuIGhpZ2ggYW5kIGxvdyByZXNvbHV0aW9uIGJyZWFrcyB0aW1lciBhY2N1cmFj
eSBvbiBYUCkuCisKK2VudW0geworICAgIHNoYXJlZFRpbWVySUQgPSAxMDAwLAorICAgIGVuZEhp
Z2hSZXNUaW1lcklEID0gMTAwMSwKK307CisKK0xSRVNVTFQgQ0FMTEJBQ0sgVGltZXJXaW5kb3dX
bmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBh
cmFtKQoreworICAgIGlmIChtZXNzYWdlID09IFdNX1RJTUVSKSB7CisgICAgICAgIGlmICh3UGFy
YW0gPT0gc2hhcmVkVGltZXJJRCkgeworICAgICAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93
SGFuZGxlLCBzaGFyZWRUaW1lcklEKTsKKyAgICAgICAgICAgIE1haW5UaHJlYWRTaGFyZWRUaW1l
cjo6c2luZ2xldG9uKCkuZmlyZWQoKTsKKyAgICAgICAgfSBlbHNlIGlmICh3UGFyYW0gPT0gZW5k
SGlnaFJlc1RpbWVySUQpIHsKKyAgICAgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRs
ZSwgZW5kSGlnaFJlc1RpbWVySUQpOworICAgICAgICAgICAgaGlnaFJlc1RpbWVyQWN0aXZlID0g
ZmFsc2U7CisgICAgICAgICAgICB0aW1lRW5kUGVyaW9kKHRpbWVyUmVzb2x1dGlvbik7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgaWYgKG1lc3NhZ2UgPT0gdGltZXJGaXJlZE1lc3NhZ2UpIHsKKyAg
ICAgICAgSW50ZXJsb2NrZWRFeGNoYW5nZSgmcGVuZGluZ1RpbWVycywgMCk7CisgICAgICAgIHBy
b2Nlc3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgPSB0cnVlOworICAgICAgICBNYWluVGhyZWFkU2hh
cmVkVGltZXI6OnNpbmdsZXRvbigpLmZpcmVkKCk7CisgICAgICAgIHByb2Nlc3NpbmdDdXN0b21U
aW1lck1lc3NhZ2UgPSBmYWxzZTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIERlZldpbmRv
d1Byb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOworCisgICAgcmV0dXJuIDA7Cit9
CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldpbmRvdygpCit7CisgICAg
aWYgKHRpbWVyV2luZG93SGFuZGxlKQorICAgICAgICByZXR1cm47CisKKyAgICBXTkRDTEFTU0VY
IHdjZXg7CisgICAgbWVtc2V0KCZ3Y2V4LCAwLCBzaXplb2YoV05EQ0xBU1NFWCkpOworICAgIHdj
ZXguY2JTaXplID0gc2l6ZW9mKFdORENMQVNTRVgpOworCisgICAgd2NleC5scGZuV25kUHJvYyAg
ICA9IFRpbWVyV2luZG93V25kUHJvYzsKKyAgICB3Y2V4LmhJbnN0YW5jZSAgICAgID0gV2ViQ29y
ZTo6aW5zdGFuY2VIYW5kbGUoKTsKKyAgICB3Y2V4Lmxwc3pDbGFzc05hbWUgID0ga1RpbWVyV2lu
ZG93Q2xhc3NOYW1lOworICAgIFJlZ2lzdGVyQ2xhc3NFeCgmd2NleCk7CisKKyAgICB0aW1lcldp
bmRvd0hhbmRsZSA9IENyZWF0ZVdpbmRvdyhrVGltZXJXaW5kb3dDbGFzc05hbWUsIDAsIDAsCisg
ICAgICAgQ1dfVVNFREVGQVVMVCwgMCwgQ1dfVVNFREVGQVVMVCwgMCwgSFdORF9NRVNTQUdFLCAw
LCBXZWJDb3JlOjppbnN0YW5jZUhhbmRsZSgpLCAwKTsKKworICAgIHRpbWVyRmlyZWRNZXNzYWdl
ID0gUmVnaXN0ZXJXaW5kb3dNZXNzYWdlKEwiY29tLmFwcGxlLldlYktpdC5UaW1lckZpcmVkIik7
Cit9CisKK3N0YXRpYyB2b2lkIE5UQVBJIHF1ZXVlVGltZXJQcm9jKFBWT0lELCBCT09MRUFOKQor
eworICAgIGlmIChJbnRlcmxvY2tlZEluY3JlbWVudCgmcGVuZGluZ1RpbWVycykgPT0gMSkKKyAg
ICAgICAgUG9zdE1lc3NhZ2UodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVyRmlyZWRNZXNzYWdlLCAw
LCAwKTsKK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbChk
b3VibGUgaW50ZXJ2YWwpCit7CisgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlvbik7CisKKyAgICB1
bnNpZ25lZCBpbnRlcnZhbEluTVM7CisgICAgaW50ZXJ2YWwgKj0gMTAwMDsKKyAgICBpZiAoaW50
ZXJ2YWwgPiBVU0VSX1RJTUVSX01BWElNVU0pCisgICAgICAgIGludGVydmFsSW5NUyA9IFVTRVJf
VElNRVJfTUFYSU1VTTsKKyAgICBlbHNlCisgICAgICAgIGludGVydmFsSW5NUyA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpbnRlcnZhbCk7CisKKyAgICBpbml0aWFsaXplT2ZmU2NyZWVuVGltZXJX
aW5kb3coKTsKKyAgICBib29sIHRpbWVyU2V0ID0gZmFsc2U7CisKKyAgICBpZiAoU2V0dGluZ3M6
OnNob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKCkpIHsKKyAgICAgICAgaWYgKGludGVydmFs
IDwgaGlnaFJlc29sdXRpb25UaHJlc2hvbGRNc2VjKSB7CisgICAgICAgICAgICBpZiAoIWhpZ2hS
ZXNUaW1lckFjdGl2ZSkgeworICAgICAgICAgICAgICAgIGhpZ2hSZXNUaW1lckFjdGl2ZSA9IHRy
dWU7CisgICAgICAgICAgICAgICAgdGltZUJlZ2luUGVyaW9kKHRpbWVyUmVzb2x1dGlvbik7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBTZXRUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgZW5k
SGlnaFJlc1RpbWVySUQsIHN0b3BIaWdoUmVzVGltZXJJbk1zZWMsIDApOworICAgICAgICB9CisK
KyAgICAgICAgRFdPUkQgcXVldWVTdGF0dXMgPSBMT1dPUkQoR2V0UXVldWVTdGF0dXMoUVNfUEFJ
TlQgfCBRU19NT1VTRUJVVFRPTiB8IFFTX0tFWSB8IFFTX1JBV0lOUFVUKSk7CisKKyAgICAgICAg
Ly8gV2luMzIgaGFzIGEgdHJpLWxldmVsIHF1ZXVlIHdpdGggYXBwbGljYXRpb24gbWVzc2FnZXMg
PiB1c2VyIGlucHV0ID4gV01fUEFJTlQvV01fVElNRVIuCisKKyAgICAgICAgLy8gSWYgdGhlIHF1
ZXVlIGRvZXNuJ3QgY29udGFpbnMgaW5wdXQgZXZlbnRzLCB3ZSB1c2UgYSBoaWdoZXIgcHJpb3J0
eSB0aW1lciBldmVudCBwb3N0aW5nIG1lY2hhbmlzbS4KKyAgICAgICAgaWYgKCEocXVldWVTdGF0
dXMgJiAoUVNfTU9VU0VCVVRUT04gfCBRU19LRVkgfCBRU19SQVdJTlBVVCkpKSB7CisgICAgICAg
ICAgICBpZiAoaW50ZXJ2YWxJbk1TIDwgVVNFUl9USU1FUl9NSU5JTVVNICYmICFwcm9jZXNzaW5n
Q3VzdG9tVGltZXJNZXNzYWdlICYmICEocXVldWVTdGF0dXMgJiBRU19QQUlOVCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBDYWxsIFBvc3RNZXNzYWdlIGltbWVkaWF0ZWx5IGlmIHRoZSB0aW1lciBp
cyBhbHJlYWR5IGV4cGlyZWQsIHVubGVzcyBhIHBhaW50IGlzIHBlbmRpbmcuCisgICAgICAgICAg
ICAgICAgLy8gKHdlIHByaW9yaXRpemUgcGFpbnRzIG92ZXIgdGltZXJzKQorICAgICAgICAgICAg
ICAgIGlmIChJbnRlcmxvY2tlZEluY3JlbWVudCgmcGVuZGluZ1RpbWVycykgPT0gMSkKKyAgICAg
ICAgICAgICAgICAgICAgUG9zdE1lc3NhZ2UodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVyRmlyZWRN
ZXNzYWdlLCAwLCAwKTsKKyAgICAgICAgICAgICAgICB0aW1lclNldCA9IHRydWU7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgZGVsYXkgdGhlIFBv
c3RNZXNzYWdlIHZpYSBhIENyZWF0ZVRpbWVyUXVldWVUaW1lcgorICAgICAgICAgICAgICAgIGlm
ICghdGltZXJRdWV1ZSkKKyAgICAgICAgICAgICAgICAgICAgdGltZXJRdWV1ZSA9IENyZWF0ZVRp
bWVyUXVldWUoKTsKKyAgICAgICAgICAgICAgICBpZiAodGltZXIpCisgICAgICAgICAgICAgICAg
ICAgIERlbGV0ZVRpbWVyUXVldWVUaW1lcih0aW1lclF1ZXVlLCB0aW1lciwgMCk7CisgICAgICAg
ICAgICAgICAgdGltZXJTZXQgPSBDcmVhdGVUaW1lclF1ZXVlVGltZXIoJnRpbWVyLCB0aW1lclF1
ZXVlLCBxdWV1ZVRpbWVyUHJvYywgMCwgaW50ZXJ2YWxJbk1TLCAwLCBXVF9FWEVDVVRFSU5USU1F
UlRIUkVBRCB8IFdUX0VYRUNVVEVPTkxZT05DRSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAodGltZXJTZXQpIHsKKyAgICAgICAgaWYgKHRpbWVySUQpIHsKKyAg
ICAgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJJRCk7CisgICAgICAg
ICAgICB0aW1lcklEID0gMDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHRpbWVy
SUQgPSBTZXRUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgc2hhcmVkVGltZXJJRCwgaW50ZXJ2YWxJ
bk1TLCAwKTsKKyAgICAgICAgdGltZXIgPSAwOworICAgIH0KK30KKwordm9pZCBNYWluVGhyZWFk
U2hhcmVkVGltZXI6OnN0b3AoKQoreworICAgIGlmICh0aW1lclF1ZXVlICYmIHRpbWVyKSB7Cisg
ICAgICAgIERlbGV0ZVRpbWVyUXVldWVUaW1lcih0aW1lclF1ZXVlLCB0aW1lciwgMCk7CisgICAg
ICAgIHRpbWVyID0gMDsKKyAgICB9CisKKyAgICBpZiAodGltZXJJRCkgeworICAgICAgICBLaWxs
VGltZXIodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVySUQpOworICAgICAgICB0aW1lcklEID0gMDsK
KyAgICB9Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKK3sK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZFRp
bWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkMDJiMTkuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZFRpbWVyV2luLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDIwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkVGltZXIu
aCIKLQotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUg
IldlYkNvcmVJbnN0YW5jZUhhbmRsZS5oIgotI2luY2x1ZGUgIldpZGdldC5oIgotI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5jbHVk
ZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KLQotI2luY2x1ZGUgPG1tc3lzdGVtLmg+Ci0KLS8vIFRo
ZXNlIGFyZW4ndCBpbiB3aW51c2VyLmggd2l0aCB0aGUgTVNWUyAyMDAzIFBsYXRmb3JtIFNESywg
Ci0vLyBzbyB1c2UgZGVmYXVsdCB2YWx1ZXMgaW4gdGhhdCBjYXNlLgotI2lmbmRlZiBVU0VSX1RJ
TUVSX01JTklNVU0KLSNkZWZpbmUgVVNFUl9USU1FUl9NSU5JTVVNIDB4MDAwMDAwMEEKLSNlbmRp
ZgotCi0jaWZuZGVmIFVTRVJfVElNRVJfTUFYSU1VTQotI2RlZmluZSBVU0VSX1RJTUVSX01BWElN
VU0gMHg3RkZGRkZGRgotI2VuZGlmCi0KLSNpZm5kZWYgUVNfUkFXSU5QVVQKLSNkZWZpbmUgUVNf
UkFXSU5QVVQgICAgICAgICAweDA0MDAKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0YXRpYyBVSU5UIHRpbWVySUQ7Ci1zdGF0aWMgdm9pZCAoKnNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbikoKTsKLQotc3RhdGljIEhBTkRMRSB0aW1lcjsKLXN0YXRpYyBIV05EIHRpbWVyV2luZG93
SGFuZGxlID0gMDsKLWNvbnN0IExQQ1dTVFIga1RpbWVyV2luZG93Q2xhc3NOYW1lID0gTCJUaW1l
cldpbmRvd0NsYXNzIjsKLQotc3RhdGljIFVJTlQgdGltZXJGaXJlZE1lc3NhZ2UgPSAwOwotc3Rh
dGljIEhBTkRMRSB0aW1lclF1ZXVlOwotc3RhdGljIGJvb2wgaGlnaFJlc1RpbWVyQWN0aXZlOwot
c3RhdGljIGJvb2wgcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IGZhbHNlOwotc3RhdGlj
IExPTkcgcGVuZGluZ1RpbWVyczsKLQotY29uc3QgaW50IHRpbWVyUmVzb2x1dGlvbiA9IDE7IC8v
IFRvIGltcHJvdmUgdGltZXIgcmVzb2x1dGlvbiwgd2UgY2FsbCB0aW1lQmVnaW5QZXJpb2QvdGlt
ZUVuZFBlcmlvZCB3aXRoIHRoaXMgdmFsdWUgdG8gaW5jcmVhc2UgdGltZXIgcmVzb2x1dGlvbiB0
byAxbXMuCi1jb25zdCBpbnQgaGlnaFJlc29sdXRpb25UaHJlc2hvbGRNc2VjID0gMTY7IC8vIE9u
bHkgYWN0aXZhdGUgaGlnaC1yZXMgdGltZXIgZm9yIHN1Yi0xNm1zIHRpbWVycyAoV2luZG93cyBj
YW4gZmlyZSB0aW1lcnMgYXQgMTZtcyBpbnRlcnZhbHMgd2l0aG91dCBjaGFuZ2luZyB0aGUgc3lz
dGVtIHJlc29sdXRpb24pLgotY29uc3QgaW50IHN0b3BIaWdoUmVzVGltZXJJbk1zZWMgPSAzMDA7
IC8vIFN0b3AgaGlnaC1yZXMgdGltZXIgYWZ0ZXIgMC4zIHNlY29uZHMgdG8gbGVzc2VuIHBvd2Vy
IGNvbnN1bXB0aW9uICh3ZSBkb24ndCB1c2UgYSBzbWFsbGVyIHRpbWUgc2luY2Ugb3NjaWxsYXRp
bmcgYmV0d2VlbiBoaWdoIGFuZCBsb3cgcmVzb2x1dGlvbiBicmVha3MgdGltZXIgYWNjdXJhY3kg
b24gWFApLgotCi1lbnVtIHsKLSAgICBzaGFyZWRUaW1lcklEID0gMTAwMCwKLSAgICBlbmRIaWdo
UmVzVGltZXJJRCA9IDEwMDEsCi19OwotCi1MUkVTVUxUIENBTExCQUNLIFRpbWVyV2luZG93V25k
UHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJh
bSkKLXsKLSAgICBpZiAobWVzc2FnZSA9PSBXTV9USU1FUikgewotICAgICAgICBpZiAod1BhcmFt
ID09IHNoYXJlZFRpbWVySUQpIHsKLSAgICAgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hh
bmRsZSwgc2hhcmVkVGltZXJJRCk7Ci0gICAgICAgICAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rp
b24oKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh3UGFyYW0gPT0gZW5kSGlnaFJlc1Rp
bWVySUQpIHsKLSAgICAgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgZW5kSGln
aFJlc1RpbWVySUQpOwotICAgICAgICAgICAgaGlnaFJlc1RpbWVyQWN0aXZlID0gZmFsc2U7Ci0g
ICAgICAgICAgICB0aW1lRW5kUGVyaW9kKHRpbWVyUmVzb2x1dGlvbik7Ci0gICAgICAgIH0KLSAg
ICB9IGVsc2UgaWYgKG1lc3NhZ2UgPT0gdGltZXJGaXJlZE1lc3NhZ2UpIHsKLSAgICAgICAgSW50
ZXJsb2NrZWRFeGNoYW5nZSgmcGVuZGluZ1RpbWVycywgMCk7Ci0gICAgICAgIHByb2Nlc3NpbmdD
dXN0b21UaW1lck1lc3NhZ2UgPSB0cnVlOwotICAgICAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rp
b24oKTsKLSAgICAgICAgcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IGZhbHNlOwotICAg
IH0gZWxzZQotICAgICAgICByZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFy
YW0sIGxQYXJhbSk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZU9mZlNjcmVlblRpbWVyV2luZG93KCkKLXsKLSAgICBpZiAodGltZXJXaW5kb3dIYW5kbGUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFdORENMQVNTRVggd2NleDsKLSAgICBtZW1zZXQoJndjZXgs
IDAsIHNpemVvZihXTkRDTEFTU0VYKSk7Ci0gICAgd2NleC5jYlNpemUgPSBzaXplb2YoV05EQ0xB
U1NFWCk7Ci0KLSAgICB3Y2V4LmxwZm5XbmRQcm9jICAgID0gVGltZXJXaW5kb3dXbmRQcm9jOwot
ICAgIHdjZXguaEluc3RhbmNlICAgICAgPSBXZWJDb3JlOjppbnN0YW5jZUhhbmRsZSgpOwotICAg
IHdjZXgubHBzekNsYXNzTmFtZSAgPSBrVGltZXJXaW5kb3dDbGFzc05hbWU7Ci0gICAgUmVnaXN0
ZXJDbGFzc0V4KCZ3Y2V4KTsKLQotICAgIHRpbWVyV2luZG93SGFuZGxlID0gQ3JlYXRlV2luZG93
KGtUaW1lcldpbmRvd0NsYXNzTmFtZSwgMCwgMCwKLSAgICAgICBDV19VU0VERUZBVUxULCAwLCBD
V19VU0VERUZBVUxULCAwLCBIV05EX01FU1NBR0UsIDAsIFdlYkNvcmU6Omluc3RhbmNlSGFuZGxl
KCksIDApOwotCi0gICAgdGltZXJGaXJlZE1lc3NhZ2UgPSBSZWdpc3RlcldpbmRvd01lc3NhZ2Uo
TCJjb20uYXBwbGUuV2ViS2l0LlRpbWVyRmlyZWQiKTsKLX0KLQotdm9pZCBzZXRTaGFyZWRUaW1l
ckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpCi17Ci0gICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0
aW9uID0gZjsKLX0KLQotc3RhdGljIHZvaWQgTlRBUEkgcXVldWVUaW1lclByb2MoUFZPSUQsIEJP
T0xFQU4pCi17Ci0gICAgaWYgKEludGVybG9ja2VkSW5jcmVtZW50KCZwZW5kaW5nVGltZXJzKSA9
PSAxKQotICAgICAgICBQb3N0TWVzc2FnZSh0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJGaXJlZE1l
c3NhZ2UsIDAsIDApOwotfQotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJs
ZSBpbnRlcnZhbCkKLXsKLSAgICBBU1NFUlQoc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKTsKLQot
ICAgIHVuc2lnbmVkIGludGVydmFsSW5NUzsKLSAgICBpbnRlcnZhbCAqPSAxMDAwOwotICAgIGlm
IChpbnRlcnZhbCA+IFVTRVJfVElNRVJfTUFYSU1VTSkKLSAgICAgICAgaW50ZXJ2YWxJbk1TID0g
VVNFUl9USU1FUl9NQVhJTVVNOwotICAgIGVsc2UKLSAgICAgICAgaW50ZXJ2YWxJbk1TID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGludGVydmFsKTsKLQotICAgIGluaXRpYWxpemVPZmZTY3JlZW5U
aW1lcldpbmRvdygpOwotICAgIGJvb2wgdGltZXJTZXQgPSBmYWxzZTsKLQotICAgIGlmIChTZXR0
aW5nczo6c2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoKSkgewotICAgICAgICBpZiAoaW50
ZXJ2YWwgPCBoaWdoUmVzb2x1dGlvblRocmVzaG9sZE1zZWMpIHsKLSAgICAgICAgICAgIGlmICgh
aGlnaFJlc1RpbWVyQWN0aXZlKSB7Ci0gICAgICAgICAgICAgICAgaGlnaFJlc1RpbWVyQWN0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0aW1lQmVnaW5QZXJpb2QodGltZXJSZXNvbHV0aW9u
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFNldFRpbWVyKHRpbWVyV2luZG93SGFuZGxl
LCBlbmRIaWdoUmVzVGltZXJJRCwgc3RvcEhpZ2hSZXNUaW1lckluTXNlYywgMCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBEV09SRCBxdWV1ZVN0YXR1cyA9IExPV09SRChHZXRRdWV1ZVN0YXR1cyhR
U19QQUlOVCB8IFFTX01PVVNFQlVUVE9OIHwgUVNfS0VZIHwgUVNfUkFXSU5QVVQpKTsKLQotICAg
ICAgICAvLyBXaW4zMiBoYXMgYSB0cmktbGV2ZWwgcXVldWUgd2l0aCBhcHBsaWNhdGlvbiBtZXNz
YWdlcyA+IHVzZXIgaW5wdXQgPiBXTV9QQUlOVC9XTV9USU1FUi4KLQotICAgICAgICAvLyBJZiB0
aGUgcXVldWUgZG9lc24ndCBjb250YWlucyBpbnB1dCBldmVudHMsIHdlIHVzZSBhIGhpZ2hlciBw
cmlvcnR5IHRpbWVyIGV2ZW50IHBvc3RpbmcgbWVjaGFuaXNtLgotICAgICAgICBpZiAoIShxdWV1
ZVN0YXR1cyAmIChRU19NT1VTRUJVVFRPTiB8IFFTX0tFWSB8IFFTX1JBV0lOUFVUKSkpIHsKLSAg
ICAgICAgICAgIGlmIChpbnRlcnZhbEluTVMgPCBVU0VSX1RJTUVSX01JTklNVU0gJiYgIXByb2Nl
c3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgJiYgIShxdWV1ZVN0YXR1cyAmIFFTX1BBSU5UKSkgewot
ICAgICAgICAgICAgICAgIC8vIENhbGwgUG9zdE1lc3NhZ2UgaW1tZWRpYXRlbHkgaWYgdGhlIHRp
bWVyIGlzIGFscmVhZHkgZXhwaXJlZCwgdW5sZXNzIGEgcGFpbnQgaXMgcGVuZGluZy4KLSAgICAg
ICAgICAgICAgICAvLyAod2UgcHJpb3JpdGl6ZSBwYWludHMgb3ZlciB0aW1lcnMpCi0gICAgICAg
ICAgICAgICAgaWYgKEludGVybG9ja2VkSW5jcmVtZW50KCZwZW5kaW5nVGltZXJzKSA9PSAxKQot
ICAgICAgICAgICAgICAgICAgICBQb3N0TWVzc2FnZSh0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJG
aXJlZE1lc3NhZ2UsIDAsIDApOwotICAgICAgICAgICAgICAgIHRpbWVyU2V0ID0gdHJ1ZTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBkZWxheSB0
aGUgUG9zdE1lc3NhZ2UgdmlhIGEgQ3JlYXRlVGltZXJRdWV1ZVRpbWVyCi0gICAgICAgICAgICAg
ICAgaWYgKCF0aW1lclF1ZXVlKQotICAgICAgICAgICAgICAgICAgICB0aW1lclF1ZXVlID0gQ3Jl
YXRlVGltZXJRdWV1ZSgpOwotICAgICAgICAgICAgICAgIGlmICh0aW1lcikKLSAgICAgICAgICAg
ICAgICAgICAgRGVsZXRlVGltZXJRdWV1ZVRpbWVyKHRpbWVyUXVldWUsIHRpbWVyLCAwKTsKLSAg
ICAgICAgICAgICAgICB0aW1lclNldCA9IENyZWF0ZVRpbWVyUXVldWVUaW1lcigmdGltZXIsIHRp
bWVyUXVldWUsIHF1ZXVlVGltZXJQcm9jLCAwLCBpbnRlcnZhbEluTVMsIDAsIFdUX0VYRUNVVEVJ
TlRJTUVSVEhSRUFEIHwgV1RfRVhFQ1VURU9OTFlPTkNFKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGlmICh0aW1lclNldCkgewotICAgICAgICBpZiAodGltZXJJRCkg
ewotICAgICAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCB0aW1lcklEKTsKLSAg
ICAgICAgICAgIHRpbWVySUQgPSAwOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
dGltZXJJRCA9IFNldFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCBzaGFyZWRUaW1lcklELCBpbnRl
cnZhbEluTVMsIDApOwotICAgICAgICB0aW1lciA9IDA7Ci0gICAgfQotfQotCi12b2lkIHN0b3BT
aGFyZWRUaW1lcigpCi17Ci0gICAgaWYgKHRpbWVyUXVldWUgJiYgdGltZXIpIHsKLSAgICAgICAg
RGVsZXRlVGltZXJRdWV1ZVRpbWVyKHRpbWVyUXVldWUsIHRpbWVyLCAwKTsKLSAgICAgICAgdGlt
ZXIgPSAwOwotICAgIH0KLQotICAgIGlmICh0aW1lcklEKSB7Ci0gICAgICAgIEtpbGxUaW1lcih0
aW1lcldpbmRvd0hhbmRsZSwgdGltZXJJRCk7Ci0gICAgICAgIHRpbWVySUQgPSAwOwotICAgIH0K
LX0KLQotdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGltZXIoKQotewotfQotCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBlODEyMzA4Li42NTlkMDkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXb3JrZXJTaGFyZWRUaW1lciA6IHB1Ymxp
YyBTaGFyZWRUaW1lciB7CitjbGFzcyBXb3JrZXJTaGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBT
aGFyZWRUaW1lciB7CiBwdWJsaWM6CiAgICAgV29ya2VyU2hhcmVkVGltZXIoKQogICAgICAgICA6
IG1fc2hhcmVkVGltZXJGdW5jdGlvbigwKQpAQCAtNTAsMTYgKzUwLDE2IEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICAvLyBTaGFyZWRUaW1lciBpbnRlcmZhY2UuCi0gICAgdmlydHVhbCB2b2lkIHNl
dEZpcmVkRnVuY3Rpb24odm9pZCAoKmZ1bmN0aW9uKSgpKSB7IG1fc2hhcmVkVGltZXJGdW5jdGlv
biA9IGZ1bmN0aW9uOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3VibGUg
aW50ZXJ2YWwpIHsgbV9uZXh0RmlyZVRpbWUgPSBpbnRlcnZhbCArIGN1cnJlbnRUaW1lKCk7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIHsgbV9uZXh0RmlyZVRpbWUgPSAwOyB9CisgICAgdmly
dHVhbCB2b2lkIHNldEZpcmVkRnVuY3Rpb24oc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rp
b24pIG92ZXJyaWRlIHsgbV9zaGFyZWRUaW1lckZ1bmN0aW9uID0gV1RGOjptb3ZlKGZ1bmN0aW9u
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKSBv
dmVycmlkZSB7IG1fbmV4dEZpcmVUaW1lID0gaW50ZXJ2YWwgKyBjdXJyZW50VGltZSgpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHN0b3AoKSBvdmVycmlkZSB7IG1fbmV4dEZpcmVUaW1lID0gMDsgfQog
CiAgICAgYm9vbCBpc0FjdGl2ZSgpIHsgcmV0dXJuIG1fc2hhcmVkVGltZXJGdW5jdGlvbiAmJiBt
X25leHRGaXJlVGltZTsgfQogICAgIGRvdWJsZSBmaXJlVGltZSgpIHsgcmV0dXJuIG1fbmV4dEZp
cmVUaW1lOyB9CiAgICAgdm9pZCBmaXJlKCkgeyBtX3NoYXJlZFRpbWVyRnVuY3Rpb24oKTsgfQog
CiBwcml2YXRlOgotICAgIHZvaWQgKCptX3NoYXJlZFRpbWVyRnVuY3Rpb24pKCk7CisgICAgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IG1fc2hhcmVkVGltZXJGdW5jdGlvbjsKICAgICBkb3VibGUgbV9u
ZXh0RmlyZVRpbWU7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264053</attachid>
            <date>2015-10-26 10:58:52 -0700</date>
            <delta_ts>2015-10-27 02:12:21 -0700</delta_ts>
            <desc>Try to fix win build</desc>
            <filename>wcore-shared-timer.diff</filename>
            <type>text/plain</type>
            <size>52299</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOThmM2VhNC4uYjIwNjMxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMDksNiArMjEwOSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9MaW5rSGFzaC5jcHAKICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmNwcAogICAgIHBsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuY3BwCisgICAgcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVy
LmNwcAogICAgIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKICAgICBwbGF0Zm9y
bS9Ob3RJbXBsZW1lbnRlZC5jcHAKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDI1ZTJiNjAuLjQ5Y2FmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAor
MjAxNS0xMC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
KyAgICAgICAgTWFrZSBldmVyeSBwb3J0IGltcGxlbWVudCBNYWluVGhyZWFkU2hhcmVkVGltZXIg
aW5zdGVhZCBvZiB1c2luZyBnbG9iYWwgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIE1haW5UaHJlYWRTaGFyZWRUaW1lciB0byBp
dHMgb3duIGZpbGVzIGFuZCBhZGQgdGhlIGNvbW1vbgorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0
aGVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgTWFpblRocmVhZFNoYXJlZFRp
bWVyLmNwcC4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogVXBkYXRlIGZpbGVuYW1lcy4K
KyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpNYWluVGhyZWFkU2hhcmVkVGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6ZmlyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwLgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZFRpbWVyLmg6IFJlbW92ZSBNYWluVGhyZWFkU2hhcmVkVGltZXIKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gYW5kIHJlaW5kZW50IHRoZSBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkVGltZXI6OlNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVy
Ojp+U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXI6OmludmFsaWRh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRUaW1lcnM6OlRocmVhZFRpbWVycyk6IFVzZSBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnNpbmdsZXRvbigpLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzZXRTaGFy
ZWRUaW1lcik6IFVzZSBhIGxhbWJkYSBmdW5jdGlvbgorICAgICAgICBpbnN0ZWFkIG9mIGEgcG9p
bnRlciB0byBhIHN0YXRpYyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6
OnNoYXJlZFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRp
bWVycy5oOiBSZW1vdmVkIHVuc3VzZWQgc3RhdGljIG1ldGhvZCBzaGFyZWRUaW1lckZpcmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0dXBQb3dlck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6cmVzdGFydFNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2Vm
bC9NYWluVGhyZWFkU2hhcmVkVGltZXJFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnRp
bWVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVy
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0ay5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsu
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50
ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJXaW5kb3dXbmRQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6
OmluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpxdWV1
ZVRpbWVyUHJvYyk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNl
dEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlk
YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOiBVcGRhdGUgV29ya2Vy
U2hhcmVkVGltZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24gdG8gdXNlIHN0ZDo6ZnVuY3Rpb24g
aW5zdGVhZCBvZiBhIHBvaW50ZXIuIEFsc28KKyAgICAgICAgbWFyayB0aGUgY2xhc3MgYXMgZmlu
YWwgYW5kIHRoZSB2aXJ0dWFsIGltcGxlbWVudGF0aW9ucyBhcyBvdmVycmlkZS4KKwogMjAxNS0x
MC0yNiAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtTdHJlYW1zIEFQSV0gSW1wbGVtZW50IGFib3J0IG1ldGhvZCBvbiB3cml0YWJsZSBz
dHJlYW1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDljYzExNTcuLjA0MTI3OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMTMsMTMgKzExMywxMyBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9lZmwvTG9jYWxpemVkU3RyaW5nc0VmbC5j
cHAKICAgICBwbGF0Zm9ybS9lZmwvTG9nZ2luZ0VmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvTUlN
RVR5cGVSZWdpc3RyeUVmbC5jcHAKKyAgICBwbGF0Zm9ybS9lZmwvTWFpblRocmVhZFNoYXJlZFRp
bWVyRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcAogICAgIHBsYXRm
b3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL1Bs
YXRmb3JtTW91c2VFdmVudEVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1TY3JlZW5F
ZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAKICAgICBw
bGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwCi0gICAgcGxhdGZvcm0vZWZsL1NoYXJl
ZFRpbWVyRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9Tb3VuZEVmbC5jcHAKICAgICBwbGF0Zm9y
bS9lZmwvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRmb3JtL2VmbC9XaWRnZXRFZmwu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGJhYWFjYjkuLmEyMDlhOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xNjEsOCArMTYxLDggQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9Mb2dnaW5nR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9NSU1FVHlwZVJlZ2lzdHJ5
R3RrLmNwcAorICAgIHBsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsuY3BwCiAg
ICAgcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKLSAgICBwbGF0Zm9ybS9ndGsvU2hh
cmVkVGltZXJHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAK
ICAgICBwbGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCmluZGV4IDk3MDQ4ODYuLmNlNjg0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBA
IC0yNjMsMTAgKzI2MywxMCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0Yu
Y3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisgICAgcGxhdGZvcm0vY2Yv
TWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3Np
YmlsaXR5U29mdExpbmsuY3BwCiAgICAgcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAog
ICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1NoYXJl
ZFRpbWVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCiAKICAgICBwbGF0Zm9ybS9j
b2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdp
bi5jbWFrZQppbmRleCAwMjExZjY4Li40ZWY4YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFr
ZQpAQCAtMTI0LDYgKzEyNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3Bw
CisgICAgcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKICAgICBwbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5j
cHAKICAgICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcApAQCAtMTMzLDcg
KzEzNCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9T
Y3JvbGxiYXJUaGVtZVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2lu
LmNwcAogICAgIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCi0gICAgcGxhdGZvcm0v
d2luL1NoYXJlZFRpbWVyV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9Tb3VuZFdpbi5jcHAKICAg
ICBwbGF0Zm9ybS93aW4vU3RydWN0dXJlZEV4Y2VwdGlvbkhhbmRsZXJTdXBwcmVzc29yLmNwcAog
ICAgIHBsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNjdmMTdjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRo
cmVhZFNoYXJlZFRpbWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTWFpblRocmVhZFNo
YXJlZFRpbWVyJiBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPE1haW5UaHJlYWRTaGFyZWRUaW1lcj4gaW5zdGFuY2U7CisgICAg
cmV0dXJuIGluc3RhbmNlOworfQorCitNYWluVGhyZWFkU2hhcmVkVGltZXI6Ok1haW5UaHJlYWRT
aGFyZWRUaW1lcigpCit7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJl
ZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZpcmVkRnVuY3Rpb24pCit7CisgICAg
UkVMRUFTRV9BU1NFUlQoIW1fZmlyZWRGdW5jdGlvbiB8fCAhZmlyZWRGdW5jdGlvbik7CisgICAg
bV9maXJlZEZ1bmN0aW9uID0gV1RGOjptb3ZlKGZpcmVkRnVuY3Rpb24pOworfQorCit2b2lkIE1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6ZmlyZWQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2ZpcmVk
RnVuY3Rpb24pOworICAgIG1fZmlyZWRGdW5jdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hh
cmVkVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1l
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNDYxYzUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIu
aApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNYWlu
VGhyZWFkU2hhcmVkVGltZXJfaAorI2RlZmluZSBNYWluVGhyZWFkU2hhcmVkVGltZXJfaAorCisj
aW5jbHVkZSAiU2hhcmVkVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNYWluVGhyZWFkU2hhcmVkVGltZXIgZmlu
YWwgOiBwdWJsaWMgU2hhcmVkVGltZXIgeworICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVz
dHJveWVkPE1haW5UaHJlYWRTaGFyZWRUaW1lcj47CitwdWJsaWM6CisgICAgc3RhdGljIE1haW5U
aHJlYWRTaGFyZWRUaW1lciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHNldEZpcmVkRnVuY3Rp
b24oc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RmlyZUlu
dGVydmFsKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQg
YmUgcHJpdmF0ZSwgYnV0IENGIGFuZCBXaW5kb3dzIGltcGxlbWVudGF0aW9ucworICAgIC8vIG5l
ZWQgdG8gY2FsbCB0aGlzIGZyb20gc3RhdGljIG1ldGhvZHMgYXQgdGhlIG1vbWVudC4KKyAgICB2
b2lkIGZpcmVkKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgTWFpblRocmVhZFNoYXJlZFRpbWVy
KCk7CisKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9maXJlZEZ1bmN0aW9uIHsgbnVsbHB0
ciB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTWFpblRocmVh
ZFNoYXJlZFRpbWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRU
aW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAppbmRleCAyOTlj
NDk5Li5jYWMxYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRU
aW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKQEAgLTI2
LDU5ICsyNiwyOCBAQAogI2lmbmRlZiBTaGFyZWRUaW1lcl9oCiAjZGVmaW5lIFNoYXJlZFRpbWVy
X2gKIAorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0g
ICAgLy8gRWFjaCB0aHJlYWQgaGFzIGl0cyBvd24gc2luZ2xlIGluc3RhbmNlIG9mIHNoYXJlZCB0
aW1lciwgd2hpY2ggaW1wbGVtZW50cyB0aGlzIGludGVyZmFjZS4KLSAgICAvLyBUaGlzIGluc3Rh
bmNlIGlzIHNoYXJlZCBieSBhbGwgdGltZXJzIGluIHRoZSB0aHJlYWQuCi0gICAgLy8gTm90IGlu
dGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHk7IHVzZSB0aGUgVGltZXIgY2xhc3MgaW5zdGVhZC4K
LSAgICBjbGFzcyBTaGFyZWRUaW1lciB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNo
YXJlZFRpbWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAgICAg
ICBTaGFyZWRUaW1lcigpIHsgfQotICAgICAgICB2aXJ0dWFsIH5TaGFyZWRUaW1lcigpIHt9Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHZvaWQgKCopKCkpID0gMDsKLQot
ICAgICAgICAvLyBUaGUgZmlyZSBpbnRlcnZhbCBpcyBpbiBzZWNvbmRzIHJlbGF0aXZlIHRvIHRo
ZSBjdXJyZW50IG1vbm90b25pYyBjbG9jayB0aW1lLgotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0
RmlyZUludGVydmFsKGRvdWJsZSkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0g
MDsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIHsgfQotICAgIH07Ci0KLQot
ICAgIC8vIEltcGxlbWVudGVkIGJ5IHBvcnQgKHNpbmNlIGl0IHByb3ZpZGVzIHRoZSBydW4gbG9v
cCBmb3IgdGhlIG1haW4gdGhyZWFkKS4KLSAgICAvLyBGSVhNRTogbWFrZSBwb3J0cyBpbXBsZW1l
bnQgTWFpblRocmVhZFNoYXJlZFRpbWVyIGRpcmVjdGx5IGluc3RlYWQuCi0gICAgdm9pZCBzZXRT
aGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKikoKSk7Ci0gICAgdm9pZCBzZXRTaGFyZWRU
aW1lckZpcmVJbnRlcnZhbChkb3VibGUpOwotICAgIHZvaWQgc3RvcFNoYXJlZFRpbWVyKCk7Ci0g
ICAgdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGltZXIoKTsKLQotICAgIC8vIEltcGxlbWVudGF0aW9u
IG9mIFNoYXJlZFRpbWVyIGZvciB0aGUgbWFpbiB0aHJlYWQuCi0gICAgY2xhc3MgTWFpblRocmVh
ZFNoYXJlZFRpbWVyIGZpbmFsIDogcHVibGljIFNoYXJlZFRpbWVyIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbih2b2lkICgqZnVuY3Rpb24pKCkpIG92ZXJyaWRl
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbihmdW5j
dGlvbik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0RmlyZUludGVydmFs
KGRvdWJsZSBpbnRlcnZhbCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgc2V0U2hh
cmVkVGltZXJGaXJlSW50ZXJ2YWwoaW50ZXJ2YWwpOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBzdG9wU2hh
cmVkVGltZXIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJy
aWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludmFsaWRhdGVTaGFyZWRUaW1lcigpOwotICAg
ICAgICB9Ci0gICAgfTsKKy8vIEVhY2ggdGhyZWFkIGhhcyBpdHMgb3duIHNpbmdsZSBpbnN0YW5j
ZSBvZiBzaGFyZWQgdGltZXIsIHdoaWNoIGltcGxlbWVudHMgdGhpcyBpbnRlcmZhY2UuCisvLyBU
aGlzIGluc3RhbmNlIGlzIHNoYXJlZCBieSBhbGwgdGltZXJzIGluIHRoZSB0aHJlYWQuCisvLyBO
b3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseTsgdXNlIHRoZSBUaW1lciBjbGFzcyBpbnN0
ZWFkLgorY2xhc3MgU2hhcmVkVGltZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYXJl
ZFRpbWVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkVGlt
ZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5TaGFyZWRUaW1lcigpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CisKKyAgICAv
LyBUaGUgZmlyZSBpbnRlcnZhbCBpcyBpbiBzZWNvbmRzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50
IG1vbm90b25pYyBjbG9jayB0aW1lLgorICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlSW50ZXJ2YWwo
ZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgaW52YWxpZGF0ZSgpIHsgfQorfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcAppbmRleCAxMjMxY2EyLi4wMjI4
MzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUaHJlYWRUaW1lcnMuaCIK
IAorI2luY2x1ZGUgIk1haW5UaHJlYWRTaGFyZWRUaW1lci5oIgogI2luY2x1ZGUgIlNoYXJlZFRp
bWVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CkBAIC00NywyNyArNDgsMjEgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhEdXJhdGlvbk9mRmly
aW5nVGltZXJzID0gMC4wNTA7CiAvLyBUaW1lcnMgYXJlIGNyZWF0ZWQsIHN0YXJ0ZWQgYW5kIGZp
cmVkIG9uIHRoZSBzYW1lIHRocmVhZCwgYW5kIGVhY2ggdGhyZWFkIGhhcyBpdHMgb3duIFRocmVh
ZFRpbWVycwogLy8gY29weSB0byBrZWVwIHRoZSBoZWFwIGFuZCBhIHNldCBvZiBjdXJyZW50bHkg
ZmlyaW5nIHRpbWVycy4KIAotc3RhdGljIE1haW5UaHJlYWRTaGFyZWRUaW1lciogbWFpblRocmVh
ZFNoYXJlZFRpbWVyKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZFNoYXJlZFRpbWVyKiB0aW1l
ciA9IG5ldyBNYWluVGhyZWFkU2hhcmVkVGltZXI7Ci0gICAgcmV0dXJuIHRpbWVyOwotfQotCiBU
aHJlYWRUaW1lcnM6OlRocmVhZFRpbWVycygpCiAgICAgOiBtX3NoYXJlZFRpbWVyKDApCiAgICAg
LCBtX2ZpcmluZ1RpbWVycyhmYWxzZSkKICAgICAsIG1fcGVuZGluZ1NoYXJlZFRpbWVyRmlyZVRp
bWUoMCkKIHsKICAgICBpZiAoaXNVSVRocmVhZCgpKQotICAgICAgICBzZXRTaGFyZWRUaW1lciht
YWluVGhyZWFkU2hhcmVkVGltZXIoKSk7CisgICAgICAgIHNldFNoYXJlZFRpbWVyKCZNYWluVGhy
ZWFkU2hhcmVkVGltZXI6OnNpbmdsZXRvbigpKTsKIH0KIAogLy8gQSB3b3JrZXIgdGhyZWFkIG1h
eSBpbml0aWFsaXplIFNoYXJlZFRpbWVyIGFmdGVyIHNvbWUgdGltZXJzIGFyZSBjcmVhdGVkLgot
Ly8gQWxzbywgU2hhcmVkVGltZXIgY2FuIGJlIHJlcGxhY2VkIHdpdGggMCBiZWZvcmUgYWxsIHRp
bWVycyBhcmUgZGVzdHJveWVkLgorLy8gQWxzbywgU2hhcmVkVGltZXIgY2FuIGJlIHJlcGxhY2Vk
IHdpdGggbnVsbHB0ciBiZWZvcmUgYWxsIHRpbWVycyBhcmUgZGVzdHJveWVkLgogdm9pZCBUaHJl
YWRUaW1lcnM6OnNldFNoYXJlZFRpbWVyKFNoYXJlZFRpbWVyKiBzaGFyZWRUaW1lcikKIHsKICAg
ICBpZiAobV9zaGFyZWRUaW1lcikgewotICAgICAgICBtX3NoYXJlZFRpbWVyLT5zZXRGaXJlZEZ1
bmN0aW9uKDApOworICAgICAgICBtX3NoYXJlZFRpbWVyLT5zZXRGaXJlZEZ1bmN0aW9uKG51bGxw
dHIpOwogICAgICAgICBtX3NoYXJlZFRpbWVyLT5zdG9wKCk7CiAgICAgICAgIG1fcGVuZGluZ1No
YXJlZFRpbWVyRmlyZVRpbWUgPSAwOwogICAgIH0KQEAgLTc1LDcgKzcwLDcgQEAgdm9pZCBUaHJl
YWRUaW1lcnM6OnNldFNoYXJlZFRpbWVyKFNoYXJlZFRpbWVyKiBzaGFyZWRUaW1lcikKICAgICBt
X3NoYXJlZFRpbWVyID0gc2hhcmVkVGltZXI7CiAgICAgCiAgICAgaWYgKHNoYXJlZFRpbWVyKSB7
Ci0gICAgICAgIG1fc2hhcmVkVGltZXItPnNldEZpcmVkRnVuY3Rpb24oVGhyZWFkVGltZXJzOjpz
aGFyZWRUaW1lckZpcmVkKTsKKyAgICAgICAgbV9zaGFyZWRUaW1lci0+c2V0RmlyZWRGdW5jdGlv
bihbXSB7IHRocmVhZEdsb2JhbERhdGEoKS50aHJlYWRUaW1lcnMoKS5zaGFyZWRUaW1lckZpcmVk
SW50ZXJuYWwoKTsgfSk7CiAgICAgICAgIHVwZGF0ZVNoYXJlZFRpbWVyKCk7CiAgICAgfQogfQpA
QCAtMTAxLDEyICs5Niw2IEBAIHZvaWQgVGhyZWFkVGltZXJzOjp1cGRhdGVTaGFyZWRUaW1lcigp
CiAgICAgfQogfQogCi12b2lkIFRocmVhZFRpbWVyczo6c2hhcmVkVGltZXJGaXJlZCgpCi17Ci0g
ICAgLy8gUmVkaXJlY3QgdG8gbm9uLXN0YXRpYyBtZXRob2QuCi0gICAgdGhyZWFkR2xvYmFsRGF0
YSgpLnRocmVhZFRpbWVycygpLnNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpOwotfQotCiB2b2lk
IFRocmVhZFRpbWVyczo6c2hhcmVkVGltZXJGaXJlZEludGVybmFsKCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkgfHwgKCFpc1dlYlRocmVhZCgpICYmICFpc1VJVGhyZWFkKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmgKaW5kZXggMTVkOWYzNy4uZTRmMjYyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmgKQEAgLTUxLDggKzUxLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50
TG9vcCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIHZvaWQgc2hhcmVkVGltZXJG
aXJlZCgpOwotCiAgICAgICAgIHZvaWQgc2hhcmVkVGltZXJGaXJlZEludGVybmFsKCk7CiAgICAg
ICAgIHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wSW50ZXJuYWwoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0Yu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0Yu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNjI0NzkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGlt
ZXJDRi5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
Ik1haW5UaHJlYWRTaGFyZWRUaW1lci5oIgorCisjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9v
bC5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2ltcG9ydCAiUG93ZXJPYnNlcnZlck1hYy5oIgor
I2VsaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCAiV2ViQ29yZVRocmVhZC5oIgorI2ltcG9ydCAi
V2ViQ29yZVRocmVhZFJ1bi5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIENGUnVuTG9vcFRpbWVyUmVmIHNoYXJlZFRpbWVyOworc3RhdGljIHZvaWQgdGltZXJGaXJl
ZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOworc3RhdGljIHZvaWQgcmVzdGFydFNoYXJlZFRp
bWVyKCk7CisKK3N0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0
YW50RnV0dXJlID0gc3RkOjpudW1lcmljX2xpbWl0czxDRlRpbWVJbnRlcnZhbD46Om1heCgpOwor
CisjaWYgUExBVEZPUk0oSU9TKQorc3RhdGljIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmUoQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqLCBDRlN0cmluZ1JlZiwgY29uc3Qgdm9p
ZCosIENGRGljdGlvbmFyeVJlZikKK3sKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgcmVz
dGFydFNoYXJlZFRpbWVyKCk7CisgICAgfSk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgc2V0
dXBQb3dlck9ic2VydmVyKCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIFBvd2Vy
T2JzZXJ2ZXIqIHBvd2VyT2JzZXJ2ZXI7CisgICAgaWYgKCFwb3dlck9ic2VydmVyKQorICAgICAg
ICBwb3dlck9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0
U2hhcmVkVGltZXIpLnJlbGVhc2UoKTsKKyNlbGlmIFBMQVRGT1JNKElPUykKKyAgICBzdGF0aWMg
Ym9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBmYWxzZTsKKyAgICBp
ZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikgeworICAgICAgICByZWdp
c3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSB0cnVlOworICAgICAgICBDRk5vdGlm
aWNhdGlvbkNlbnRlclJlZiBub3RpZmljYXRpb25DZW50ZXIgPSBDRk5vdGlmaWNhdGlvbkNlbnRl
ckdldExvY2FsQ2VudGVyKCk7CisgICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2
ZXIobm90aWZpY2F0aW9uQ2VudGVyLCBudWxscHRyLCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2
ZSwgQ0ZTVFIoIlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24iKSwgbnVs
bHB0ciwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JDb2FsZXNjZSk7CisgICAgfQor
I2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZv
aWQqKQoreworICAgIEF1dG9kcmFpbmVkUG9vbCBwb29sOworICAgIE1haW5UaHJlYWRTaGFyZWRU
aW1lcjo6c2luZ2xldG9uKCkuZmlyZWQoKTsKK30KKworc3RhdGljIHZvaWQgcmVzdGFydFNoYXJl
ZFRpbWVyKCkKK3sKKyAgICBpZiAoIXNoYXJlZFRpbWVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNpbmdsZXRvbigpLnN0b3AoKTsKKyAgICB0aW1lckZp
cmVkKDAsIDApOworfQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgp
Cit7CisgICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ0ZSdW5M
b29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRpbWVyKTsKKyAgICBDRlJlbGVhc2Uoc2hhcmVkVGlt
ZXIpOworICAgIHNoYXJlZFRpbWVyID0gbnVsbHB0cjsKK30KKwordm9pZCBNYWluVGhyZWFkU2hh
cmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgQVNTRVJU
KG1fZmlyZWRGdW5jdGlvbik7CisKKyAgICBDRkFic29sdXRlVGltZSBmaXJlRGF0ZSA9IENGQWJz
b2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50ZXJ2YWw7CisgICAgaWYgKCFzaGFyZWRUaW1lcikg
eworICAgICAgICBzaGFyZWRUaW1lciA9IENGUnVuTG9vcFRpbWVyQ3JlYXRlKG51bGxwdHIsIGZp
cmVEYXRlLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlLCAwLCAwLCB0aW1lckZpcmVkLCBu
dWxscHRyKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKFdl
YlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVkVGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Cisj
ZWxzZQorICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHNo
YXJlZFRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworI2VuZGlmCisKKyAgICAgICAgc2V0
dXBQb3dlck9ic2VydmVyKCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENGUnVu
TG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyLCBmaXJlRGF0ZSk7Cit9CisKK3Zv
aWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKCkKK3sKKyAgICBpZiAoIXNoYXJlZFRpbWVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShz
aGFyZWRUaW1lciwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZFRpbWVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkVGltZXJD
Ri5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmZDcwN2IuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkVGltZXJDRi5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiU2hh
cmVkVGltZXIuaCIKLQotI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KLQotI2lmIFBM
QVRGT1JNKE1BQykKLSNpbXBvcnQgIlBvd2VyT2JzZXJ2ZXJNYWMuaCIKLSNlbGlmIFBMQVRGT1JN
KElPUykKLSNpbXBvcnQgIldlYkNvcmVUaHJlYWQuaCIKLSNpbXBvcnQgIldlYkNvcmVUaHJlYWRS
dW4uaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBDRlJ1bkxvb3BU
aW1lclJlZiBzaGFyZWRUaW1lcjsKLXN0YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0
aW9uKSgpOwotc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCop
Owotc3RhdGljIHZvaWQgcmVzdGFydFNoYXJlZFRpbWVyKCk7Ci0KLXN0YXRpYyBjb25zdCBDRlRp
bWVJbnRlcnZhbCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlID0gc3RkOjpudW1lcmljX2xp
bWl0czxDRlRpbWVJbnRlcnZhbD46Om1heCgpOwotCi0jaWYgUExBVEZPUk0oSU9TKQotc3RhdGlj
IHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYs
IHZvaWQqLCBDRlN0cmluZ1JlZiwgY29uc3Qgdm9pZCosIENGRGljdGlvbmFyeVJlZikKLXsKLSAg
ICBXZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgcmVzdGFydFNoYXJlZFRpbWVyKCk7Ci0gICAgfSk7
Ci19Ci0jZW5kaWYKLQotc3RhdGljIHZvaWQgc2V0dXBQb3dlck9ic2VydmVyKCkKLXsKLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgc3RhdGljIFBvd2VyT2JzZXJ2ZXIqIHBvd2VyT2JzZXJ2ZXI7Ci0g
ICAgaWYgKCFwb3dlck9ic2VydmVyKQotICAgICAgICBwb3dlck9ic2VydmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0U2hhcmVkVGltZXIpLnJlbGVhc2UoKTsKLSNl
bGlmIFBMQVRGT1JNKElPUykKLSAgICBzdGF0aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRp
b25Ob3RpZmljYXRpb24gPSBmYWxzZTsKLSAgICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlv
bk5vdGlmaWNhdGlvbikgewotICAgICAgICByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmlj
YXRpb24gPSB0cnVlOwotICAgICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiBub3RpZmljYXRp
b25DZW50ZXIgPSBDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCk7Ci0gICAgICAg
IENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIobm90aWZpY2F0aW9uQ2VudGVyLCBudWxs
cHRyLCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSwgQ0ZTVFIoIlVJQXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmVOb3RpZmljYXRpb24iKSwgbnVsbHB0ciwgQ0ZOb3RpZmljYXRpb25TdXNwZW5z
aW9uQmVoYXZpb3JDb2FsZXNjZSk7Ci0gICAgfQotI2VuZGlmCi19Ci0KLXZvaWQgc2V0U2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmKSgpKQotewotICAgIEFTU0VSVCghc2hhcmVkVGlt
ZXJGaXJlZEZ1bmN0aW9uIHx8IHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiA9PSBmKTsKLQotICAg
IHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiA9IGY7Ci19Ci0KLXN0YXRpYyB2b2lkIHRpbWVyRmly
ZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKQotewotICAgIEF1dG9kcmFpbmVkUG9vbCBwb29s
OwotICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbigpOwotfQotCi1zdGF0aWMgdm9pZCByZXN0
YXJ0U2hhcmVkVGltZXIoKQotewotICAgIGlmICghc2hhcmVkVGltZXIpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHN0b3BTaGFyZWRUaW1lcigpOwotICAgIHRpbWVyRmlyZWQoMCwgMCk7Ci19Ci0K
LXZvaWQgaW52YWxpZGF0ZVNoYXJlZFRpbWVyKCkKLXsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUoc2hhcmVkVGlt
ZXIpOwotICAgIENGUmVsZWFzZShzaGFyZWRUaW1lcik7Ci0gICAgc2hhcmVkVGltZXIgPSBudWxs
cHRyOwotfQotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZh
bCkKLXsKLSAgICBBU1NFUlQoc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKTsKLQotICAgIENGQWJz
b2x1dGVUaW1lIGZpcmVEYXRlID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBpbnRlcnZh
bDsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKSB7Ci0gICAgICAgIHNoYXJlZFRpbWVyID0gQ0ZSdW5M
b29wVGltZXJDcmVhdGUobnVsbHB0ciwgZmlyZURhdGUsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRG
dXR1cmUsIDAsIDAsIHRpbWVyRmlyZWQsIG51bGxwdHIpOwotI2lmIFBMQVRGT1JNKElPUykKLSAg
ICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoV2ViVGhyZWFkUnVuTG9vcCgpLCBzaGFyZWRUaW1lciwg
a0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSNlbHNlCi0gICAgICAgIENGUnVuTG9vcEFkZFRpbWVy
KENGUnVuTG9vcEdldEN1cnJlbnQoKSwgc2hhcmVkVGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rl
cyk7Ci0jZW5kaWYKLQotICAgICAgICBzZXR1cFBvd2VyT2JzZXJ2ZXIoKTsKLQotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVk
VGltZXIsIGZpcmVEYXRlKTsKLX0KLQotdm9pZCBzdG9wU2hhcmVkVGltZXIoKQotewotICAgIGlm
ICghc2hhcmVkVGltZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIENGUnVuTG9vcFRpbWVyU2V0
TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL01haW5UaHJlYWRTaGFyZWRUaW1lckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvTWFpblRocmVhZFNoYXJlZFRpbWVyRWZsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTA2YzI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL01haW5UaHJlYWRTaGFyZWRUaW1lckVmbC5jcHAKQEAgLTAs
MCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbgorICogICAgICAgICAgIChDKSAyMDA4IEFmb25zbyBSYWJlbG8gQ29zdGEgSnIuCisg
KiAgICAgICAgICAgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICog
ICAgICAgICAgIChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTWFpblRocmVhZFNoYXJlZFRpbWVyLmgiCisKKyNpbmNsdWRlIDxFY29yZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Cisj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgRWNvcmVfVGltZXIqIHNoYXJlZFRpbWVyOworCitzdGF0aWMgRWluYV9Cb29sIHRpbWVyRXZl
bnQodm9pZCopCit7CisgICAgc2hhcmVkVGltZXIgPSBudWxscHRyOworICAgIE1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6c2luZ2xldG9uKCkuZmlyZWQoKTsKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJB
Q0tfQ0FOQ0VMOworfQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCgpCit7Cisg
ICAgaWYgKHNoYXJlZFRpbWVyKSB7CisgICAgICAgIGVjb3JlX3RpbWVyX2RlbChzaGFyZWRUaW1l
cik7CisgICAgICAgIHNoYXJlZFRpbWVyID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK3ZvaWQgTWFp
blRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQorewor
ICAgIHN0b3AoKTsKKyAgICBzaGFyZWRUaW1lciA9IGVjb3JlX3RpbWVyX2xvb3BfYWRkKGludGVy
dmFsLCB0aW1lckV2ZW50LCBudWxscHRyKTsKK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OmludmFsaWRhdGUoKQoreworfQorCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
MGJhMDM2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TaGFyZWRU
aW1lckVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA4IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuCi0gKiAgICAgICAgICAgKEMp
IDIwMDggQWZvbnNvIFJhYmVsbyBDb3N0YSBKci4KLSAqICAgICAgICAgICAoQykgMjAwOS0yMDEw
IFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiAgICAgICAgICAgKEMpIDIwMDktMjAxMCBT
YW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgotCi0j
aW5jbHVkZSA8RWNvcmUuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIEVjb3JlX1RpbWVyICpfc2hhcmVkVGltZXIgPSAwOwot
Ci1zdGF0aWMgdm9pZCAoKl90aW1lckZ1bmN0aW9uKSgpOwotCi12b2lkIHNldFNoYXJlZFRpbWVy
RmlyZWRGdW5jdGlvbih2b2lkICgqZnVuYykoKSkKLXsKLSAgICBfdGltZXJGdW5jdGlvbiA9IGZ1
bmM7Ci19Ci0KLXN0YXRpYyBFaW5hX0Jvb2wgdGltZXJFdmVudCh2b2lkKikKLXsKLSAgICBfc2hh
cmVkVGltZXIgPSAwOwotICAgIGlmIChfdGltZXJGdW5jdGlvbikKLSAgICAgICAgX3RpbWVyRnVu
Y3Rpb24oKTsKLQotICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7Ci19Ci0KLXZvaWQg
c3RvcFNoYXJlZFRpbWVyKCkKLXsKLSAgICBpZiAoX3NoYXJlZFRpbWVyKSB7Ci0gICAgICAgIGVj
b3JlX3RpbWVyX2RlbChfc2hhcmVkVGltZXIpOwotICAgICAgICBfc2hhcmVkVGltZXIgPSAwOwot
ICAgIH0KLX0KLQotdm9pZCBhZGROZXdUaW1lcihkb3VibGUgaW50ZXJ2YWwpCi17Ci0gICAgc3Rv
cFNoYXJlZFRpbWVyKCk7Ci0KLSAgICBfc2hhcmVkVGltZXIgPSBlY29yZV90aW1lcl9sb29wX2Fk
ZChpbnRlcnZhbCwgdGltZXJFdmVudCwgMCk7Ci19Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJl
SW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQotewotICAgIGFkZE5ld1RpbWVyKGludGVydmFsKTsK
LX0KLQotdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGltZXIoKQotewotfQotCi19Ci0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0
ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdkOWI1MAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVk
VGltZXJHdGsuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBN
aWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZFNoYXJlZFRpbWVyLmgiCisKKyNpbmNsdWRl
IDx3dGYvZ2xpYi9HTWFpbkxvb3BTb3VyY2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgR01haW5Mb29wU291cmNlIGdTaGFyZWRUaW1lcjsKKwordm9pZCBNYWluVGhyZWFkU2hh
cmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgQVNTRVJU
KG1fZmlyZWRGdW5jdGlvbik7CisKKyAgICAvLyBUaGlzIGlzIEdES19QUklPUklUWV9SRURSQVcs
IGJ1dCB3ZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBHREsgaGVyZSBqdXN0IHRvIHVzZSBhIGNv
bnN0YW50LgorICAgIHN0YXRpYyBjb25zdCBpbnQgcHJpb3JpdHkgPSBHX1BSSU9SSVRZX0hJR0hf
SURMRSArIDIwOworICAgIGdTaGFyZWRUaW1lci5zY2hlZHVsZUFmdGVyRGVsYXkoIltXZWJLaXRd
IHNoYXJlZFRpbWVyVGltZW91dENhbGxiYWNrIiwgW3RoaXNdIHsgZmlyZWQoKTsgfSwKKyAgICAg
ICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4o
c3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oaW50ZXJ2YWwpKSwgcHJpb3JpdHkpOworfQor
Cit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCgpCit7CisgICAgZ1NoYXJlZFRpbWVy
LmNhbmNlbCgpOworfQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgp
Cit7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFy
ZWRUaW1lckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJH
dGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmY3ZDczLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFl
bCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlNoYXJlZFRpbWVyLmgiCi0KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HTWFp
bkxvb3BTb3VyY2UuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgR01haW5Mb29w
U291cmNlIGdTaGFyZWRUaW1lcjsKLXN0YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0
aW9uKSgpOwotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqZikoKSkK
LXsKLSAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gPSBmOwotICAgIGlmICghc2hhcmVkVGlt
ZXJGaXJlZEZ1bmN0aW9uKQotICAgICAgICBnU2hhcmVkVGltZXIuY2FuY2VsKCk7Ci19Ci0KLXZv
aWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQotewotICAgIEFT
U0VSVChzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOwotCi0gICAgLy8gVGhpcyBpcyBHREtfUFJJ
T1JJVFlfUkVEUkFXLCBidXQgd2UgZG9uJ3Qgd2FudCB0byBkZXBlbmQgb24gR0RLIGhlcmUganVz
dCB0byB1c2UgYSBjb25zdGFudC4KLSAgICBzdGF0aWMgY29uc3QgaW50IHByaW9yaXR5ID0gR19Q
UklPUklUWV9ISUdIX0lETEUgKyAyMDsKLSAgICBnU2hhcmVkVGltZXIuc2NoZWR1bGVBZnRlckRl
bGF5KCJbV2ViS2l0XSBzaGFyZWRUaW1lclRpbWVvdXRDYWxsYmFjayIsIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPihzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pLAotICAgICAgICBzdGQ6OmNocm9ubzo6
ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVy
YXRpb248ZG91YmxlPihpbnRlcnZhbCkpLCBwcmlvcml0eSk7Ci19Ci0KLXZvaWQgc3RvcFNoYXJl
ZFRpbWVyKCkKLXsKLSAgICBnU2hhcmVkVGltZXIuY2FuY2VsKCk7Ci19Ci0KLXZvaWQgaW52YWxp
ZGF0ZVNoYXJlZFRpbWVyKCkKLXsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTWFpblRocmVhZFNoYXJlZFRpbWVyV2luLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTY2MGRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKQEAgLTAs
MCArMSwxOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWluVGhyZWFkU2hhcmVkVGltZXIu
aCIKKworI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUg
IldlYkNvcmVJbnN0YW5jZUhhbmRsZS5oIgorI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVk
ZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KKworI2luY2x1ZGUgPG1tc3lzdGVtLmg+CisKKy8vIFRo
ZXNlIGFyZW4ndCBpbiB3aW51c2VyLmggd2l0aCB0aGUgTVNWUyAyMDAzIFBsYXRmb3JtIFNESywg
CisvLyBzbyB1c2UgZGVmYXVsdCB2YWx1ZXMgaW4gdGhhdCBjYXNlLgorI2lmbmRlZiBVU0VSX1RJ
TUVSX01JTklNVU0KKyNkZWZpbmUgVVNFUl9USU1FUl9NSU5JTVVNIDB4MDAwMDAwMEEKKyNlbmRp
ZgorCisjaWZuZGVmIFVTRVJfVElNRVJfTUFYSU1VTQorI2RlZmluZSBVU0VSX1RJTUVSX01BWElN
VU0gMHg3RkZGRkZGRgorI2VuZGlmCisKKyNpZm5kZWYgUVNfUkFXSU5QVVQKKyNkZWZpbmUgUVNf
UkFXSU5QVVQgICAgICAgICAweDA0MDAKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0YXRpYyBVSU5UIHRpbWVySUQ7CisKK3N0YXRpYyBIQU5ETEUgdGltZXI7CitzdGF0aWMgSFdO
RCB0aW1lcldpbmRvd0hhbmRsZSA9IDA7Citjb25zdCBMUENXU1RSIGtUaW1lcldpbmRvd0NsYXNz
TmFtZSA9IEwiVGltZXJXaW5kb3dDbGFzcyI7CisKK3N0YXRpYyBVSU5UIHRpbWVyRmlyZWRNZXNz
YWdlID0gMDsKK3N0YXRpYyBIQU5ETEUgdGltZXJRdWV1ZTsKK3N0YXRpYyBib29sIGhpZ2hSZXNU
aW1lckFjdGl2ZTsKK3N0YXRpYyBib29sIHByb2Nlc3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgPSBm
YWxzZTsKK3N0YXRpYyBMT05HIHBlbmRpbmdUaW1lcnM7CisKK2NvbnN0IGludCB0aW1lclJlc29s
dXRpb24gPSAxOyAvLyBUbyBpbXByb3ZlIHRpbWVyIHJlc29sdXRpb24sIHdlIGNhbGwgdGltZUJl
Z2luUGVyaW9kL3RpbWVFbmRQZXJpb2Qgd2l0aCB0aGlzIHZhbHVlIHRvIGluY3JlYXNlIHRpbWVy
IHJlc29sdXRpb24gdG8gMW1zLgorY29uc3QgaW50IGhpZ2hSZXNvbHV0aW9uVGhyZXNob2xkTXNl
YyA9IDE2OyAvLyBPbmx5IGFjdGl2YXRlIGhpZ2gtcmVzIHRpbWVyIGZvciBzdWItMTZtcyB0aW1l
cnMgKFdpbmRvd3MgY2FuIGZpcmUgdGltZXJzIGF0IDE2bXMgaW50ZXJ2YWxzIHdpdGhvdXQgY2hh
bmdpbmcgdGhlIHN5c3RlbSByZXNvbHV0aW9uKS4KK2NvbnN0IGludCBzdG9wSGlnaFJlc1RpbWVy
SW5Nc2VjID0gMzAwOyAvLyBTdG9wIGhpZ2gtcmVzIHRpbWVyIGFmdGVyIDAuMyBzZWNvbmRzIHRv
IGxlc3NlbiBwb3dlciBjb25zdW1wdGlvbiAod2UgZG9uJ3QgdXNlIGEgc21hbGxlciB0aW1lIHNp
bmNlIG9zY2lsbGF0aW5nIGJldHdlZW4gaGlnaCBhbmQgbG93IHJlc29sdXRpb24gYnJlYWtzIHRp
bWVyIGFjY3VyYWN5IG9uIFhQKS4KKworZW51bSB7CisgICAgc2hhcmVkVGltZXJJRCA9IDEwMDAs
CisgICAgZW5kSGlnaFJlc1RpbWVySUQgPSAxMDAxLAorfTsKKworTFJFU1VMVCBDQUxMQkFDSyBU
aW1lcldpbmRvd1duZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0s
IExQQVJBTSBsUGFyYW0pCit7CisgICAgaWYgKG1lc3NhZ2UgPT0gV01fVElNRVIpIHsKKyAgICAg
ICAgaWYgKHdQYXJhbSA9PSBzaGFyZWRUaW1lcklEKSB7CisgICAgICAgICAgICBLaWxsVGltZXIo
dGltZXJXaW5kb3dIYW5kbGUsIHNoYXJlZFRpbWVySUQpOworICAgICAgICAgICAgTWFpblRocmVh
ZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKS5maXJlZCgpOworICAgICAgICB9IGVsc2UgaWYgKHdQ
YXJhbSA9PSBlbmRIaWdoUmVzVGltZXJJRCkgeworICAgICAgICAgICAgS2lsbFRpbWVyKHRpbWVy
V2luZG93SGFuZGxlLCBlbmRIaWdoUmVzVGltZXJJRCk7CisgICAgICAgICAgICBoaWdoUmVzVGlt
ZXJBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgIHRpbWVFbmRQZXJpb2QodGltZXJSZXNvbHV0
aW9uKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobWVzc2FnZSA9PSB0aW1lckZpcmVkTWVz
c2FnZSkgeworICAgICAgICBJbnRlcmxvY2tlZEV4Y2hhbmdlKCZwZW5kaW5nVGltZXJzLCAwKTsK
KyAgICAgICAgcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IHRydWU7CisgICAgICAgIE1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6c2luZ2xldG9uKCkuZmlyZWQoKTsKKyAgICAgICAgcHJvY2Vz
c2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IGZhbHNlOworICAgIH0gZWxzZQorICAgICAgICByZXR1
cm4gRGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CisKKyAgICBy
ZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU9mZlNjcmVlblRpbWVyV2luZG93
KCkKK3sKKyAgICBpZiAodGltZXJXaW5kb3dIYW5kbGUpCisgICAgICAgIHJldHVybjsKKworICAg
IFdORENMQVNTRVggd2NleDsKKyAgICBtZW1zZXQoJndjZXgsIDAsIHNpemVvZihXTkRDTEFTU0VY
KSk7CisgICAgd2NleC5jYlNpemUgPSBzaXplb2YoV05EQ0xBU1NFWCk7CisKKyAgICB3Y2V4Lmxw
Zm5XbmRQcm9jICAgID0gVGltZXJXaW5kb3dXbmRQcm9jOworICAgIHdjZXguaEluc3RhbmNlICAg
ICAgPSBXZWJDb3JlOjppbnN0YW5jZUhhbmRsZSgpOworICAgIHdjZXgubHBzekNsYXNzTmFtZSAg
PSBrVGltZXJXaW5kb3dDbGFzc05hbWU7CisgICAgUmVnaXN0ZXJDbGFzc0V4KCZ3Y2V4KTsKKwor
ICAgIHRpbWVyV2luZG93SGFuZGxlID0gQ3JlYXRlV2luZG93KGtUaW1lcldpbmRvd0NsYXNzTmFt
ZSwgMCwgMCwKKyAgICAgICBDV19VU0VERUZBVUxULCAwLCBDV19VU0VERUZBVUxULCAwLCBIV05E
X01FU1NBR0UsIDAsIFdlYkNvcmU6Omluc3RhbmNlSGFuZGxlKCksIDApOworCisgICAgdGltZXJG
aXJlZE1lc3NhZ2UgPSBSZWdpc3RlcldpbmRvd01lc3NhZ2UoTCJjb20uYXBwbGUuV2ViS2l0LlRp
bWVyRmlyZWQiKTsKK30KKworc3RhdGljIHZvaWQgTlRBUEkgcXVldWVUaW1lclByb2MoUFZPSUQs
IEJPT0xFQU4pCit7CisgICAgaWYgKEludGVybG9ja2VkSW5jcmVtZW50KCZwZW5kaW5nVGltZXJz
KSA9PSAxKQorICAgICAgICBQb3N0TWVzc2FnZSh0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJGaXJl
ZE1lc3NhZ2UsIDAsIDApOworfQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0Rmly
ZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAgICBBU1NFUlQobV9maXJlZEZ1bmN0aW9u
KTsKKworICAgIHVuc2lnbmVkIGludGVydmFsSW5NUzsKKyAgICBpbnRlcnZhbCAqPSAxMDAwOwor
ICAgIGlmIChpbnRlcnZhbCA+IFVTRVJfVElNRVJfTUFYSU1VTSkKKyAgICAgICAgaW50ZXJ2YWxJ
bk1TID0gVVNFUl9USU1FUl9NQVhJTVVNOworICAgIGVsc2UKKyAgICAgICAgaW50ZXJ2YWxJbk1T
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludGVydmFsKTsKKworICAgIGluaXRpYWxpemVPZmZT
Y3JlZW5UaW1lcldpbmRvdygpOworICAgIGJvb2wgdGltZXJTZXQgPSBmYWxzZTsKKworICAgIGlm
IChTZXR0aW5nczo6c2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoKSkgeworICAgICAgICBp
ZiAoaW50ZXJ2YWwgPCBoaWdoUmVzb2x1dGlvblRocmVzaG9sZE1zZWMpIHsKKyAgICAgICAgICAg
IGlmICghaGlnaFJlc1RpbWVyQWN0aXZlKSB7CisgICAgICAgICAgICAgICAgaGlnaFJlc1RpbWVy
QWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aW1lQmVnaW5QZXJpb2QodGltZXJSZXNv
bHV0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFNldFRpbWVyKHRpbWVyV2luZG93
SGFuZGxlLCBlbmRIaWdoUmVzVGltZXJJRCwgc3RvcEhpZ2hSZXNUaW1lckluTXNlYywgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBEV09SRCBxdWV1ZVN0YXR1cyA9IExPV09SRChHZXRRdWV1ZVN0
YXR1cyhRU19QQUlOVCB8IFFTX01PVVNFQlVUVE9OIHwgUVNfS0VZIHwgUVNfUkFXSU5QVVQpKTsK
KworICAgICAgICAvLyBXaW4zMiBoYXMgYSB0cmktbGV2ZWwgcXVldWUgd2l0aCBhcHBsaWNhdGlv
biBtZXNzYWdlcyA+IHVzZXIgaW5wdXQgPiBXTV9QQUlOVC9XTV9USU1FUi4KKworICAgICAgICAv
LyBJZiB0aGUgcXVldWUgZG9lc24ndCBjb250YWlucyBpbnB1dCBldmVudHMsIHdlIHVzZSBhIGhp
Z2hlciBwcmlvcnR5IHRpbWVyIGV2ZW50IHBvc3RpbmcgbWVjaGFuaXNtLgorICAgICAgICBpZiAo
IShxdWV1ZVN0YXR1cyAmIChRU19NT1VTRUJVVFRPTiB8IFFTX0tFWSB8IFFTX1JBV0lOUFVUKSkp
IHsKKyAgICAgICAgICAgIGlmIChpbnRlcnZhbEluTVMgPCBVU0VSX1RJTUVSX01JTklNVU0gJiYg
IXByb2Nlc3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgJiYgIShxdWV1ZVN0YXR1cyAmIFFTX1BBSU5U
KSkgeworICAgICAgICAgICAgICAgIC8vIENhbGwgUG9zdE1lc3NhZ2UgaW1tZWRpYXRlbHkgaWYg
dGhlIHRpbWVyIGlzIGFscmVhZHkgZXhwaXJlZCwgdW5sZXNzIGEgcGFpbnQgaXMgcGVuZGluZy4K
KyAgICAgICAgICAgICAgICAvLyAod2UgcHJpb3JpdGl6ZSBwYWludHMgb3ZlciB0aW1lcnMpCisg
ICAgICAgICAgICAgICAgaWYgKEludGVybG9ja2VkSW5jcmVtZW50KCZwZW5kaW5nVGltZXJzKSA9
PSAxKQorICAgICAgICAgICAgICAgICAgICBQb3N0TWVzc2FnZSh0aW1lcldpbmRvd0hhbmRsZSwg
dGltZXJGaXJlZE1lc3NhZ2UsIDAsIDApOworICAgICAgICAgICAgICAgIHRpbWVyU2V0ID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBk
ZWxheSB0aGUgUG9zdE1lc3NhZ2UgdmlhIGEgQ3JlYXRlVGltZXJRdWV1ZVRpbWVyCisgICAgICAg
ICAgICAgICAgaWYgKCF0aW1lclF1ZXVlKQorICAgICAgICAgICAgICAgICAgICB0aW1lclF1ZXVl
ID0gQ3JlYXRlVGltZXJRdWV1ZSgpOworICAgICAgICAgICAgICAgIGlmICh0aW1lcikKKyAgICAg
ICAgICAgICAgICAgICAgRGVsZXRlVGltZXJRdWV1ZVRpbWVyKHRpbWVyUXVldWUsIHRpbWVyLCAw
KTsKKyAgICAgICAgICAgICAgICB0aW1lclNldCA9IENyZWF0ZVRpbWVyUXVldWVUaW1lcigmdGlt
ZXIsIHRpbWVyUXVldWUsIHF1ZXVlVGltZXJQcm9jLCAwLCBpbnRlcnZhbEluTVMsIDAsIFdUX0VY
RUNVVEVJTlRJTUVSVEhSRUFEIHwgV1RfRVhFQ1VURU9OTFlPTkNFKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh0aW1lclNldCkgeworICAgICAgICBpZiAodGlt
ZXJJRCkgeworICAgICAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCB0aW1lcklE
KTsKKyAgICAgICAgICAgIHRpbWVySUQgPSAwOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdGltZXJJRCA9IFNldFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCBzaGFyZWRUaW1lcklE
LCBpbnRlcnZhbEluTVMsIDApOworICAgICAgICB0aW1lciA9IDA7CisgICAgfQorfQorCit2b2lk
IE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCgpCit7CisgICAgaWYgKHRpbWVyUXVldWUgJiYg
dGltZXIpIHsKKyAgICAgICAgRGVsZXRlVGltZXJRdWV1ZVRpbWVyKHRpbWVyUXVldWUsIHRpbWVy
LCAwKTsKKyAgICAgICAgdGltZXIgPSAwOworICAgIH0KKworICAgIGlmICh0aW1lcklEKSB7Cisg
ICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJJRCk7CisgICAgICAgIHRp
bWVySUQgPSAwOworICAgIH0KK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFs
aWRhdGUoKQoreworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2hhcmVkVGltZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJl
ZFRpbWVyV2luLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2QwMmIxOS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMjA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJT
aGFyZWRUaW1lci5oIgotCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgi
Ci0jaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiV2lkZ2V0Lmgi
Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KLSNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgotCi0jaW5jbHVkZSA8bW1zeXN0ZW0u
aD4KLQotLy8gVGhlc2UgYXJlbid0IGluIHdpbnVzZXIuaCB3aXRoIHRoZSBNU1ZTIDIwMDMgUGxh
dGZvcm0gU0RLLCAKLS8vIHNvIHVzZSBkZWZhdWx0IHZhbHVlcyBpbiB0aGF0IGNhc2UuCi0jaWZu
ZGVmIFVTRVJfVElNRVJfTUlOSU1VTQotI2RlZmluZSBVU0VSX1RJTUVSX01JTklNVU0gMHgwMDAw
MDAwQQotI2VuZGlmCi0KLSNpZm5kZWYgVVNFUl9USU1FUl9NQVhJTVVNCi0jZGVmaW5lIFVTRVJf
VElNRVJfTUFYSU1VTSAweDdGRkZGRkZGCi0jZW5kaWYKLQotI2lmbmRlZiBRU19SQVdJTlBVVAot
I2RlZmluZSBRU19SQVdJTlBVVCAgICAgICAgIDB4MDQwMAotI2VuZGlmCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotc3RhdGljIFVJTlQgdGltZXJJRDsKLXN0YXRpYyB2b2lkICgqc2hhcmVkVGlt
ZXJGaXJlZEZ1bmN0aW9uKSgpOwotCi1zdGF0aWMgSEFORExFIHRpbWVyOwotc3RhdGljIEhXTkQg
dGltZXJXaW5kb3dIYW5kbGUgPSAwOwotY29uc3QgTFBDV1NUUiBrVGltZXJXaW5kb3dDbGFzc05h
bWUgPSBMIlRpbWVyV2luZG93Q2xhc3MiOwotCi1zdGF0aWMgVUlOVCB0aW1lckZpcmVkTWVzc2Fn
ZSA9IDA7Ci1zdGF0aWMgSEFORExFIHRpbWVyUXVldWU7Ci1zdGF0aWMgYm9vbCBoaWdoUmVzVGlt
ZXJBY3RpdmU7Ci1zdGF0aWMgYm9vbCBwcm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlID0gZmFs
c2U7Ci1zdGF0aWMgTE9ORyBwZW5kaW5nVGltZXJzOwotCi1jb25zdCBpbnQgdGltZXJSZXNvbHV0
aW9uID0gMTsgLy8gVG8gaW1wcm92ZSB0aW1lciByZXNvbHV0aW9uLCB3ZSBjYWxsIHRpbWVCZWdp
blBlcmlvZC90aW1lRW5kUGVyaW9kIHdpdGggdGhpcyB2YWx1ZSB0byBpbmNyZWFzZSB0aW1lciBy
ZXNvbHV0aW9uIHRvIDFtcy4KLWNvbnN0IGludCBoaWdoUmVzb2x1dGlvblRocmVzaG9sZE1zZWMg
PSAxNjsgLy8gT25seSBhY3RpdmF0ZSBoaWdoLXJlcyB0aW1lciBmb3Igc3ViLTE2bXMgdGltZXJz
IChXaW5kb3dzIGNhbiBmaXJlIHRpbWVycyBhdCAxNm1zIGludGVydmFscyB3aXRob3V0IGNoYW5n
aW5nIHRoZSBzeXN0ZW0gcmVzb2x1dGlvbikuCi1jb25zdCBpbnQgc3RvcEhpZ2hSZXNUaW1lcklu
TXNlYyA9IDMwMDsgLy8gU3RvcCBoaWdoLXJlcyB0aW1lciBhZnRlciAwLjMgc2Vjb25kcyB0byBs
ZXNzZW4gcG93ZXIgY29uc3VtcHRpb24gKHdlIGRvbid0IHVzZSBhIHNtYWxsZXIgdGltZSBzaW5j
ZSBvc2NpbGxhdGluZyBiZXR3ZWVuIGhpZ2ggYW5kIGxvdyByZXNvbHV0aW9uIGJyZWFrcyB0aW1l
ciBhY2N1cmFjeSBvbiBYUCkuCi0KLWVudW0gewotICAgIHNoYXJlZFRpbWVySUQgPSAxMDAwLAot
ICAgIGVuZEhpZ2hSZXNUaW1lcklEID0gMTAwMSwKLX07Ci0KLUxSRVNVTFQgQ0FMTEJBQ0sgVGlt
ZXJXaW5kb3dXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBM
UEFSQU0gbFBhcmFtKQotewotICAgIGlmIChtZXNzYWdlID09IFdNX1RJTUVSKSB7Ci0gICAgICAg
IGlmICh3UGFyYW0gPT0gc2hhcmVkVGltZXJJRCkgewotICAgICAgICAgICAgS2lsbFRpbWVyKHRp
bWVyV2luZG93SGFuZGxlLCBzaGFyZWRUaW1lcklEKTsKLSAgICAgICAgICAgIHNoYXJlZFRpbWVy
RmlyZWRGdW5jdGlvbigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHdQYXJhbSA9PSBl
bmRIaWdoUmVzVGltZXJJRCkgewotICAgICAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFu
ZGxlLCBlbmRIaWdoUmVzVGltZXJJRCk7Ci0gICAgICAgICAgICBoaWdoUmVzVGltZXJBY3RpdmUg
PSBmYWxzZTsKLSAgICAgICAgICAgIHRpbWVFbmRQZXJpb2QodGltZXJSZXNvbHV0aW9uKTsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSBpZiAobWVzc2FnZSA9PSB0aW1lckZpcmVkTWVzc2FnZSkgewot
ICAgICAgICBJbnRlcmxvY2tlZEV4Y2hhbmdlKCZwZW5kaW5nVGltZXJzLCAwKTsKLSAgICAgICAg
cHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IHRydWU7Ci0gICAgICAgIHNoYXJlZFRpbWVy
RmlyZWRGdW5jdGlvbigpOwotICAgICAgICBwcm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlID0g
ZmFsc2U7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldHVybiBEZWZXaW5kb3dQcm9jKGhXbmQsIG1l
c3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKLQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdm9p
ZCBpbml0aWFsaXplT2ZmU2NyZWVuVGltZXJXaW5kb3coKQotewotICAgIGlmICh0aW1lcldpbmRv
d0hhbmRsZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV05EQ0xBU1NFWCB3Y2V4OwotICAgIG1l
bXNldCgmd2NleCwgMCwgc2l6ZW9mKFdORENMQVNTRVgpKTsKLSAgICB3Y2V4LmNiU2l6ZSA9IHNp
emVvZihXTkRDTEFTU0VYKTsKLQotICAgIHdjZXgubHBmblduZFByb2MgICAgPSBUaW1lcldpbmRv
d1duZFByb2M7Ci0gICAgd2NleC5oSW5zdGFuY2UgICAgICA9IFdlYkNvcmU6Omluc3RhbmNlSGFu
ZGxlKCk7Ci0gICAgd2NleC5scHN6Q2xhc3NOYW1lICA9IGtUaW1lcldpbmRvd0NsYXNzTmFtZTsK
LSAgICBSZWdpc3RlckNsYXNzRXgoJndjZXgpOwotCi0gICAgdGltZXJXaW5kb3dIYW5kbGUgPSBD
cmVhdGVXaW5kb3coa1RpbWVyV2luZG93Q2xhc3NOYW1lLCAwLCAwLAotICAgICAgIENXX1VTRURF
RkFVTFQsIDAsIENXX1VTRURFRkFVTFQsIDAsIEhXTkRfTUVTU0FHRSwgMCwgV2ViQ29yZTo6aW5z
dGFuY2VIYW5kbGUoKSwgMCk7Ci0KLSAgICB0aW1lckZpcmVkTWVzc2FnZSA9IFJlZ2lzdGVyV2lu
ZG93TWVzc2FnZShMImNvbS5hcHBsZS5XZWJLaXQuVGltZXJGaXJlZCIpOwotfQotCi12b2lkIHNl
dFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqZikoKSkKLXsKLSAgICBzaGFyZWRUaW1l
ckZpcmVkRnVuY3Rpb24gPSBmOwotfQotCi1zdGF0aWMgdm9pZCBOVEFQSSBxdWV1ZVRpbWVyUHJv
YyhQVk9JRCwgQk9PTEVBTikKLXsKLSAgICBpZiAoSW50ZXJsb2NrZWRJbmNyZW1lbnQoJnBlbmRp
bmdUaW1lcnMpID09IDEpCi0gICAgICAgIFBvc3RNZXNzYWdlKHRpbWVyV2luZG93SGFuZGxlLCB0
aW1lckZpcmVkTWVzc2FnZSwgMCwgMCk7Ci19Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50
ZXJ2YWwoZG91YmxlIGludGVydmFsKQotewotICAgIEFTU0VSVChzaGFyZWRUaW1lckZpcmVkRnVu
Y3Rpb24pOwotCi0gICAgdW5zaWduZWQgaW50ZXJ2YWxJbk1TOwotICAgIGludGVydmFsICo9IDEw
MDA7Ci0gICAgaWYgKGludGVydmFsID4gVVNFUl9USU1FUl9NQVhJTVVNKQotICAgICAgICBpbnRl
cnZhbEluTVMgPSBVU0VSX1RJTUVSX01BWElNVU07Ci0gICAgZWxzZQotICAgICAgICBpbnRlcnZh
bEluTVMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW50ZXJ2YWwpOwotCi0gICAgaW5pdGlhbGl6
ZU9mZlNjcmVlblRpbWVyV2luZG93KCk7Ci0gICAgYm9vbCB0aW1lclNldCA9IGZhbHNlOwotCi0g
ICAgaWYgKFNldHRpbmdzOjpzaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycygpKSB7Ci0gICAg
ICAgIGlmIChpbnRlcnZhbCA8IGhpZ2hSZXNvbHV0aW9uVGhyZXNob2xkTXNlYykgewotICAgICAg
ICAgICAgaWYgKCFoaWdoUmVzVGltZXJBY3RpdmUpIHsKLSAgICAgICAgICAgICAgICBoaWdoUmVz
VGltZXJBY3RpdmUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHRpbWVCZWdpblBlcmlvZCh0aW1l
clJlc29sdXRpb24pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgU2V0VGltZXIodGltZXJX
aW5kb3dIYW5kbGUsIGVuZEhpZ2hSZXNUaW1lcklELCBzdG9wSGlnaFJlc1RpbWVySW5Nc2VjLCAw
KTsKLSAgICAgICAgfQotCi0gICAgICAgIERXT1JEIHF1ZXVlU3RhdHVzID0gTE9XT1JEKEdldFF1
ZXVlU3RhdHVzKFFTX1BBSU5UIHwgUVNfTU9VU0VCVVRUT04gfCBRU19LRVkgfCBRU19SQVdJTlBV
VCkpOwotCi0gICAgICAgIC8vIFdpbjMyIGhhcyBhIHRyaS1sZXZlbCBxdWV1ZSB3aXRoIGFwcGxp
Y2F0aW9uIG1lc3NhZ2VzID4gdXNlciBpbnB1dCA+IFdNX1BBSU5UL1dNX1RJTUVSLgotCi0gICAg
ICAgIC8vIElmIHRoZSBxdWV1ZSBkb2Vzbid0IGNvbnRhaW5zIGlucHV0IGV2ZW50cywgd2UgdXNl
IGEgaGlnaGVyIHByaW9ydHkgdGltZXIgZXZlbnQgcG9zdGluZyBtZWNoYW5pc20uCi0gICAgICAg
IGlmICghKHF1ZXVlU3RhdHVzICYgKFFTX01PVVNFQlVUVE9OIHwgUVNfS0VZIHwgUVNfUkFXSU5Q
VVQpKSkgewotICAgICAgICAgICAgaWYgKGludGVydmFsSW5NUyA8IFVTRVJfVElNRVJfTUlOSU1V
TSAmJiAhcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSAmJiAhKHF1ZXVlU3RhdHVzICYgUVNf
UEFJTlQpKSB7Ci0gICAgICAgICAgICAgICAgLy8gQ2FsbCBQb3N0TWVzc2FnZSBpbW1lZGlhdGVs
eSBpZiB0aGUgdGltZXIgaXMgYWxyZWFkeSBleHBpcmVkLCB1bmxlc3MgYSBwYWludCBpcyBwZW5k
aW5nLgotICAgICAgICAgICAgICAgIC8vICh3ZSBwcmlvcml0aXplIHBhaW50cyBvdmVyIHRpbWVy
cykKLSAgICAgICAgICAgICAgICBpZiAoSW50ZXJsb2NrZWRJbmNyZW1lbnQoJnBlbmRpbmdUaW1l
cnMpID09IDEpCi0gICAgICAgICAgICAgICAgICAgIFBvc3RNZXNzYWdlKHRpbWVyV2luZG93SGFu
ZGxlLCB0aW1lckZpcmVkTWVzc2FnZSwgMCwgMCk7Ci0gICAgICAgICAgICAgICAgdGltZXJTZXQg
PSB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBPdGhlcndp
c2UsIGRlbGF5IHRoZSBQb3N0TWVzc2FnZSB2aWEgYSBDcmVhdGVUaW1lclF1ZXVlVGltZXIKLSAg
ICAgICAgICAgICAgICBpZiAoIXRpbWVyUXVldWUpCi0gICAgICAgICAgICAgICAgICAgIHRpbWVy
UXVldWUgPSBDcmVhdGVUaW1lclF1ZXVlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRpbWVyKQot
ICAgICAgICAgICAgICAgICAgICBEZWxldGVUaW1lclF1ZXVlVGltZXIodGltZXJRdWV1ZSwgdGlt
ZXIsIDApOwotICAgICAgICAgICAgICAgIHRpbWVyU2V0ID0gQ3JlYXRlVGltZXJRdWV1ZVRpbWVy
KCZ0aW1lciwgdGltZXJRdWV1ZSwgcXVldWVUaW1lclByb2MsIDAsIGludGVydmFsSW5NUywgMCwg
V1RfRVhFQ1VURUlOVElNRVJUSFJFQUQgfCBXVF9FWEVDVVRFT05MWU9OQ0UpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHRpbWVyU2V0KSB7Ci0gICAgICAgIGlm
ICh0aW1lcklEKSB7Ci0gICAgICAgICAgICBLaWxsVGltZXIodGltZXJXaW5kb3dIYW5kbGUsIHRp
bWVySUQpOwotICAgICAgICAgICAgdGltZXJJRCA9IDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ug
ewotICAgICAgICB0aW1lcklEID0gU2V0VGltZXIodGltZXJXaW5kb3dIYW5kbGUsIHNoYXJlZFRp
bWVySUQsIGludGVydmFsSW5NUywgMCk7Ci0gICAgICAgIHRpbWVyID0gMDsKLSAgICB9Ci19Ci0K
LXZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKLXsKLSAgICBpZiAodGltZXJRdWV1ZSAmJiB0aW1lcikg
ewotICAgICAgICBEZWxldGVUaW1lclF1ZXVlVGltZXIodGltZXJRdWV1ZSwgdGltZXIsIDApOwot
ICAgICAgICB0aW1lciA9IDA7Ci0gICAgfQotCi0gICAgaWYgKHRpbWVySUQpIHsKLSAgICAgICAg
S2lsbFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCB0aW1lcklEKTsKLSAgICAgICAgdGltZXJJRCA9
IDA7Ci0gICAgfQotfQotCi12b2lkIGludmFsaWRhdGVTaGFyZWRUaW1lcigpCi17Ci19Ci0KLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IGU4MTIzMDguLjY1
OWQwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtNDEs
NyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdvcmtlclNoYXJlZFRp
bWVyIDogcHVibGljIFNoYXJlZFRpbWVyIHsKK2NsYXNzIFdvcmtlclNoYXJlZFRpbWVyIGZpbmFs
IDogcHVibGljIFNoYXJlZFRpbWVyIHsKIHB1YmxpYzoKICAgICBXb3JrZXJTaGFyZWRUaW1lcigp
CiAgICAgICAgIDogbV9zaGFyZWRUaW1lckZ1bmN0aW9uKDApCkBAIC01MCwxNiArNTAsMTYgQEAg
cHVibGljOgogICAgIH0KIAogICAgIC8vIFNoYXJlZFRpbWVyIGludGVyZmFjZS4KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbih2b2lkICgqZnVuY3Rpb24pKCkpIHsgbV9zaGFyZWRU
aW1lckZ1bmN0aW9uID0gZnVuY3Rpb247IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZUludGVy
dmFsKGRvdWJsZSBpbnRlcnZhbCkgeyBtX25leHRGaXJlVGltZSA9IGludGVydmFsICsgY3VycmVu
dFRpbWUoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgeyBtX25leHRGaXJlVGltZSA9IDA7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbikgb3ZlcnJpZGUgeyBtX3NoYXJlZFRpbWVyRnVuY3Rpb24gPSBXVEY6Om1v
dmUoZnVuY3Rpb24pOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3VibGUg
aW50ZXJ2YWwpIG92ZXJyaWRlIHsgbV9uZXh0RmlyZVRpbWUgPSBpbnRlcnZhbCArIGN1cnJlbnRU
aW1lKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIG92ZXJyaWRlIHsgbV9uZXh0RmlyZVRp
bWUgPSAwOyB9CiAKICAgICBib29sIGlzQWN0aXZlKCkgeyByZXR1cm4gbV9zaGFyZWRUaW1lckZ1
bmN0aW9uICYmIG1fbmV4dEZpcmVUaW1lOyB9CiAgICAgZG91YmxlIGZpcmVUaW1lKCkgeyByZXR1
cm4gbV9uZXh0RmlyZVRpbWU7IH0KICAgICB2b2lkIGZpcmUoKSB7IG1fc2hhcmVkVGltZXJGdW5j
dGlvbigpOyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCAoKm1fc2hhcmVkVGltZXJGdW5jdGlvbiko
KTsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9zaGFyZWRUaW1lckZ1bmN0aW9uOwogICAg
IGRvdWJsZSBtX25leHRGaXJlVGltZTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264126</attachid>
            <date>2015-10-27 02:12:21 -0700</date>
            <delta_ts>2015-10-27 02:38:17 -0700</delta_ts>
            <desc>Try to build on Mac</desc>
            <filename>wcore-shared-timer.diff</filename>
            <type>text/plain</type>
            <size>58327</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOThmM2VhNC4uYjIwNjMxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMDksNiArMjEwOSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9MaW5rSGFzaC5jcHAKICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmNwcAogICAgIHBsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuY3BwCisgICAgcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVy
LmNwcAogICAgIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKICAgICBwbGF0Zm9y
bS9Ob3RJbXBsZW1lbnRlZC5jcHAKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDI1ZTJiNjAuLjQ5Y2FmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAor
MjAxNS0xMC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
KyAgICAgICAgTWFrZSBldmVyeSBwb3J0IGltcGxlbWVudCBNYWluVGhyZWFkU2hhcmVkVGltZXIg
aW5zdGVhZCBvZiB1c2luZyBnbG9iYWwgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIE1haW5UaHJlYWRTaGFyZWRUaW1lciB0byBp
dHMgb3duIGZpbGVzIGFuZCBhZGQgdGhlIGNvbW1vbgorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0
aGVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgTWFpblRocmVhZFNoYXJlZFRp
bWVyLmNwcC4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogVXBkYXRlIGZpbGVuYW1lcy4K
KyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpNYWluVGhyZWFkU2hhcmVkVGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6ZmlyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwLgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZFRpbWVyLmg6IFJlbW92ZSBNYWluVGhyZWFkU2hhcmVkVGltZXIKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gYW5kIHJlaW5kZW50IHRoZSBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkVGltZXI6OlNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVy
Ojp+U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXI6OmludmFsaWRh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRUaW1lcnM6OlRocmVhZFRpbWVycyk6IFVzZSBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnNpbmdsZXRvbigpLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzZXRTaGFy
ZWRUaW1lcik6IFVzZSBhIGxhbWJkYSBmdW5jdGlvbgorICAgICAgICBpbnN0ZWFkIG9mIGEgcG9p
bnRlciB0byBhIHN0YXRpYyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6
OnNoYXJlZFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRp
bWVycy5oOiBSZW1vdmVkIHVuc3VzZWQgc3RhdGljIG1ldGhvZCBzaGFyZWRUaW1lckZpcmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0dXBQb3dlck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6cmVzdGFydFNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2Vm
bC9NYWluVGhyZWFkU2hhcmVkVGltZXJFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnRp
bWVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVy
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0ay5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsu
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50
ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJXaW5kb3dXbmRQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6
OmluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpxdWV1
ZVRpbWVyUHJvYyk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNl
dEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlk
YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOiBVcGRhdGUgV29ya2Vy
U2hhcmVkVGltZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24gdG8gdXNlIHN0ZDo6ZnVuY3Rpb24g
aW5zdGVhZCBvZiBhIHBvaW50ZXIuIEFsc28KKyAgICAgICAgbWFyayB0aGUgY2xhc3MgYXMgZmlu
YWwgYW5kIHRoZSB2aXJ0dWFsIGltcGxlbWVudGF0aW9ucyBhcyBvdmVycmlkZS4KKwogMjAxNS0x
MC0yNiAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtTdHJlYW1zIEFQSV0gSW1wbGVtZW50IGFib3J0IG1ldGhvZCBvbiB3cml0YWJsZSBz
dHJlYW1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDljYzExNTcuLjA0MTI3OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMTMsMTMgKzExMywxMyBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9lZmwvTG9jYWxpemVkU3RyaW5nc0VmbC5j
cHAKICAgICBwbGF0Zm9ybS9lZmwvTG9nZ2luZ0VmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvTUlN
RVR5cGVSZWdpc3RyeUVmbC5jcHAKKyAgICBwbGF0Zm9ybS9lZmwvTWFpblRocmVhZFNoYXJlZFRp
bWVyRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcAogICAgIHBsYXRm
b3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL1Bs
YXRmb3JtTW91c2VFdmVudEVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1TY3JlZW5F
ZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAKICAgICBw
bGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwCi0gICAgcGxhdGZvcm0vZWZsL1NoYXJl
ZFRpbWVyRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9Tb3VuZEVmbC5jcHAKICAgICBwbGF0Zm9y
bS9lZmwvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRmb3JtL2VmbC9XaWRnZXRFZmwu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGJhYWFjYjkuLmEyMDlhOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xNjEsOCArMTYxLDggQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9Mb2dnaW5nR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9NSU1FVHlwZVJlZ2lzdHJ5
R3RrLmNwcAorICAgIHBsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsuY3BwCiAg
ICAgcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKLSAgICBwbGF0Zm9ybS9ndGsvU2hh
cmVkVGltZXJHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAK
ICAgICBwbGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCmluZGV4IDk3MDQ4ODYuLmNlNjg0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBA
IC0yNjMsMTAgKzI2MywxMCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0Yu
Y3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisgICAgcGxhdGZvcm0vY2Yv
TWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3Np
YmlsaXR5U29mdExpbmsuY3BwCiAgICAgcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAog
ICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1NoYXJl
ZFRpbWVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCiAKICAgICBwbGF0Zm9ybS9j
b2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdp
bi5jbWFrZQppbmRleCAwMjExZjY4Li40ZWY4YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFr
ZQpAQCAtMTI0LDYgKzEyNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3Bw
CisgICAgcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKICAgICBwbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5j
cHAKICAgICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcApAQCAtMTMzLDcg
KzEzNCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9T
Y3JvbGxiYXJUaGVtZVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2lu
LmNwcAogICAgIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCi0gICAgcGxhdGZvcm0v
d2luL1NoYXJlZFRpbWVyV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9Tb3VuZFdpbi5jcHAKICAg
ICBwbGF0Zm9ybS93aW4vU3RydWN0dXJlZEV4Y2VwdGlvbkhhbmRsZXJTdXBwcmVzc29yLmNwcAog
ICAgIHBsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg5MzJmOTcuLmE0NTNkOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE3MDYsNyArMTcwNiw2IEBACiAJCTQ2MjMzRUVFMUJBMEYxODcwMDBFQkVCQiAvKiBBdHRy
aWJ1dGVET01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2MjMzRUVEMUJBMEYxN0EwMDBFQkVCQiAvKiBBdHRyaWJ1dGVET01Ub2tlbkxp
c3QuaCAqLzsgfTsKIAkJNDYyMzNFRUYxQkEwRjE4QjAwMEVCRUJCIC8qIEF0dHJpYnV0ZURPTVRv
a2VuTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjIzM0VFQzFCQTBGMTdBMDAwRUJFQkIgLyogQXR0cmlidXRlRE9NVG9rZW5MaXN0LmNwcCAq
LzsgfTsKIAkJNDYzNDU5MkMxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNDU5MkIx
QUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuY3BwICovOyB9OwotCQk0NjM0NTky
RTFBQzIyNzNDMDBFQ0I3MUMgLyogU2hhcmVkVGltZXJDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjM0NTkyRDFBQzIyNzNDMDBFQ0I3MUMgLyog
U2hhcmVkVGltZXJDRi5jcHAgKi87IH07CiAJCTQ2M0VCNjIyMUI4Nzg5RTAwMDk2RUQ1MSAvKiBU
YWdDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAqLzsg
fTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0Iw
MDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NjlCMjg3MUI4NTJBMEIwMDBG
OTA1RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMjc2OEUxQjg1Mjk3RjAwNUMyNTU2
IC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAgKi87IH07CkBAIC0zOTE5LDYg
KzM5MTgsOSBAQAogCQk5QTFCNkY5NzE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01TdHJpbmdMaXN0
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlBMUI2Rjk2MTU4ODY5QzgwMDExQThDNCAvKiBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwICov
OyB9OwogCQk5QTUyOEU4MzE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlBNTI4RTgxMTdE
N0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVjdHMuY3BwICovOyB9OwogCQk5QTUyOEU4NDE3
RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTUyOEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxv
YXRpbmdPYmplY3RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOUFBQ0ExNEQxQkRGNzI3NDAwNTFBNzIyIC8qIE1haW5UaHJlYWRTaGFyZWRUaW1l
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWluVGhyZWFkU2hh
cmVkVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUFDQTE0RTFCREY3
MjhCMDA1MUE3MjIgLyogTWFpblRocmVhZFNoYXJlZFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1haW5UaHJlYWRTaGFyZWRUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5QUFDQTE0RjFCREY3MkEzMDA1MUE3MjIgLyogTWFpblRocmVhZFNoYXJl
ZFRpbWVyQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFpblRo
cmVhZFNoYXJlZFRpbWVyQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QUIx
RjM4MDE4RTI0ODlBMDA1MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUFCMUYzN0UxOEUyNDg5
QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCAqLzsgfTsKIAkJOUFCMUYz
ODExOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUFCMUYzN0YxOEUyNDg5
QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuY3BwICovOyB9OwogCQk5QjFB
QjA3QzE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjFB
QjA3QjE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3Rv
bS5jcHAgKi87IH07CkBAIC05MDY1LDcgKzkwNjcsNiBAQAogCQk0NjIzM0VFQzFCQTBGMTdBMDAw
RUJFQkIgLyogQXR0cmlidXRlRE9NVG9rZW5MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEF0dHJpYnV0ZURPTVRva2VuTGlzdC5jcHA7IHBhdGggPSAuLi9BdHRy
aWJ1dGVET01Ub2tlbkxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjIz
M0VFRDFCQTBGMTdBMDAwRUJFQkIgLyogQXR0cmlidXRlRE9NVG9rZW5MaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF0dHJpYnV0ZURPTVRva2VuTGlzdC5oOyBwYXRoID0g
Li4vQXR0cmlidXRlRE9NVG9rZW5MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjM0NTkyRDFBQzIyNzNDMDBFQ0I3MUMgLyogU2hh
cmVkVGltZXJDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFy
ZWRUaW1lckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRUI2MjAxQjg3
ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGFnQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhZ0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlTWV0YWRhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzYwLDYgKzE1NzYxLDcgQEAKIAkJMUFFNDJG
NjcwQUE0QjhDQjAwQzg2MTJEIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk5QUFDQTE0RjFCREY3MkEzMDA1MUE3MjIgLyogTWFpblRocmVhZFNo
YXJlZFRpbWVyQ0YuY3BwICovLAogCQkJCUUxQThFNTY0MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVS
TEV4dHJhcy5jcHAgKi8sCiAJCQkJRTFBOEU1NjUxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0
cmFzLmggKi8sCiAJCQkJNDQzODE3RkQxQTkxQjJGODAwNkUwNEYyIC8qIENvcmVNZWRpYVNvZnRM
aW5rLmNwcCAqLywKQEAgLTE1Nzc0LDcgKzE1Nzc2LDYgQEAKIAkJCQkyRDc2QkI4MzE5NDU2Rjgx
MDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmNwcCAqLywKIAkJCQkyRDc2QkI4MDE5NDU2MzI0
MDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmggKi8sCiAJCQkJNTEyREQ4RTIwRDkxRTJCNDAw
MEY4OUVFIC8qIFNoYXJlZEJ1ZmZlckNGLmNwcCAqLywKLQkJCQk0NjM0NTkyRDFBQzIyNzNDMDBF
Q0I3MUMgLyogU2hhcmVkVGltZXJDRi5jcHAgKi8sCiAJCQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVG
NUVGIC8qIFVSTENGLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CkBAIC0yMjM1OSw2ICsy
MjM2MCw4IEBACiAJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOUFBQ0ExNEUxQkRGNzI4
QjAwNTFBNzIyIC8qIE1haW5UaHJlYWRTaGFyZWRUaW1lci5oICovLAorCQkJCTlBQUNBMTREMUJE
RjcyNzQwMDUxQTcyMiAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwICovLAogCQkJCTQ5RTkx
MkE0MEVGQUM4RTYwMDlEMENBRiAvKiBhbmltYXRpb24gKi8sCiAJCQkJRkQzMTYwNDAxMkIwMjZB
MzAwQzFBMzU5IC8qIGF1ZGlvICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBj
ZiAqLywKQEAgLTMwNzg5LDcgKzMwNzkyLDYgQEAKIAkJCQk1MTJERDhFMzBEOTFFMkI0MDAwRjg5
RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCMUYwMkUxM0Iw
MjVDQTAwRjUxMDNGIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNEE5NTUyMEI0RURDRkYwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXJNYWMubW0gaW4g
U291cmNlcyAqLywKLQkJCQk0NjM0NTkyRTFBQzIyNzNDMDBFQ0I3MUMgLyogU2hhcmVkVGltZXJD
Ri5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNjNFODhGNzExOEEzOUQyMDBFRDkyMzEgLyogU2lt
cGxlRm9udERhdGFDb3JlVGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDg5NDRBMjE4MEI1
N0Q4MDBGMTY1RDggLyogU2ltcGxlTGluZUxheW91dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
ODVENkUwMzFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01h
aW5UaHJlYWRTaGFyZWRUaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhy
ZWFkU2hhcmVkVGltZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3
ZjE3YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhy
ZWFkU2hhcmVkVGltZXIuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1haW5UaHJlYWRTaGFyZWRUaW1l
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01haW5UaHJlYWRTaGFyZWRUaW1lciYgTWFp
blRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxNYWluVGhyZWFkU2hhcmVkVGltZXI+IGluc3RhbmNlOworICAgIHJldHVybiBpbnN0YW5j
ZTsKK30KKworTWFpblRocmVhZFNoYXJlZFRpbWVyOjpNYWluVGhyZWFkU2hhcmVkVGltZXIoKQor
eworfQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRGdW5jdGlvbihzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4mJiBmaXJlZEZ1bmN0aW9uKQoreworICAgIFJFTEVBU0VfQVNTRVJU
KCFtX2ZpcmVkRnVuY3Rpb24gfHwgIWZpcmVkRnVuY3Rpb24pOworICAgIG1fZmlyZWRGdW5jdGlv
biA9IFdURjo6bW92ZShmaXJlZEZ1bmN0aW9uKTsKK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVk
VGltZXI6OmZpcmVkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9maXJlZEZ1bmN0aW9uKTsKKyAg
ICBtX2ZpcmVkRnVuY3Rpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTQ2MWM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmgKQEAgLTAsMCArMSw1
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0
IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWFpblRocmVhZFNoYXJlZFRp
bWVyX2gKKyNkZWZpbmUgTWFpblRocmVhZFNoYXJlZFRpbWVyX2gKKworI2luY2x1ZGUgIlNoYXJl
ZFRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTWFpblRocmVhZFNoYXJlZFRpbWVyIGZpbmFsIDogcHVibGljIFNo
YXJlZFRpbWVyIHsKKyAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxNYWluVGhy
ZWFkU2hhcmVkVGltZXI+OworcHVibGljOgorICAgIHN0YXRpYyBNYWluVGhyZWFkU2hhcmVkVGlt
ZXImIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3VibGUp
IG92ZXJyaWRlOworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0
ZSgpIG92ZXJyaWRlOworCisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHByaXZhdGUsIGJ1
dCBDRiBhbmQgV2luZG93cyBpbXBsZW1lbnRhdGlvbnMKKyAgICAvLyBuZWVkIHRvIGNhbGwgdGhp
cyBmcm9tIHN0YXRpYyBtZXRob2RzIGF0IHRoZSBtb21lbnQuCisgICAgdm9pZCBmaXJlZCgpIGNv
bnN0OworCitwcml2YXRlOgorICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcigpOworCisgICAgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IG1fZmlyZWRGdW5jdGlvbiB7IG51bGxwdHIgfTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1haW5UaHJlYWRTaGFyZWRUaW1lcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKaW5kZXggMjk5YzQ5OS4uY2FjMWI5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCkBAIC0yNiw1OSArMjYsMjggQEAK
ICNpZm5kZWYgU2hhcmVkVGltZXJfaAogI2RlZmluZSBTaGFyZWRUaW1lcl9oCiAKKyNpbmNsdWRl
IDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIC8vIEVhY2ggdGhy
ZWFkIGhhcyBpdHMgb3duIHNpbmdsZSBpbnN0YW5jZSBvZiBzaGFyZWQgdGltZXIsIHdoaWNoIGlt
cGxlbWVudHMgdGhpcyBpbnRlcmZhY2UuCi0gICAgLy8gVGhpcyBpbnN0YW5jZSBpcyBzaGFyZWQg
YnkgYWxsIHRpbWVycyBpbiB0aGUgdGhyZWFkLgotICAgIC8vIE5vdCBpbnRlbmRlZCB0byBiZSB1
c2VkIGRpcmVjdGx5OyB1c2UgdGhlIFRpbWVyIGNsYXNzIGluc3RlYWQuCi0gICAgY2xhc3MgU2hh
cmVkVGltZXIgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFyZWRUaW1lcik7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgU2hhcmVkVGltZXIo
KSB7IH0KLSAgICAgICAgdmlydHVhbCB+U2hhcmVkVGltZXIoKSB7fQotICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0RmlyZWRGdW5jdGlvbih2b2lkICgqKSgpKSA9IDA7Ci0KLSAgICAgICAgLy8gVGhl
IGZpcmUgaW50ZXJ2YWwgaXMgaW4gc2Vjb25kcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBtb25v
dG9uaWMgY2xvY2sgdGltZS4KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldEZpcmVJbnRlcnZhbChk
b3VibGUpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7Ci0KLSAgICAgICAg
dmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSB7IH0KLSAgICB9OwotCi0KLSAgICAvLyBJbXBsZW1l
bnRlZCBieSBwb3J0IChzaW5jZSBpdCBwcm92aWRlcyB0aGUgcnVuIGxvb3AgZm9yIHRoZSBtYWlu
IHRocmVhZCkuCi0gICAgLy8gRklYTUU6IG1ha2UgcG9ydHMgaW1wbGVtZW50IE1haW5UaHJlYWRT
aGFyZWRUaW1lciBkaXJlY3RseSBpbnN0ZWFkLgotICAgIHZvaWQgc2V0U2hhcmVkVGltZXJGaXJl
ZEZ1bmN0aW9uKHZvaWQgKCopKCkpOwotICAgIHZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2
YWwoZG91YmxlKTsKLSAgICB2b2lkIHN0b3BTaGFyZWRUaW1lcigpOwotICAgIHZvaWQgaW52YWxp
ZGF0ZVNoYXJlZFRpbWVyKCk7Ci0KLSAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBTaGFyZWRUaW1l
ciBmb3IgdGhlIG1haW4gdGhyZWFkLgotICAgIGNsYXNzIE1haW5UaHJlYWRTaGFyZWRUaW1lciBm
aW5hbCA6IHB1YmxpYyBTaGFyZWRUaW1lciB7Ci0gICAgcHVibGljOgotICAgICAgICB2b2lkIHNl
dEZpcmVkRnVuY3Rpb24odm9pZCAoKmZ1bmN0aW9uKSgpKSBvdmVycmlkZQotICAgICAgICB7Ci0g
ICAgICAgICAgICBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24oZnVuY3Rpb24pOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2
YWwpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNldFNoYXJlZFRpbWVyRmlyZUlu
dGVydmFsKGludGVydmFsKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzdG9w
KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgc3RvcFNoYXJlZFRpbWVyKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2b2lkIGludmFsaWRhdGUoKSBvdmVycmlkZQotICAgICAgICB7
Ci0gICAgICAgICAgICBpbnZhbGlkYXRlU2hhcmVkVGltZXIoKTsKLSAgICAgICAgfQotICAgIH07
CisvLyBFYWNoIHRocmVhZCBoYXMgaXRzIG93biBzaW5nbGUgaW5zdGFuY2Ugb2Ygc2hhcmVkIHRp
bWVyLCB3aGljaCBpbXBsZW1lbnRzIHRoaXMgaW50ZXJmYWNlLgorLy8gVGhpcyBpbnN0YW5jZSBp
cyBzaGFyZWQgYnkgYWxsIHRpbWVycyBpbiB0aGUgdGhyZWFkLgorLy8gTm90IGludGVuZGVkIHRv
IGJlIHVzZWQgZGlyZWN0bHk7IHVzZSB0aGUgVGltZXIgY2xhc3MgaW5zdGVhZC4KK2NsYXNzIFNo
YXJlZFRpbWVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFyZWRUaW1lcik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZFRpbWVyKCkgeyB9CisgICAg
dmlydHVhbCB+U2hhcmVkVGltZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZWRGdW5j
dGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworCisgICAgLy8gVGhlIGZpcmUgaW50
ZXJ2YWwgaXMgaW4gc2Vjb25kcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBtb25vdG9uaWMgY2xv
Y2sgdGltZS4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZUludGVydmFsKGRvdWJsZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGUoKSB7IH0KK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZFRpbWVycy5jcHAKaW5kZXggMTIzMWNhMi4uMDIyODM0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGhyZWFkVGltZXJzLmgiCiAKKyNpbmNsdWRlICJN
YWluVGhyZWFkU2hhcmVkVGltZXIuaCIKICNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgogI2luY2x1
ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtNDcsMjcgKzQ4
LDIxIEBAIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4RHVyYXRpb25PZkZpcmluZ1RpbWVycyA9IDAu
MDUwOwogLy8gVGltZXJzIGFyZSBjcmVhdGVkLCBzdGFydGVkIGFuZCBmaXJlZCBvbiB0aGUgc2Ft
ZSB0aHJlYWQsIGFuZCBlYWNoIHRocmVhZCBoYXMgaXRzIG93biBUaHJlYWRUaW1lcnMKIC8vIGNv
cHkgdG8ga2VlcCB0aGUgaGVhcCBhbmQgYSBzZXQgb2YgY3VycmVudGx5IGZpcmluZyB0aW1lcnMu
CiAKLXN0YXRpYyBNYWluVGhyZWFkU2hhcmVkVGltZXIqIG1haW5UaHJlYWRTaGFyZWRUaW1lcigp
Ci17Ci0gICAgc3RhdGljIE1haW5UaHJlYWRTaGFyZWRUaW1lciogdGltZXIgPSBuZXcgTWFpblRo
cmVhZFNoYXJlZFRpbWVyOwotICAgIHJldHVybiB0aW1lcjsKLX0KLQogVGhyZWFkVGltZXJzOjpU
aHJlYWRUaW1lcnMoKQogICAgIDogbV9zaGFyZWRUaW1lcigwKQogICAgICwgbV9maXJpbmdUaW1l
cnMoZmFsc2UpCiAgICAgLCBtX3BlbmRpbmdTaGFyZWRUaW1lckZpcmVUaW1lKDApCiB7CiAgICAg
aWYgKGlzVUlUaHJlYWQoKSkKLSAgICAgICAgc2V0U2hhcmVkVGltZXIobWFpblRocmVhZFNoYXJl
ZFRpbWVyKCkpOworICAgICAgICBzZXRTaGFyZWRUaW1lcigmTWFpblRocmVhZFNoYXJlZFRpbWVy
OjpzaW5nbGV0b24oKSk7CiB9CiAKIC8vIEEgd29ya2VyIHRocmVhZCBtYXkgaW5pdGlhbGl6ZSBT
aGFyZWRUaW1lciBhZnRlciBzb21lIHRpbWVycyBhcmUgY3JlYXRlZC4KLS8vIEFsc28sIFNoYXJl
ZFRpbWVyIGNhbiBiZSByZXBsYWNlZCB3aXRoIDAgYmVmb3JlIGFsbCB0aW1lcnMgYXJlIGRlc3Ry
b3llZC4KKy8vIEFsc28sIFNoYXJlZFRpbWVyIGNhbiBiZSByZXBsYWNlZCB3aXRoIG51bGxwdHIg
YmVmb3JlIGFsbCB0aW1lcnMgYXJlIGRlc3Ryb3llZC4KIHZvaWQgVGhyZWFkVGltZXJzOjpzZXRT
aGFyZWRUaW1lcihTaGFyZWRUaW1lciogc2hhcmVkVGltZXIpCiB7CiAgICAgaWYgKG1fc2hhcmVk
VGltZXIpIHsKLSAgICAgICAgbV9zaGFyZWRUaW1lci0+c2V0RmlyZWRGdW5jdGlvbigwKTsKKyAg
ICAgICAgbV9zaGFyZWRUaW1lci0+c2V0RmlyZWRGdW5jdGlvbihudWxscHRyKTsKICAgICAgICAg
bV9zaGFyZWRUaW1lci0+c3RvcCgpOwogICAgICAgICBtX3BlbmRpbmdTaGFyZWRUaW1lckZpcmVU
aW1lID0gMDsKICAgICB9CkBAIC03NSw3ICs3MCw3IEBAIHZvaWQgVGhyZWFkVGltZXJzOjpzZXRT
aGFyZWRUaW1lcihTaGFyZWRUaW1lciogc2hhcmVkVGltZXIpCiAgICAgbV9zaGFyZWRUaW1lciA9
IHNoYXJlZFRpbWVyOwogICAgIAogICAgIGlmIChzaGFyZWRUaW1lcikgewotICAgICAgICBtX3No
YXJlZFRpbWVyLT5zZXRGaXJlZEZ1bmN0aW9uKFRocmVhZFRpbWVyczo6c2hhcmVkVGltZXJGaXJl
ZCk7CisgICAgICAgIG1fc2hhcmVkVGltZXItPnNldEZpcmVkRnVuY3Rpb24oW10geyB0aHJlYWRH
bG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkuc2hhcmVkVGltZXJGaXJlZEludGVybmFsKCk7IH0p
OwogICAgICAgICB1cGRhdGVTaGFyZWRUaW1lcigpOwogICAgIH0KIH0KQEAgLTEwMSwxMiArOTYs
NiBAQCB2b2lkIFRocmVhZFRpbWVyczo6dXBkYXRlU2hhcmVkVGltZXIoKQogICAgIH0KIH0KIAot
dm9pZCBUaHJlYWRUaW1lcnM6OnNoYXJlZFRpbWVyRmlyZWQoKQotewotICAgIC8vIFJlZGlyZWN0
IHRvIG5vbi1zdGF0aWMgbWV0aG9kLgotICAgIHRocmVhZEdsb2JhbERhdGEoKS50aHJlYWRUaW1l
cnMoKS5zaGFyZWRUaW1lckZpcmVkSW50ZXJuYWwoKTsKLX0KLQogdm9pZCBUaHJlYWRUaW1lcnM6
OnNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
IHx8ICghaXNXZWJUaHJlYWQoKSAmJiAhaXNVSVRocmVhZCgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RocmVhZFRpbWVycy5oCmluZGV4IDE1ZDlmMzcuLmU0ZjI2MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RocmVhZFRpbWVycy5oCkBAIC01MSw4ICs1MSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyB2b2lkIHNoYXJlZFRpbWVyRmlyZWQoKTsKLQogICAg
ICAgICB2b2lkIHNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpOwogICAgICAgICB2b2lkIGZpcmVU
aW1lcnNJbk5lc3RlZEV2ZW50TG9vcEludGVybmFsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTYyNDc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBAIC0w
LDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNYWluVGhyZWFkU2hh
cmVkVGltZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KKworI2lmIFBM
QVRGT1JNKE1BQykKKyNpbXBvcnQgIlBvd2VyT2JzZXJ2ZXJNYWMuaCIKKyNlbGlmIFBMQVRGT1JN
KElPUykKKyNpbXBvcnQgIldlYkNvcmVUaHJlYWQuaCIKKyNpbXBvcnQgIldlYkNvcmVUaHJlYWRS
dW4uaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBDRlJ1bkxvb3BU
aW1lclJlZiBzaGFyZWRUaW1lcjsKK3N0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGlt
ZXJSZWYsIHZvaWQqKTsKK3N0YXRpYyB2b2lkIHJlc3RhcnRTaGFyZWRUaW1lcigpOworCitzdGF0
aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8Q0ZUaW1lSW50ZXJ2YWw+OjptYXgoKTsKKworI2lmIFBMQVRGT1JN
KElPUykKK3N0YXRpYyB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKENGTm90aWZpY2F0
aW9uQ2VudGVyUmVmLCB2b2lkKiwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25h
cnlSZWYpCit7CisgICAgV2ViVGhyZWFkUnVuKF57CisgICAgICAgIHJlc3RhcnRTaGFyZWRUaW1l
cigpOworICAgIH0pOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZl
cigpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBwb3dl
ck9ic2VydmVyOworICAgIGlmICghcG93ZXJPYnNlcnZlcikKKyAgICAgICAgcG93ZXJPYnNlcnZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5y
ZWxlYXNlKCk7CisjZWxpZiBQTEFURk9STShJT1MpCisgICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJl
ZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gZmFsc2U7CisgICAgaWYgKCFyZWdpc3RlcmVk
Rm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24pIHsKKyAgICAgICAgcmVnaXN0ZXJlZEZvckFwcGxp
Y2F0aW9uTm90aWZpY2F0aW9uID0gdHJ1ZTsKKyAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJS
ZWYgbm90aWZpY2F0aW9uQ2VudGVyID0gQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRl
cigpOworICAgICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKG5vdGlmaWNhdGlv
bkNlbnRlciwgbnVsbHB0ciwgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUsIENGU1RSKCJVSUFw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIiksIG51bGxwdHIsIENGTm90aWZp
Y2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yQ29hbGVzY2UpOworICAgIH0KKyNlbmRpZgorfQorCitz
dGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKikKK3sKKyAgICBB
dXRvZHJhaW5lZFBvb2wgcG9vbDsKKyAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNpbmdsZXRv
bigpLmZpcmVkKCk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc3RhcnRTaGFyZWRUaW1lcigpCit7Cisg
ICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgTWFpblRocmVhZFNo
YXJlZFRpbWVyOjpzaW5nbGV0b24oKS5zdG9wKCk7CisgICAgdGltZXJGaXJlZCgwLCAwKTsKK30K
Kwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUoKQoreworICAgIGlmICgh
c2hhcmVkVGltZXIpCisgICAgICAgIHJldHVybjsKKworICAgIENGUnVuTG9vcFRpbWVySW52YWxp
ZGF0ZShzaGFyZWRUaW1lcik7CisgICAgQ0ZSZWxlYXNlKHNoYXJlZFRpbWVyKTsKKyAgICBzaGFy
ZWRUaW1lciA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRG
aXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIEFTU0VSVChtX2ZpcmVkRnVuY3Rp
b24pOworCisgICAgQ0ZBYnNvbHV0ZVRpbWUgZmlyZURhdGUgPSBDRkFic29sdXRlVGltZUdldEN1
cnJlbnQoKSArIGludGVydmFsOworICAgIGlmICghc2hhcmVkVGltZXIpIHsKKyAgICAgICAgc2hh
cmVkVGltZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0ZShudWxscHRyLCBmaXJlRGF0ZSwga0NGVGlt
ZUludGVydmFsRGlzdGFudEZ1dHVyZSwgMCwgMCwgdGltZXJGaXJlZCwgbnVsbHB0cik7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihXZWJUaHJlYWRSdW5Mb29w
KCksIHNoYXJlZFRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAgICAg
Q0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBzaGFyZWRUaW1lciwga0NG
UnVuTG9vcENvbW1vbk1vZGVzKTsKKyNlbmRpZgorCisgICAgICAgIHNldHVwUG93ZXJPYnNlcnZl
cigpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDRlJ1bkxvb3BUaW1lclNldE5l
eHRGaXJlRGF0ZShzaGFyZWRUaW1lciwgZmlyZURhdGUpOworfQorCit2b2lkIE1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6c3RvcCgpCit7CisgICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIsIGtD
RlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRUaW1lckNGLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmQ3MDdiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTMz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTAsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlNoYXJlZFRpbWVyLmgiCi0K
LSNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+Ci0KLSNpZiBQTEFURk9STShNQUMpCi0j
aW1wb3J0ICJQb3dlck9ic2VydmVyTWFjLmgiCi0jZWxpZiBQTEFURk9STShJT1MpCi0jaW1wb3J0
ICJXZWJDb3JlVGhyZWFkLmgiCi0jaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCi0jZW5kaWYK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgQ0ZSdW5Mb29wVGltZXJSZWYgc2hhcmVk
VGltZXI7Ci1zdGF0aWMgdm9pZCAoKnNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbikoKTsKLXN0YXRp
YyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKLXN0YXRpYyB2b2lk
IHJlc3RhcnRTaGFyZWRUaW1lcigpOwotCi1zdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwga0NG
VGltZUludGVydmFsRGlzdGFudEZ1dHVyZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8Q0ZUaW1lSW50
ZXJ2YWw+OjptYXgoKTsKLQotI2lmIFBMQVRGT1JNKElPUykKLXN0YXRpYyB2b2lkIGFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiwgQ0ZTdHJp
bmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCi17Ci0gICAgV2ViVGhyZWFkUnVu
KF57Ci0gICAgICAgIHJlc3RhcnRTaGFyZWRUaW1lcigpOwotICAgIH0pOwotfQotI2VuZGlmCi0K
LXN0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZlcigpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBwb3dlck9ic2VydmVyOwotICAgIGlmICghcG93ZXJP
YnNlcnZlcikKLSAgICAgICAgcG93ZXJPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UG93ZXJP
YnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7Ci0jZWxpZiBQTEFURk9STShJ
T1MpCi0gICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9u
ID0gZmFsc2U7Ci0gICAgaWYgKCFyZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24p
IHsKLSAgICAgICAgcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gdHJ1ZTsK
LSAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYgbm90aWZpY2F0aW9uQ2VudGVyID0gQ0ZO
b3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpOwotICAgICAgICBDRk5vdGlmaWNhdGlv
bkNlbnRlckFkZE9ic2VydmVyKG5vdGlmaWNhdGlvbkNlbnRlciwgbnVsbHB0ciwgYXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUsIENGU1RSKCJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90
aWZpY2F0aW9uIiksIG51bGxwdHIsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yQ29h
bGVzY2UpOwotICAgIH0KLSNlbmRpZgotfQotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbih2b2lkICgqZikoKSkKLXsKLSAgICBBU1NFUlQoIXNoYXJlZFRpbWVyRmlyZWRGdW5jdGlv
biB8fCBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gPT0gZik7Ci0KLSAgICBzaGFyZWRUaW1lckZp
cmVkRnVuY3Rpb24gPSBmOwotfQotCi1zdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRp
bWVyUmVmLCB2b2lkKikKLXsKLSAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKLSAgICBzaGFyZWRU
aW1lckZpcmVkRnVuY3Rpb24oKTsKLX0KLQotc3RhdGljIHZvaWQgcmVzdGFydFNoYXJlZFRpbWVy
KCkKLXsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9w
U2hhcmVkVGltZXIoKTsKLSAgICB0aW1lckZpcmVkKDAsIDApOwotfQotCi12b2lkIGludmFsaWRh
dGVTaGFyZWRUaW1lcigpCi17Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRpbWVyKTsKLSAgICBDRlJl
bGVhc2Uoc2hhcmVkVGltZXIpOwotICAgIHNoYXJlZFRpbWVyID0gbnVsbHB0cjsKLX0KLQotdm9p
ZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCi17Ci0gICAgQVNT
RVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7Ci0KLSAgICBDRkFic29sdXRlVGltZSBmaXJl
RGF0ZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50ZXJ2YWw7Ci0gICAgaWYgKCFz
aGFyZWRUaW1lcikgewotICAgICAgICBzaGFyZWRUaW1lciA9IENGUnVuTG9vcFRpbWVyQ3JlYXRl
KG51bGxwdHIsIGZpcmVEYXRlLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlLCAwLCAwLCB0
aW1lckZpcmVkLCBudWxscHRyKTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIENGUnVuTG9v
cEFkZFRpbWVyKFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVkVGltZXIsIGtDRlJ1bkxvb3BDb21t
b25Nb2Rlcyk7Ci0jZWxzZQotICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRD
dXJyZW50KCksIHNoYXJlZFRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2VuZGlmCi0K
LSAgICAgICAgc2V0dXBQb3dlck9ic2VydmVyKCk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyLCBmaXJlRGF0
ZSk7Ci19Ci0KLXZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKLXsKLSAgICBpZiAoIXNoYXJlZFRpbWVy
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShz
aGFyZWRUaW1lciwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9N
YWluVGhyZWFkU2hhcmVkVGltZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZs
L01haW5UaHJlYWRTaGFyZWRUaW1lckVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMDkwNmMyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9NYWluVGhyZWFkU2hhcmVkVGltZXJFZmwuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KKyAqICAg
ICAgICAgICAoQykgMjAwOCBBZm9uc28gUmFiZWxvIENvc3RhIEpyLgorICogICAgICAgICAgIChD
KSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAqICAgICAgICAgICAoQykg
MjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1haW5UaHJl
YWRTaGFyZWRUaW1lci5oIgorCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEVjb3JlX1RpbWVy
KiBzaGFyZWRUaW1lcjsKKworc3RhdGljIEVpbmFfQm9vbCB0aW1lckV2ZW50KHZvaWQqKQorewor
ICAgIHNoYXJlZFRpbWVyID0gbnVsbHB0cjsKKyAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNp
bmdsZXRvbigpLmZpcmVkKCk7CisgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKK30K
Kwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3AoKQoreworICAgIGlmIChzaGFyZWRU
aW1lcikgeworICAgICAgICBlY29yZV90aW1lcl9kZWwoc2hhcmVkVGltZXIpOworICAgICAgICBz
aGFyZWRUaW1lciA9IG51bGxwdHI7CisgICAgfQorfQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRU
aW1lcjo6c2V0RmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAgICBzdG9wKCk7Cisg
ICAgc2hhcmVkVGltZXIgPSBlY29yZV90aW1lcl9sb29wX2FkZChpbnRlcnZhbCwgdGltZXJFdmVu
dCwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRl
KCkKK3sKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
U2hhcmVkVGltZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRp
bWVyRWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBiYTAzNi4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgotICogICAgICAgICAgIChDKSAyMDA4IEFmb25zbyBS
YWJlbG8gQ29zdGEgSnIuCi0gKiAgICAgICAgICAgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1i
ZWRkZWQgc3lzdGVtcwotICogICAgICAgICAgIChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJv
bmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkVGltZXIuaCIKLQotI2luY2x1ZGUgPEVjb3Jl
Lmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0YXRpYyBFY29yZV9UaW1lciAqX3NoYXJlZFRpbWVyID0gMDsKLQotc3RhdGljIHZvaWQg
KCpfdGltZXJGdW5jdGlvbikoKTsKLQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24o
dm9pZCAoKmZ1bmMpKCkpCi17Ci0gICAgX3RpbWVyRnVuY3Rpb24gPSBmdW5jOwotfQotCi1zdGF0
aWMgRWluYV9Cb29sIHRpbWVyRXZlbnQodm9pZCopCi17Ci0gICAgX3NoYXJlZFRpbWVyID0gMDsK
LSAgICBpZiAoX3RpbWVyRnVuY3Rpb24pCi0gICAgICAgIF90aW1lckZ1bmN0aW9uKCk7Ci0KLSAg
ICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOwotfQotCi12b2lkIHN0b3BTaGFyZWRUaW1l
cigpCi17Ci0gICAgaWYgKF9zaGFyZWRUaW1lcikgewotICAgICAgICBlY29yZV90aW1lcl9kZWwo
X3NoYXJlZFRpbWVyKTsKLSAgICAgICAgX3NoYXJlZFRpbWVyID0gMDsKLSAgICB9Ci19Ci0KLXZv
aWQgYWRkTmV3VGltZXIoZG91YmxlIGludGVydmFsKQotewotICAgIHN0b3BTaGFyZWRUaW1lcigp
OwotCi0gICAgX3NoYXJlZFRpbWVyID0gZWNvcmVfdGltZXJfbG9vcF9hZGQoaW50ZXJ2YWwsIHRp
bWVyRXZlbnQsIDApOwotfQotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJs
ZSBpbnRlcnZhbCkKLXsKLSAgICBhZGROZXdUaW1lcihpbnRlcnZhbCk7Ci19Ci0KLXZvaWQgaW52
YWxpZGF0ZVNoYXJlZFRpbWVyKCkKLXsKLX0KLQotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvTWFpblRocmVhZFNoYXJlZFRpbWVyR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZDliNTAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTWFpblRocmVhZFNoYXJlZFRpbWVyR3RrLmNwcApA
QCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBt
aWtlLmVtbWVsQGdtYWlsLmNvbQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1haW5UaHJlYWRTaGFyZWRUaW1lci5oIgorCisjaW5jbHVkZSA8d3RmL2dsaWIvR01h
aW5Mb29wU291cmNlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEdNYWluTG9v
cFNvdXJjZSBnU2hhcmVkVGltZXI7CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRG
aXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIEFTU0VSVChtX2ZpcmVkRnVuY3Rp
b24pOworCisgICAgLy8gVGhpcyBpcyBHREtfUFJJT1JJVFlfUkVEUkFXLCBidXQgd2UgZG9uJ3Qg
d2FudCB0byBkZXBlbmQgb24gR0RLIGhlcmUganVzdCB0byB1c2UgYSBjb25zdGFudC4KKyAgICBz
dGF0aWMgY29uc3QgaW50IHByaW9yaXR5ID0gR19QUklPUklUWV9ISUdIX0lETEUgKyAyMDsKKyAg
ICBnU2hhcmVkVGltZXIuc2NoZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0XSBzaGFyZWRUaW1lclRp
bWVvdXRDYWxsYmFjayIsIFt0aGlzXSB7IGZpcmVkKCk7IH0sCisgICAgICAgIHN0ZDo6Y2hyb25v
OjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+KHN0ZDo6Y2hyb25vOjpk
dXJhdGlvbjxkb3VibGU+KGludGVydmFsKSksIHByaW9yaXR5KTsKK30KKwordm9pZCBNYWluVGhy
ZWFkU2hhcmVkVGltZXI6OnN0b3AoKQoreworICAgIGdTaGFyZWRUaW1lci5jYW5jZWwoKTsKK30K
Kwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUoKQoreworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZmN2Q3My4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5l
bW1lbEBnbWFpbC5jb20KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJTaGFyZWRUaW1lci5oIgotCi0jaW5jbHVkZSA8d3RmL2dsaWIvR01haW5Mb29wU291cmNlLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIEdNYWluTG9vcFNvdXJjZSBnU2hhcmVk
VGltZXI7Ci1zdGF0aWMgdm9pZCAoKnNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbikoKTsKLQotdm9p
ZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpCi17Ci0gICAgc2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uID0gZjsKLSAgICBpZiAoIXNoYXJlZFRpbWVyRmlyZWRGdW5jdGlv
bikKLSAgICAgICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOwotfQotCi12b2lkIHNldFNoYXJlZFRp
bWVyRmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBBU1NFUlQoc2hhcmVkVGlt
ZXJGaXJlZEZ1bmN0aW9uKTsKLQotICAgIC8vIFRoaXMgaXMgR0RLX1BSSU9SSVRZX1JFRFJBVywg
YnV0IHdlIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9uIEdESyBoZXJlIGp1c3QgdG8gdXNlIGEgY29u
c3RhbnQuCi0gICAgc3RhdGljIGNvbnN0IGludCBwcmlvcml0eSA9IEdfUFJJT1JJVFlfSElHSF9J
RExFICsgMjA7Ci0gICAgZ1NoYXJlZFRpbWVyLnNjaGVkdWxlQWZ0ZXJEZWxheSgiW1dlYktpdF0g
c2hhcmVkVGltZXJUaW1lb3V0Q2FsbGJhY2siLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oc2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uKSwKLSAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4o
aW50ZXJ2YWwpKSwgcHJpb3JpdHkpOwotfQotCi12b2lkIHN0b3BTaGFyZWRUaW1lcigpCi17Ci0g
ICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOwotfQotCi12b2lkIGludmFsaWRhdGVTaGFyZWRUaW1l
cigpCi17Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9N
YWluVGhyZWFkU2hhcmVkVGltZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOWE2NjBkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9NYWluVGhyZWFkU2hhcmVkVGltZXJXaW4uY3BwCkBAIC0wLDAgKzEsMTk4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZFNoYXJlZFRpbWVyLmgiCisKKyNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJDb3JlSW5zdGFu
Y2VIYW5kbGUuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9XaW5kb3dz
RXh0cmFzLmg+CisKKyNpbmNsdWRlIDxtbXN5c3RlbS5oPgorCisvLyBUaGVzZSBhcmVuJ3QgaW4g
d2ludXNlci5oIHdpdGggdGhlIE1TVlMgMjAwMyBQbGF0Zm9ybSBTREssIAorLy8gc28gdXNlIGRl
ZmF1bHQgdmFsdWVzIGluIHRoYXQgY2FzZS4KKyNpZm5kZWYgVVNFUl9USU1FUl9NSU5JTVVNCisj
ZGVmaW5lIFVTRVJfVElNRVJfTUlOSU1VTSAweDAwMDAwMDBBCisjZW5kaWYKKworI2lmbmRlZiBV
U0VSX1RJTUVSX01BWElNVU0KKyNkZWZpbmUgVVNFUl9USU1FUl9NQVhJTVVNIDB4N0ZGRkZGRkYK
KyNlbmRpZgorCisjaWZuZGVmIFFTX1JBV0lOUFVUCisjZGVmaW5lIFFTX1JBV0lOUFVUICAgICAg
ICAgMHgwNDAwCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgVUlOVCB0
aW1lcklEOworCitzdGF0aWMgSEFORExFIHRpbWVyOworc3RhdGljIEhXTkQgdGltZXJXaW5kb3dI
YW5kbGUgPSAwOworY29uc3QgTFBDV1NUUiBrVGltZXJXaW5kb3dDbGFzc05hbWUgPSBMIlRpbWVy
V2luZG93Q2xhc3MiOworCitzdGF0aWMgVUlOVCB0aW1lckZpcmVkTWVzc2FnZSA9IDA7CitzdGF0
aWMgSEFORExFIHRpbWVyUXVldWU7CitzdGF0aWMgYm9vbCBoaWdoUmVzVGltZXJBY3RpdmU7Citz
dGF0aWMgYm9vbCBwcm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlID0gZmFsc2U7CitzdGF0aWMg
TE9ORyBwZW5kaW5nVGltZXJzOworCitjb25zdCBpbnQgdGltZXJSZXNvbHV0aW9uID0gMTsgLy8g
VG8gaW1wcm92ZSB0aW1lciByZXNvbHV0aW9uLCB3ZSBjYWxsIHRpbWVCZWdpblBlcmlvZC90aW1l
RW5kUGVyaW9kIHdpdGggdGhpcyB2YWx1ZSB0byBpbmNyZWFzZSB0aW1lciByZXNvbHV0aW9uIHRv
IDFtcy4KK2NvbnN0IGludCBoaWdoUmVzb2x1dGlvblRocmVzaG9sZE1zZWMgPSAxNjsgLy8gT25s
eSBhY3RpdmF0ZSBoaWdoLXJlcyB0aW1lciBmb3Igc3ViLTE2bXMgdGltZXJzIChXaW5kb3dzIGNh
biBmaXJlIHRpbWVycyBhdCAxNm1zIGludGVydmFscyB3aXRob3V0IGNoYW5naW5nIHRoZSBzeXN0
ZW0gcmVzb2x1dGlvbikuCitjb25zdCBpbnQgc3RvcEhpZ2hSZXNUaW1lckluTXNlYyA9IDMwMDsg
Ly8gU3RvcCBoaWdoLXJlcyB0aW1lciBhZnRlciAwLjMgc2Vjb25kcyB0byBsZXNzZW4gcG93ZXIg
Y29uc3VtcHRpb24gKHdlIGRvbid0IHVzZSBhIHNtYWxsZXIgdGltZSBzaW5jZSBvc2NpbGxhdGlu
ZyBiZXR3ZWVuIGhpZ2ggYW5kIGxvdyByZXNvbHV0aW9uIGJyZWFrcyB0aW1lciBhY2N1cmFjeSBv
biBYUCkuCisKK2VudW0geworICAgIHNoYXJlZFRpbWVySUQgPSAxMDAwLAorICAgIGVuZEhpZ2hS
ZXNUaW1lcklEID0gMTAwMSwKK307CisKK0xSRVNVTFQgQ0FMTEJBQ0sgVGltZXJXaW5kb3dXbmRQ
cm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFt
KQoreworICAgIGlmIChtZXNzYWdlID09IFdNX1RJTUVSKSB7CisgICAgICAgIGlmICh3UGFyYW0g
PT0gc2hhcmVkVGltZXJJRCkgeworICAgICAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFu
ZGxlLCBzaGFyZWRUaW1lcklEKTsKKyAgICAgICAgICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6
c2luZ2xldG9uKCkuZmlyZWQoKTsKKyAgICAgICAgfSBlbHNlIGlmICh3UGFyYW0gPT0gZW5kSGln
aFJlc1RpbWVySUQpIHsKKyAgICAgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwg
ZW5kSGlnaFJlc1RpbWVySUQpOworICAgICAgICAgICAgaGlnaFJlc1RpbWVyQWN0aXZlID0gZmFs
c2U7CisgICAgICAgICAgICB0aW1lRW5kUGVyaW9kKHRpbWVyUmVzb2x1dGlvbik7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgaWYgKG1lc3NhZ2UgPT0gdGltZXJGaXJlZE1lc3NhZ2UpIHsKKyAgICAg
ICAgSW50ZXJsb2NrZWRFeGNoYW5nZSgmcGVuZGluZ1RpbWVycywgMCk7CisgICAgICAgIHByb2Nl
c3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgPSB0cnVlOworICAgICAgICBNYWluVGhyZWFkU2hhcmVk
VGltZXI6OnNpbmdsZXRvbigpLmZpcmVkKCk7CisgICAgICAgIHByb2Nlc3NpbmdDdXN0b21UaW1l
ck1lc3NhZ2UgPSBmYWxzZTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIERlZldpbmRvd1By
b2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOworCisgICAgcmV0dXJuIDA7Cit9CisK
K3N0YXRpYyB2b2lkIGluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldpbmRvdygpCit7CisgICAgaWYg
KHRpbWVyV2luZG93SGFuZGxlKQorICAgICAgICByZXR1cm47CisKKyAgICBXTkRDTEFTU0VYIHdj
ZXg7CisgICAgbWVtc2V0KCZ3Y2V4LCAwLCBzaXplb2YoV05EQ0xBU1NFWCkpOworICAgIHdjZXgu
Y2JTaXplID0gc2l6ZW9mKFdORENMQVNTRVgpOworCisgICAgd2NleC5scGZuV25kUHJvYyAgICA9
IFRpbWVyV2luZG93V25kUHJvYzsKKyAgICB3Y2V4LmhJbnN0YW5jZSAgICAgID0gV2ViQ29yZTo6
aW5zdGFuY2VIYW5kbGUoKTsKKyAgICB3Y2V4Lmxwc3pDbGFzc05hbWUgID0ga1RpbWVyV2luZG93
Q2xhc3NOYW1lOworICAgIFJlZ2lzdGVyQ2xhc3NFeCgmd2NleCk7CisKKyAgICB0aW1lcldpbmRv
d0hhbmRsZSA9IENyZWF0ZVdpbmRvdyhrVGltZXJXaW5kb3dDbGFzc05hbWUsIDAsIDAsCisgICAg
ICAgQ1dfVVNFREVGQVVMVCwgMCwgQ1dfVVNFREVGQVVMVCwgMCwgSFdORF9NRVNTQUdFLCAwLCBX
ZWJDb3JlOjppbnN0YW5jZUhhbmRsZSgpLCAwKTsKKworICAgIHRpbWVyRmlyZWRNZXNzYWdlID0g
UmVnaXN0ZXJXaW5kb3dNZXNzYWdlKEwiY29tLmFwcGxlLldlYktpdC5UaW1lckZpcmVkIik7Cit9
CisKK3N0YXRpYyB2b2lkIE5UQVBJIHF1ZXVlVGltZXJQcm9jKFBWT0lELCBCT09MRUFOKQorewor
ICAgIGlmIChJbnRlcmxvY2tlZEluY3JlbWVudCgmcGVuZGluZ1RpbWVycykgPT0gMSkKKyAgICAg
ICAgUG9zdE1lc3NhZ2UodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVyRmlyZWRNZXNzYWdlLCAwLCAw
KTsKK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbChkb3Vi
bGUgaW50ZXJ2YWwpCit7CisgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlvbik7CisKKyAgICB1bnNp
Z25lZCBpbnRlcnZhbEluTVM7CisgICAgaW50ZXJ2YWwgKj0gMTAwMDsKKyAgICBpZiAoaW50ZXJ2
YWwgPiBVU0VSX1RJTUVSX01BWElNVU0pCisgICAgICAgIGludGVydmFsSW5NUyA9IFVTRVJfVElN
RVJfTUFYSU1VTTsKKyAgICBlbHNlCisgICAgICAgIGludGVydmFsSW5NUyA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbnRlcnZhbCk7CisKKyAgICBpbml0aWFsaXplT2ZmU2NyZWVuVGltZXJXaW5k
b3coKTsKKyAgICBib29sIHRpbWVyU2V0ID0gZmFsc2U7CisKKyAgICBpZiAoU2V0dGluZ3M6OnNo
b3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKCkpIHsKKyAgICAgICAgaWYgKGludGVydmFsIDwg
aGlnaFJlc29sdXRpb25UaHJlc2hvbGRNc2VjKSB7CisgICAgICAgICAgICBpZiAoIWhpZ2hSZXNU
aW1lckFjdGl2ZSkgeworICAgICAgICAgICAgICAgIGhpZ2hSZXNUaW1lckFjdGl2ZSA9IHRydWU7
CisgICAgICAgICAgICAgICAgdGltZUJlZ2luUGVyaW9kKHRpbWVyUmVzb2x1dGlvbik7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBTZXRUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgZW5kSGln
aFJlc1RpbWVySUQsIHN0b3BIaWdoUmVzVGltZXJJbk1zZWMsIDApOworICAgICAgICB9CisKKyAg
ICAgICAgRFdPUkQgcXVldWVTdGF0dXMgPSBMT1dPUkQoR2V0UXVldWVTdGF0dXMoUVNfUEFJTlQg
fCBRU19NT1VTRUJVVFRPTiB8IFFTX0tFWSB8IFFTX1JBV0lOUFVUKSk7CisKKyAgICAgICAgLy8g
V2luMzIgaGFzIGEgdHJpLWxldmVsIHF1ZXVlIHdpdGggYXBwbGljYXRpb24gbWVzc2FnZXMgPiB1
c2VyIGlucHV0ID4gV01fUEFJTlQvV01fVElNRVIuCisKKyAgICAgICAgLy8gSWYgdGhlIHF1ZXVl
IGRvZXNuJ3QgY29udGFpbnMgaW5wdXQgZXZlbnRzLCB3ZSB1c2UgYSBoaWdoZXIgcHJpb3J0eSB0
aW1lciBldmVudCBwb3N0aW5nIG1lY2hhbmlzbS4KKyAgICAgICAgaWYgKCEocXVldWVTdGF0dXMg
JiAoUVNfTU9VU0VCVVRUT04gfCBRU19LRVkgfCBRU19SQVdJTlBVVCkpKSB7CisgICAgICAgICAg
ICBpZiAoaW50ZXJ2YWxJbk1TIDwgVVNFUl9USU1FUl9NSU5JTVVNICYmICFwcm9jZXNzaW5nQ3Vz
dG9tVGltZXJNZXNzYWdlICYmICEocXVldWVTdGF0dXMgJiBRU19QQUlOVCkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBDYWxsIFBvc3RNZXNzYWdlIGltbWVkaWF0ZWx5IGlmIHRoZSB0aW1lciBpcyBh
bHJlYWR5IGV4cGlyZWQsIHVubGVzcyBhIHBhaW50IGlzIHBlbmRpbmcuCisgICAgICAgICAgICAg
ICAgLy8gKHdlIHByaW9yaXRpemUgcGFpbnRzIG92ZXIgdGltZXJzKQorICAgICAgICAgICAgICAg
IGlmIChJbnRlcmxvY2tlZEluY3JlbWVudCgmcGVuZGluZ1RpbWVycykgPT0gMSkKKyAgICAgICAg
ICAgICAgICAgICAgUG9zdE1lc3NhZ2UodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVyRmlyZWRNZXNz
YWdlLCAwLCAwKTsKKyAgICAgICAgICAgICAgICB0aW1lclNldCA9IHRydWU7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgZGVsYXkgdGhlIFBvc3RN
ZXNzYWdlIHZpYSBhIENyZWF0ZVRpbWVyUXVldWVUaW1lcgorICAgICAgICAgICAgICAgIGlmICgh
dGltZXJRdWV1ZSkKKyAgICAgICAgICAgICAgICAgICAgdGltZXJRdWV1ZSA9IENyZWF0ZVRpbWVy
UXVldWUoKTsKKyAgICAgICAgICAgICAgICBpZiAodGltZXIpCisgICAgICAgICAgICAgICAgICAg
IERlbGV0ZVRpbWVyUXVldWVUaW1lcih0aW1lclF1ZXVlLCB0aW1lciwgMCk7CisgICAgICAgICAg
ICAgICAgdGltZXJTZXQgPSBDcmVhdGVUaW1lclF1ZXVlVGltZXIoJnRpbWVyLCB0aW1lclF1ZXVl
LCBxdWV1ZVRpbWVyUHJvYywgMCwgaW50ZXJ2YWxJbk1TLCAwLCBXVF9FWEVDVVRFSU5USU1FUlRI
UkVBRCB8IFdUX0VYRUNVVEVPTkxZT05DRSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAodGltZXJTZXQpIHsKKyAgICAgICAgaWYgKHRpbWVySUQpIHsKKyAgICAg
ICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJJRCk7CisgICAgICAgICAg
ICB0aW1lcklEID0gMDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHRpbWVySUQg
PSBTZXRUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgc2hhcmVkVGltZXJJRCwgaW50ZXJ2YWxJbk1T
LCAwKTsKKyAgICAgICAgdGltZXIgPSAwOworICAgIH0KK30KKwordm9pZCBNYWluVGhyZWFkU2hh
cmVkVGltZXI6OnN0b3AoKQoreworICAgIGlmICh0aW1lclF1ZXVlICYmIHRpbWVyKSB7CisgICAg
ICAgIERlbGV0ZVRpbWVyUXVldWVUaW1lcih0aW1lclF1ZXVlLCB0aW1lciwgMCk7CisgICAgICAg
IHRpbWVyID0gMDsKKyAgICB9CisKKyAgICBpZiAodGltZXJJRCkgeworICAgICAgICBLaWxsVGlt
ZXIodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVySUQpOworICAgICAgICB0aW1lcklEID0gMDsKKyAg
ICB9Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKK3sKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZFRpbWVy
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkMDJiMTkuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZFRpbWVyV2luLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDIwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkVGltZXIuaCIK
LQotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIldl
YkNvcmVJbnN0YW5jZUhhbmRsZS5oIgotI2luY2x1ZGUgIldpZGdldC5oIgotI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5jbHVkZSA8
d3RmL1dpbmRvd3NFeHRyYXMuaD4KLQotI2luY2x1ZGUgPG1tc3lzdGVtLmg+Ci0KLS8vIFRoZXNl
IGFyZW4ndCBpbiB3aW51c2VyLmggd2l0aCB0aGUgTVNWUyAyMDAzIFBsYXRmb3JtIFNESywgCi0v
LyBzbyB1c2UgZGVmYXVsdCB2YWx1ZXMgaW4gdGhhdCBjYXNlLgotI2lmbmRlZiBVU0VSX1RJTUVS
X01JTklNVU0KLSNkZWZpbmUgVVNFUl9USU1FUl9NSU5JTVVNIDB4MDAwMDAwMEEKLSNlbmRpZgot
Ci0jaWZuZGVmIFVTRVJfVElNRVJfTUFYSU1VTQotI2RlZmluZSBVU0VSX1RJTUVSX01BWElNVU0g
MHg3RkZGRkZGRgotI2VuZGlmCi0KLSNpZm5kZWYgUVNfUkFXSU5QVVQKLSNkZWZpbmUgUVNfUkFX
SU5QVVQgICAgICAgICAweDA0MDAKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
YXRpYyBVSU5UIHRpbWVySUQ7Ci1zdGF0aWMgdm9pZCAoKnNoYXJlZFRpbWVyRmlyZWRGdW5jdGlv
bikoKTsKLQotc3RhdGljIEhBTkRMRSB0aW1lcjsKLXN0YXRpYyBIV05EIHRpbWVyV2luZG93SGFu
ZGxlID0gMDsKLWNvbnN0IExQQ1dTVFIga1RpbWVyV2luZG93Q2xhc3NOYW1lID0gTCJUaW1lcldp
bmRvd0NsYXNzIjsKLQotc3RhdGljIFVJTlQgdGltZXJGaXJlZE1lc3NhZ2UgPSAwOwotc3RhdGlj
IEhBTkRMRSB0aW1lclF1ZXVlOwotc3RhdGljIGJvb2wgaGlnaFJlc1RpbWVyQWN0aXZlOwotc3Rh
dGljIGJvb2wgcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IGZhbHNlOwotc3RhdGljIExP
TkcgcGVuZGluZ1RpbWVyczsKLQotY29uc3QgaW50IHRpbWVyUmVzb2x1dGlvbiA9IDE7IC8vIFRv
IGltcHJvdmUgdGltZXIgcmVzb2x1dGlvbiwgd2UgY2FsbCB0aW1lQmVnaW5QZXJpb2QvdGltZUVu
ZFBlcmlvZCB3aXRoIHRoaXMgdmFsdWUgdG8gaW5jcmVhc2UgdGltZXIgcmVzb2x1dGlvbiB0byAx
bXMuCi1jb25zdCBpbnQgaGlnaFJlc29sdXRpb25UaHJlc2hvbGRNc2VjID0gMTY7IC8vIE9ubHkg
YWN0aXZhdGUgaGlnaC1yZXMgdGltZXIgZm9yIHN1Yi0xNm1zIHRpbWVycyAoV2luZG93cyBjYW4g
ZmlyZSB0aW1lcnMgYXQgMTZtcyBpbnRlcnZhbHMgd2l0aG91dCBjaGFuZ2luZyB0aGUgc3lzdGVt
IHJlc29sdXRpb24pLgotY29uc3QgaW50IHN0b3BIaWdoUmVzVGltZXJJbk1zZWMgPSAzMDA7IC8v
IFN0b3AgaGlnaC1yZXMgdGltZXIgYWZ0ZXIgMC4zIHNlY29uZHMgdG8gbGVzc2VuIHBvd2VyIGNv
bnN1bXB0aW9uICh3ZSBkb24ndCB1c2UgYSBzbWFsbGVyIHRpbWUgc2luY2Ugb3NjaWxsYXRpbmcg
YmV0d2VlbiBoaWdoIGFuZCBsb3cgcmVzb2x1dGlvbiBicmVha3MgdGltZXIgYWNjdXJhY3kgb24g
WFApLgotCi1lbnVtIHsKLSAgICBzaGFyZWRUaW1lcklEID0gMTAwMCwKLSAgICBlbmRIaWdoUmVz
VGltZXJJRCA9IDEwMDEsCi19OwotCi1MUkVTVUxUIENBTExCQUNLIFRpbWVyV2luZG93V25kUHJv
YyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkK
LXsKLSAgICBpZiAobWVzc2FnZSA9PSBXTV9USU1FUikgewotICAgICAgICBpZiAod1BhcmFtID09
IHNoYXJlZFRpbWVySUQpIHsKLSAgICAgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRs
ZSwgc2hhcmVkVGltZXJJRCk7Ci0gICAgICAgICAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24o
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh3UGFyYW0gPT0gZW5kSGlnaFJlc1RpbWVy
SUQpIHsKLSAgICAgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgZW5kSGlnaFJl
c1RpbWVySUQpOwotICAgICAgICAgICAgaGlnaFJlc1RpbWVyQWN0aXZlID0gZmFsc2U7Ci0gICAg
ICAgICAgICB0aW1lRW5kUGVyaW9kKHRpbWVyUmVzb2x1dGlvbik7Ci0gICAgICAgIH0KLSAgICB9
IGVsc2UgaWYgKG1lc3NhZ2UgPT0gdGltZXJGaXJlZE1lc3NhZ2UpIHsKLSAgICAgICAgSW50ZXJs
b2NrZWRFeGNoYW5nZSgmcGVuZGluZ1RpbWVycywgMCk7Ci0gICAgICAgIHByb2Nlc3NpbmdDdXN0
b21UaW1lck1lc3NhZ2UgPSB0cnVlOwotICAgICAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24o
KTsKLSAgICAgICAgcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IGZhbHNlOwotICAgIH0g
ZWxzZQotICAgICAgICByZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBtZXNzYWdlLCB3UGFyYW0s
IGxQYXJhbSk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU9m
ZlNjcmVlblRpbWVyV2luZG93KCkKLXsKLSAgICBpZiAodGltZXJXaW5kb3dIYW5kbGUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFdORENMQVNTRVggd2NleDsKLSAgICBtZW1zZXQoJndjZXgsIDAs
IHNpemVvZihXTkRDTEFTU0VYKSk7Ci0gICAgd2NleC5jYlNpemUgPSBzaXplb2YoV05EQ0xBU1NF
WCk7Ci0KLSAgICB3Y2V4LmxwZm5XbmRQcm9jICAgID0gVGltZXJXaW5kb3dXbmRQcm9jOwotICAg
IHdjZXguaEluc3RhbmNlICAgICAgPSBXZWJDb3JlOjppbnN0YW5jZUhhbmRsZSgpOwotICAgIHdj
ZXgubHBzekNsYXNzTmFtZSAgPSBrVGltZXJXaW5kb3dDbGFzc05hbWU7Ci0gICAgUmVnaXN0ZXJD
bGFzc0V4KCZ3Y2V4KTsKLQotICAgIHRpbWVyV2luZG93SGFuZGxlID0gQ3JlYXRlV2luZG93KGtU
aW1lcldpbmRvd0NsYXNzTmFtZSwgMCwgMCwKLSAgICAgICBDV19VU0VERUZBVUxULCAwLCBDV19V
U0VERUZBVUxULCAwLCBIV05EX01FU1NBR0UsIDAsIFdlYkNvcmU6Omluc3RhbmNlSGFuZGxlKCks
IDApOwotCi0gICAgdGltZXJGaXJlZE1lc3NhZ2UgPSBSZWdpc3RlcldpbmRvd01lc3NhZ2UoTCJj
b20uYXBwbGUuV2ViS2l0LlRpbWVyRmlyZWQiKTsKLX0KLQotdm9pZCBzZXRTaGFyZWRUaW1lckZp
cmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpCi17Ci0gICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9u
ID0gZjsKLX0KLQotc3RhdGljIHZvaWQgTlRBUEkgcXVldWVUaW1lclByb2MoUFZPSUQsIEJPT0xF
QU4pCi17Ci0gICAgaWYgKEludGVybG9ja2VkSW5jcmVtZW50KCZwZW5kaW5nVGltZXJzKSA9PSAx
KQotICAgICAgICBQb3N0TWVzc2FnZSh0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJGaXJlZE1lc3Nh
Z2UsIDAsIDApOwotfQotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJsZSBp
bnRlcnZhbCkKLXsKLSAgICBBU1NFUlQoc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKTsKLQotICAg
IHVuc2lnbmVkIGludGVydmFsSW5NUzsKLSAgICBpbnRlcnZhbCAqPSAxMDAwOwotICAgIGlmIChp
bnRlcnZhbCA+IFVTRVJfVElNRVJfTUFYSU1VTSkKLSAgICAgICAgaW50ZXJ2YWxJbk1TID0gVVNF
Ul9USU1FUl9NQVhJTVVNOwotICAgIGVsc2UKLSAgICAgICAgaW50ZXJ2YWxJbk1TID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGludGVydmFsKTsKLQotICAgIGluaXRpYWxpemVPZmZTY3JlZW5UaW1l
cldpbmRvdygpOwotICAgIGJvb2wgdGltZXJTZXQgPSBmYWxzZTsKLQotICAgIGlmIChTZXR0aW5n
czo6c2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoKSkgewotICAgICAgICBpZiAoaW50ZXJ2
YWwgPCBoaWdoUmVzb2x1dGlvblRocmVzaG9sZE1zZWMpIHsKLSAgICAgICAgICAgIGlmICghaGln
aFJlc1RpbWVyQWN0aXZlKSB7Ci0gICAgICAgICAgICAgICAgaGlnaFJlc1RpbWVyQWN0aXZlID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICB0aW1lQmVnaW5QZXJpb2QodGltZXJSZXNvbHV0aW9uKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFNldFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCBl
bmRIaWdoUmVzVGltZXJJRCwgc3RvcEhpZ2hSZXNUaW1lckluTXNlYywgMCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBEV09SRCBxdWV1ZVN0YXR1cyA9IExPV09SRChHZXRRdWV1ZVN0YXR1cyhRU19Q
QUlOVCB8IFFTX01PVVNFQlVUVE9OIHwgUVNfS0VZIHwgUVNfUkFXSU5QVVQpKTsKLQotICAgICAg
ICAvLyBXaW4zMiBoYXMgYSB0cmktbGV2ZWwgcXVldWUgd2l0aCBhcHBsaWNhdGlvbiBtZXNzYWdl
cyA+IHVzZXIgaW5wdXQgPiBXTV9QQUlOVC9XTV9USU1FUi4KLQotICAgICAgICAvLyBJZiB0aGUg
cXVldWUgZG9lc24ndCBjb250YWlucyBpbnB1dCBldmVudHMsIHdlIHVzZSBhIGhpZ2hlciBwcmlv
cnR5IHRpbWVyIGV2ZW50IHBvc3RpbmcgbWVjaGFuaXNtLgotICAgICAgICBpZiAoIShxdWV1ZVN0
YXR1cyAmIChRU19NT1VTRUJVVFRPTiB8IFFTX0tFWSB8IFFTX1JBV0lOUFVUKSkpIHsKLSAgICAg
ICAgICAgIGlmIChpbnRlcnZhbEluTVMgPCBVU0VSX1RJTUVSX01JTklNVU0gJiYgIXByb2Nlc3Np
bmdDdXN0b21UaW1lck1lc3NhZ2UgJiYgIShxdWV1ZVN0YXR1cyAmIFFTX1BBSU5UKSkgewotICAg
ICAgICAgICAgICAgIC8vIENhbGwgUG9zdE1lc3NhZ2UgaW1tZWRpYXRlbHkgaWYgdGhlIHRpbWVy
IGlzIGFscmVhZHkgZXhwaXJlZCwgdW5sZXNzIGEgcGFpbnQgaXMgcGVuZGluZy4KLSAgICAgICAg
ICAgICAgICAvLyAod2UgcHJpb3JpdGl6ZSBwYWludHMgb3ZlciB0aW1lcnMpCi0gICAgICAgICAg
ICAgICAgaWYgKEludGVybG9ja2VkSW5jcmVtZW50KCZwZW5kaW5nVGltZXJzKSA9PSAxKQotICAg
ICAgICAgICAgICAgICAgICBQb3N0TWVzc2FnZSh0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJGaXJl
ZE1lc3NhZ2UsIDAsIDApOwotICAgICAgICAgICAgICAgIHRpbWVyU2V0ID0gdHJ1ZTsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBkZWxheSB0aGUg
UG9zdE1lc3NhZ2UgdmlhIGEgQ3JlYXRlVGltZXJRdWV1ZVRpbWVyCi0gICAgICAgICAgICAgICAg
aWYgKCF0aW1lclF1ZXVlKQotICAgICAgICAgICAgICAgICAgICB0aW1lclF1ZXVlID0gQ3JlYXRl
VGltZXJRdWV1ZSgpOwotICAgICAgICAgICAgICAgIGlmICh0aW1lcikKLSAgICAgICAgICAgICAg
ICAgICAgRGVsZXRlVGltZXJRdWV1ZVRpbWVyKHRpbWVyUXVldWUsIHRpbWVyLCAwKTsKLSAgICAg
ICAgICAgICAgICB0aW1lclNldCA9IENyZWF0ZVRpbWVyUXVldWVUaW1lcigmdGltZXIsIHRpbWVy
UXVldWUsIHF1ZXVlVGltZXJQcm9jLCAwLCBpbnRlcnZhbEluTVMsIDAsIFdUX0VYRUNVVEVJTlRJ
TUVSVEhSRUFEIHwgV1RfRVhFQ1VURU9OTFlPTkNFKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0KLQotICAgIGlmICh0aW1lclNldCkgewotICAgICAgICBpZiAodGltZXJJRCkgewot
ICAgICAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCB0aW1lcklEKTsKLSAgICAg
ICAgICAgIHRpbWVySUQgPSAwOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGlt
ZXJJRCA9IFNldFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCBzaGFyZWRUaW1lcklELCBpbnRlcnZh
bEluTVMsIDApOwotICAgICAgICB0aW1lciA9IDA7Ci0gICAgfQotfQotCi12b2lkIHN0b3BTaGFy
ZWRUaW1lcigpCi17Ci0gICAgaWYgKHRpbWVyUXVldWUgJiYgdGltZXIpIHsKLSAgICAgICAgRGVs
ZXRlVGltZXJRdWV1ZVRpbWVyKHRpbWVyUXVldWUsIHRpbWVyLCAwKTsKLSAgICAgICAgdGltZXIg
PSAwOwotICAgIH0KLQotICAgIGlmICh0aW1lcklEKSB7Ci0gICAgICAgIEtpbGxUaW1lcih0aW1l
cldpbmRvd0hhbmRsZSwgdGltZXJJRCk7Ci0gICAgICAgIHRpbWVySUQgPSAwOwotICAgIH0KLX0K
LQotdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGltZXIoKQotewotfQotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBlODEyMzA4Li42NTlkMDkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXb3JrZXJTaGFyZWRUaW1lciA6IHB1YmxpYyBT
aGFyZWRUaW1lciB7CitjbGFzcyBXb3JrZXJTaGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBTaGFy
ZWRUaW1lciB7CiBwdWJsaWM6CiAgICAgV29ya2VyU2hhcmVkVGltZXIoKQogICAgICAgICA6IG1f
c2hhcmVkVGltZXJGdW5jdGlvbigwKQpAQCAtNTAsMTYgKzUwLDE2IEBAIHB1YmxpYzoKICAgICB9
CiAKICAgICAvLyBTaGFyZWRUaW1lciBpbnRlcmZhY2UuCi0gICAgdmlydHVhbCB2b2lkIHNldEZp
cmVkRnVuY3Rpb24odm9pZCAoKmZ1bmN0aW9uKSgpKSB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbiA9
IGZ1bmN0aW9uOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3VibGUgaW50
ZXJ2YWwpIHsgbV9uZXh0RmlyZVRpbWUgPSBpbnRlcnZhbCArIGN1cnJlbnRUaW1lKCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc3RvcCgpIHsgbV9uZXh0RmlyZVRpbWUgPSAwOyB9CisgICAgdmlydHVh
bCB2b2lkIHNldEZpcmVkRnVuY3Rpb24oc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24p
IG92ZXJyaWRlIHsgbV9zaGFyZWRUaW1lckZ1bmN0aW9uID0gV1RGOjptb3ZlKGZ1bmN0aW9uKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKSBvdmVy
cmlkZSB7IG1fbmV4dEZpcmVUaW1lID0gaW50ZXJ2YWwgKyBjdXJyZW50VGltZSgpOyB9CisgICAg
dmlydHVhbCB2b2lkIHN0b3AoKSBvdmVycmlkZSB7IG1fbmV4dEZpcmVUaW1lID0gMDsgfQogCiAg
ICAgYm9vbCBpc0FjdGl2ZSgpIHsgcmV0dXJuIG1fc2hhcmVkVGltZXJGdW5jdGlvbiAmJiBtX25l
eHRGaXJlVGltZTsgfQogICAgIGRvdWJsZSBmaXJlVGltZSgpIHsgcmV0dXJuIG1fbmV4dEZpcmVU
aW1lOyB9CiAgICAgdm9pZCBmaXJlKCkgeyBtX3NoYXJlZFRpbWVyRnVuY3Rpb24oKTsgfQogCiBw
cml2YXRlOgotICAgIHZvaWQgKCptX3NoYXJlZFRpbWVyRnVuY3Rpb24pKCk7CisgICAgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+IG1fc2hhcmVkVGltZXJGdW5jdGlvbjsKICAgICBkb3VibGUgbV9uZXh0
RmlyZVRpbWU7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264127</attachid>
            <date>2015-10-27 02:38:17 -0700</date>
            <delta_ts>2015-10-28 02:43:00 -0700</delta_ts>
            <desc>Try to fix mac build</desc>
            <filename>wcore-shared-timer.diff</filename>
            <type>text/plain</type>
            <size>58342</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOThmM2VhNC4uYjIwNjMxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMDksNiArMjEwOSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9MaW5rSGFzaC5jcHAKICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmNwcAogICAgIHBsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuY3BwCisgICAgcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVy
LmNwcAogICAgIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKICAgICBwbGF0Zm9y
bS9Ob3RJbXBsZW1lbnRlZC5jcHAKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDI1ZTJiNjAuLjQ5Y2FmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAor
MjAxNS0xMC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
KyAgICAgICAgTWFrZSBldmVyeSBwb3J0IGltcGxlbWVudCBNYWluVGhyZWFkU2hhcmVkVGltZXIg
aW5zdGVhZCBvZiB1c2luZyBnbG9iYWwgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIE1haW5UaHJlYWRTaGFyZWRUaW1lciB0byBp
dHMgb3duIGZpbGVzIGFuZCBhZGQgdGhlIGNvbW1vbgorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0
aGVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgTWFpblRocmVhZFNoYXJlZFRp
bWVyLmNwcC4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogVXBkYXRlIGZpbGVuYW1lcy4K
KyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpNYWluVGhyZWFkU2hhcmVkVGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6ZmlyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwLgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZFRpbWVyLmg6IFJlbW92ZSBNYWluVGhyZWFkU2hhcmVkVGltZXIKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gYW5kIHJlaW5kZW50IHRoZSBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkVGltZXI6OlNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVy
Ojp+U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXI6OmludmFsaWRh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRUaW1lcnM6OlRocmVhZFRpbWVycyk6IFVzZSBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnNpbmdsZXRvbigpLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzZXRTaGFy
ZWRUaW1lcik6IFVzZSBhIGxhbWJkYSBmdW5jdGlvbgorICAgICAgICBpbnN0ZWFkIG9mIGEgcG9p
bnRlciB0byBhIHN0YXRpYyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6
OnNoYXJlZFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRp
bWVycy5oOiBSZW1vdmVkIHVuc3VzZWQgc3RhdGljIG1ldGhvZCBzaGFyZWRUaW1lckZpcmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0dXBQb3dlck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6cmVzdGFydFNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2Vm
bC9NYWluVGhyZWFkU2hhcmVkVGltZXJFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnRp
bWVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVy
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0ay5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsu
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50
ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJXaW5kb3dXbmRQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6
OmluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpxdWV1
ZVRpbWVyUHJvYyk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNl
dEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlk
YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOiBVcGRhdGUgV29ya2Vy
U2hhcmVkVGltZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24gdG8gdXNlIHN0ZDo6ZnVuY3Rpb24g
aW5zdGVhZCBvZiBhIHBvaW50ZXIuIEFsc28KKyAgICAgICAgbWFyayB0aGUgY2xhc3MgYXMgZmlu
YWwgYW5kIHRoZSB2aXJ0dWFsIGltcGxlbWVudGF0aW9ucyBhcyBvdmVycmlkZS4KKwogMjAxNS0x
MC0yNiAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtTdHJlYW1zIEFQSV0gSW1wbGVtZW50IGFib3J0IG1ldGhvZCBvbiB3cml0YWJsZSBz
dHJlYW1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDljYzExNTcuLjA0MTI3OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMTMsMTMgKzExMywxMyBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9lZmwvTG9jYWxpemVkU3RyaW5nc0VmbC5j
cHAKICAgICBwbGF0Zm9ybS9lZmwvTG9nZ2luZ0VmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvTUlN
RVR5cGVSZWdpc3RyeUVmbC5jcHAKKyAgICBwbGF0Zm9ybS9lZmwvTWFpblRocmVhZFNoYXJlZFRp
bWVyRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcAogICAgIHBsYXRm
b3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL1Bs
YXRmb3JtTW91c2VFdmVudEVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1TY3JlZW5F
ZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAKICAgICBw
bGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwCi0gICAgcGxhdGZvcm0vZWZsL1NoYXJl
ZFRpbWVyRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9Tb3VuZEVmbC5jcHAKICAgICBwbGF0Zm9y
bS9lZmwvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRmb3JtL2VmbC9XaWRnZXRFZmwu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGJhYWFjYjkuLmEyMDlhOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xNjEsOCArMTYxLDggQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9Mb2dnaW5nR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9NSU1FVHlwZVJlZ2lzdHJ5
R3RrLmNwcAorICAgIHBsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsuY3BwCiAg
ICAgcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKLSAgICBwbGF0Zm9ybS9ndGsvU2hh
cmVkVGltZXJHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAK
ICAgICBwbGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCmluZGV4IDk3MDQ4ODYuLmNlNjg0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBA
IC0yNjMsMTAgKzI2MywxMCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0Yu
Y3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisgICAgcGxhdGZvcm0vY2Yv
TWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3Np
YmlsaXR5U29mdExpbmsuY3BwCiAgICAgcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAog
ICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1NoYXJl
ZFRpbWVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCiAKICAgICBwbGF0Zm9ybS9j
b2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdp
bi5jbWFrZQppbmRleCAwMjExZjY4Li40ZWY4YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFr
ZQpAQCAtMTI0LDYgKzEyNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3Bw
CisgICAgcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKICAgICBwbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5j
cHAKICAgICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcApAQCAtMTMzLDcg
KzEzNCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9T
Y3JvbGxiYXJUaGVtZVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2lu
LmNwcAogICAgIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCi0gICAgcGxhdGZvcm0v
d2luL1NoYXJlZFRpbWVyV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9Tb3VuZFdpbi5jcHAKICAg
ICBwbGF0Zm9ybS93aW4vU3RydWN0dXJlZEV4Y2VwdGlvbkhhbmRsZXJTdXBwcmVzc29yLmNwcAog
ICAgIHBsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg5MzJmOTcuLmE0NTNkOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE3MDYsNyArMTcwNiw2IEBACiAJCTQ2MjMzRUVFMUJBMEYxODcwMDBFQkVCQiAvKiBBdHRy
aWJ1dGVET01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2MjMzRUVEMUJBMEYxN0EwMDBFQkVCQiAvKiBBdHRyaWJ1dGVET01Ub2tlbkxp
c3QuaCAqLzsgfTsKIAkJNDYyMzNFRUYxQkEwRjE4QjAwMEVCRUJCIC8qIEF0dHJpYnV0ZURPTVRv
a2VuTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjIzM0VFQzFCQTBGMTdBMDAwRUJFQkIgLyogQXR0cmlidXRlRE9NVG9rZW5MaXN0LmNwcCAq
LzsgfTsKIAkJNDYzNDU5MkMxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNDU5MkIx
QUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuY3BwICovOyB9OwotCQk0NjM0NTky
RTFBQzIyNzNDMDBFQ0I3MUMgLyogU2hhcmVkVGltZXJDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjM0NTkyRDFBQzIyNzNDMDBFQ0I3MUMgLyog
U2hhcmVkVGltZXJDRi5jcHAgKi87IH07CiAJCTQ2M0VCNjIyMUI4Nzg5RTAwMDk2RUQ1MSAvKiBU
YWdDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAqLzsg
fTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0Iw
MDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NjlCMjg3MUI4NTJBMEIwMDBG
OTA1RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMjc2OEUxQjg1Mjk3RjAwNUMyNTU2
IC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAgKi87IH07CkBAIC0zOTE5LDYg
KzM5MTgsOSBAQAogCQk5QTFCNkY5NzE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01TdHJpbmdMaXN0
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlBMUI2Rjk2MTU4ODY5QzgwMDExQThDNCAvKiBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwICov
OyB9OwogCQk5QTUyOEU4MzE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlBNTI4RTgxMTdE
N0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVjdHMuY3BwICovOyB9OwogCQk5QTUyOEU4NDE3
RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTUyOEU4MjE3RDdGNTJGMDBBQTk1MTggLyogRmxv
YXRpbmdPYmplY3RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOUFBQ0ExNEQxQkRGNzI3NDAwNTFBNzIyIC8qIE1haW5UaHJlYWRTaGFyZWRUaW1l
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWluVGhyZWFkU2hh
cmVkVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QUFDQTE0RTFCREY3
MjhCMDA1MUE3MjIgLyogTWFpblRocmVhZFNoYXJlZFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1haW5UaHJlYWRTaGFyZWRUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5QUFDQTE0RjFCREY3MkEzMDA1MUE3MjIgLyogTWFpblRocmVhZFNoYXJl
ZFRpbWVyQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFpblRo
cmVhZFNoYXJlZFRpbWVyQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QUIx
RjM4MDE4RTI0ODlBMDA1MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUFCMUYzN0UxOEUyNDg5
QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCAqLzsgfTsKIAkJOUFCMUYz
ODExOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUFCMUYzN0YxOEUyNDg5
QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuY3BwICovOyB9OwogCQk5QjFB
QjA3QzE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjFB
QjA3QjE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3Rv
bS5jcHAgKi87IH07CkBAIC05MDY1LDcgKzkwNjcsNiBAQAogCQk0NjIzM0VFQzFCQTBGMTdBMDAw
RUJFQkIgLyogQXR0cmlidXRlRE9NVG9rZW5MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEF0dHJpYnV0ZURPTVRva2VuTGlzdC5jcHA7IHBhdGggPSAuLi9BdHRy
aWJ1dGVET01Ub2tlbkxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjIz
M0VFRDFCQTBGMTdBMDAwRUJFQkIgLyogQXR0cmlidXRlRE9NVG9rZW5MaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF0dHJpYnV0ZURPTVRva2VuTGlzdC5oOyBwYXRoID0g
Li4vQXR0cmlidXRlRE9NVG9rZW5MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjM0NTkyRDFBQzIyNzNDMDBFQ0I3MUMgLyogU2hh
cmVkVGltZXJDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFy
ZWRUaW1lckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRUI2MjAxQjg3
ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGFnQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhZ0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRhZGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlTWV0YWRhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzYwLDYgKzE1NzYxLDcgQEAKIAkJMUFFNDJG
NjcwQUE0QjhDQjAwQzg2MTJEIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk5QUFDQTE0RjFCREY3MkEzMDA1MUE3MjIgLyogTWFpblRocmVhZFNo
YXJlZFRpbWVyQ0YuY3BwICovLAogCQkJCUUxQThFNTY0MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVS
TEV4dHJhcy5jcHAgKi8sCiAJCQkJRTFBOEU1NjUxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0
cmFzLmggKi8sCiAJCQkJNDQzODE3RkQxQTkxQjJGODAwNkUwNEYyIC8qIENvcmVNZWRpYVNvZnRM
aW5rLmNwcCAqLywKQEAgLTE1Nzc0LDcgKzE1Nzc2LDYgQEAKIAkJCQkyRDc2QkI4MzE5NDU2Rjgx
MDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmNwcCAqLywKIAkJCQkyRDc2QkI4MDE5NDU2MzI0
MDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmggKi8sCiAJCQkJNTEyREQ4RTIwRDkxRTJCNDAw
MEY4OUVFIC8qIFNoYXJlZEJ1ZmZlckNGLmNwcCAqLywKLQkJCQk0NjM0NTkyRDFBQzIyNzNDMDBF
Q0I3MUMgLyogU2hhcmVkVGltZXJDRi5jcHAgKi8sCiAJCQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVG
NUVGIC8qIFVSTENGLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CkBAIC0yMjM1OSw2ICsy
MjM2MCw4IEBACiAJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOUFBQ0ExNEUxQkRGNzI4
QjAwNTFBNzIyIC8qIE1haW5UaHJlYWRTaGFyZWRUaW1lci5oICovLAorCQkJCTlBQUNBMTREMUJE
RjcyNzQwMDUxQTcyMiAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwICovLAogCQkJCTQ5RTkx
MkE0MEVGQUM4RTYwMDlEMENBRiAvKiBhbmltYXRpb24gKi8sCiAJCQkJRkQzMTYwNDAxMkIwMjZB
MzAwQzFBMzU5IC8qIGF1ZGlvICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBj
ZiAqLywKQEAgLTMwNzg5LDcgKzMwNzkyLDYgQEAKIAkJCQk1MTJERDhFMzBEOTFFMkI0MDAwRjg5
RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCMUYwMkUxM0Iw
MjVDQTAwRjUxMDNGIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNEE5NTUyMEI0RURDRkYwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXJNYWMubW0gaW4g
U291cmNlcyAqLywKLQkJCQk0NjM0NTkyRTFBQzIyNzNDMDBFQ0I3MUMgLyogU2hhcmVkVGltZXJD
Ri5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNjNFODhGNzExOEEzOUQyMDBFRDkyMzEgLyogU2lt
cGxlRm9udERhdGFDb3JlVGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDg5NDRBMjE4MEI1
N0Q4MDBGMTY1RDggLyogU2ltcGxlTGluZUxheW91dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
ODVENkUwMzFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01h
aW5UaHJlYWRTaGFyZWRUaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhy
ZWFkU2hhcmVkVGltZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3
ZjE3YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhy
ZWFkU2hhcmVkVGltZXIuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1haW5UaHJlYWRTaGFyZWRUaW1l
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01haW5UaHJlYWRTaGFyZWRUaW1lciYgTWFp
blRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxNYWluVGhyZWFkU2hhcmVkVGltZXI+IGluc3RhbmNlOworICAgIHJldHVybiBpbnN0YW5j
ZTsKK30KKworTWFpblRocmVhZFNoYXJlZFRpbWVyOjpNYWluVGhyZWFkU2hhcmVkVGltZXIoKQor
eworfQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRGdW5jdGlvbihzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4mJiBmaXJlZEZ1bmN0aW9uKQoreworICAgIFJFTEVBU0VfQVNTRVJU
KCFtX2ZpcmVkRnVuY3Rpb24gfHwgIWZpcmVkRnVuY3Rpb24pOworICAgIG1fZmlyZWRGdW5jdGlv
biA9IFdURjo6bW92ZShmaXJlZEZ1bmN0aW9uKTsKK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVk
VGltZXI6OmZpcmVkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9maXJlZEZ1bmN0aW9uKTsKKyAg
ICBtX2ZpcmVkRnVuY3Rpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjFlZDZmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmgKQEAgLTAsMCArMSw1
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0
IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWFpblRocmVhZFNoYXJlZFRp
bWVyX2gKKyNkZWZpbmUgTWFpblRocmVhZFNoYXJlZFRpbWVyX2gKKworI2luY2x1ZGUgIlNoYXJl
ZFRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTWFpblRocmVhZFNoYXJlZFRpbWVyIGZpbmFsIDogcHVibGljIFNo
YXJlZFRpbWVyIHsKKyAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxNYWluVGhy
ZWFkU2hhcmVkVGltZXI+OworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBNYWlu
VGhyZWFkU2hhcmVkVGltZXImIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBzZXRGaXJlZEZ1bmN0
aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZpcmVJ
bnRlcnZhbChkb3VibGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAg
IHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOworCisgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxk
IGJlIHByaXZhdGUsIGJ1dCBDRiBhbmQgV2luZG93cyBpbXBsZW1lbnRhdGlvbnMKKyAgICAvLyBu
ZWVkIHRvIGNhbGwgdGhpcyBmcm9tIHN0YXRpYyBtZXRob2RzIGF0IHRoZSBtb21lbnQuCisgICAg
dm9pZCBmaXJlZCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIE1haW5UaHJlYWRTaGFyZWRUaW1l
cigpOworCisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZmlyZWRGdW5jdGlvbiB7IG51bGxw
dHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1haW5UaHJl
YWRTaGFyZWRUaW1lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
VGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKaW5kZXggMjk5
YzQ5OS4uY2FjMWI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
VGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRUaW1lci5oCkBAIC0y
Niw1OSArMjYsMjggQEAKICNpZm5kZWYgU2hhcmVkVGltZXJfaAogI2RlZmluZSBTaGFyZWRUaW1l
cl9oCiAKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ICAgIC8vIEVhY2ggdGhyZWFkIGhhcyBpdHMgb3duIHNpbmdsZSBpbnN0YW5jZSBvZiBzaGFyZWQg
dGltZXIsIHdoaWNoIGltcGxlbWVudHMgdGhpcyBpbnRlcmZhY2UuCi0gICAgLy8gVGhpcyBpbnN0
YW5jZSBpcyBzaGFyZWQgYnkgYWxsIHRpbWVycyBpbiB0aGUgdGhyZWFkLgotICAgIC8vIE5vdCBp
bnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5OyB1c2UgdGhlIFRpbWVyIGNsYXNzIGluc3RlYWQu
Ci0gICAgY2xhc3MgU2hhcmVkVGltZXIgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
aGFyZWRUaW1lcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAg
ICAgU2hhcmVkVGltZXIoKSB7IH0KLSAgICAgICAgdmlydHVhbCB+U2hhcmVkVGltZXIoKSB7fQot
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZWRGdW5jdGlvbih2b2lkICgqKSgpKSA9IDA7Ci0K
LSAgICAgICAgLy8gVGhlIGZpcmUgaW50ZXJ2YWwgaXMgaW4gc2Vjb25kcyByZWxhdGl2ZSB0byB0
aGUgY3VycmVudCBtb25vdG9uaWMgY2xvY2sgdGltZS4KLSAgICAgICAgdmlydHVhbCB2b2lkIHNl
dEZpcmVJbnRlcnZhbChkb3VibGUpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9
IDA7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSB7IH0KLSAgICB9OwotCi0K
LSAgICAvLyBJbXBsZW1lbnRlZCBieSBwb3J0IChzaW5jZSBpdCBwcm92aWRlcyB0aGUgcnVuIGxv
b3AgZm9yIHRoZSBtYWluIHRocmVhZCkuCi0gICAgLy8gRklYTUU6IG1ha2UgcG9ydHMgaW1wbGVt
ZW50IE1haW5UaHJlYWRTaGFyZWRUaW1lciBkaXJlY3RseSBpbnN0ZWFkLgotICAgIHZvaWQgc2V0
U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCopKCkpOwotICAgIHZvaWQgc2V0U2hhcmVk
VGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlKTsKLSAgICB2b2lkIHN0b3BTaGFyZWRUaW1lcigpOwot
ICAgIHZvaWQgaW52YWxpZGF0ZVNoYXJlZFRpbWVyKCk7Ci0KLSAgICAvLyBJbXBsZW1lbnRhdGlv
biBvZiBTaGFyZWRUaW1lciBmb3IgdGhlIG1haW4gdGhyZWFkLgotICAgIGNsYXNzIE1haW5UaHJl
YWRTaGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBTaGFyZWRUaW1lciB7Ci0gICAgcHVibGljOgot
ICAgICAgICB2b2lkIHNldEZpcmVkRnVuY3Rpb24odm9pZCAoKmZ1bmN0aW9uKSgpKSBvdmVycmlk
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24oZnVu
Y3Rpb24pOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldEZpcmVJbnRlcnZh
bChkb3VibGUgaW50ZXJ2YWwpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNldFNo
YXJlZFRpbWVyRmlyZUludGVydmFsKGludGVydmFsKTsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgc3RvcFNo
YXJlZFRpbWVyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGludmFsaWRhdGUoKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnZhbGlkYXRlU2hhcmVkVGltZXIoKTsKLSAg
ICAgICAgfQotICAgIH07CisvLyBFYWNoIHRocmVhZCBoYXMgaXRzIG93biBzaW5nbGUgaW5zdGFu
Y2Ugb2Ygc2hhcmVkIHRpbWVyLCB3aGljaCBpbXBsZW1lbnRzIHRoaXMgaW50ZXJmYWNlLgorLy8g
VGhpcyBpbnN0YW5jZSBpcyBzaGFyZWQgYnkgYWxsIHRpbWVycyBpbiB0aGUgdGhyZWFkLgorLy8g
Tm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHk7IHVzZSB0aGUgVGltZXIgY2xhc3MgaW5z
dGVhZC4KK2NsYXNzIFNoYXJlZFRpbWVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFy
ZWRUaW1lcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZFRp
bWVyKCkgeyB9CisgICAgdmlydHVhbCB+U2hhcmVkVGltZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworCisgICAg
Ly8gVGhlIGZpcmUgaW50ZXJ2YWwgaXMgaW4gc2Vjb25kcyByZWxhdGl2ZSB0byB0aGUgY3VycmVu
dCBtb25vdG9uaWMgY2xvY2sgdGltZS4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZUludGVydmFs
KGRvdWJsZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIGludmFsaWRhdGUoKSB7IH0KK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAKaW5kZXggMTIzMWNhMi4uMDIy
ODM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGhyZWFkVGltZXJzLmgi
CiAKKyNpbmNsdWRlICJNYWluVGhyZWFkU2hhcmVkVGltZXIuaCIKICNpbmNsdWRlICJTaGFyZWRU
aW1lci5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNsdWRlICJUaW1lci5o
IgpAQCAtNDcsMjcgKzQ4LDIxIEBAIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4RHVyYXRpb25PZkZp
cmluZ1RpbWVycyA9IDAuMDUwOwogLy8gVGltZXJzIGFyZSBjcmVhdGVkLCBzdGFydGVkIGFuZCBm
aXJlZCBvbiB0aGUgc2FtZSB0aHJlYWQsIGFuZCBlYWNoIHRocmVhZCBoYXMgaXRzIG93biBUaHJl
YWRUaW1lcnMKIC8vIGNvcHkgdG8ga2VlcCB0aGUgaGVhcCBhbmQgYSBzZXQgb2YgY3VycmVudGx5
IGZpcmluZyB0aW1lcnMuCiAKLXN0YXRpYyBNYWluVGhyZWFkU2hhcmVkVGltZXIqIG1haW5UaHJl
YWRTaGFyZWRUaW1lcigpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWRTaGFyZWRUaW1lciogdGlt
ZXIgPSBuZXcgTWFpblRocmVhZFNoYXJlZFRpbWVyOwotICAgIHJldHVybiB0aW1lcjsKLX0KLQog
VGhyZWFkVGltZXJzOjpUaHJlYWRUaW1lcnMoKQogICAgIDogbV9zaGFyZWRUaW1lcigwKQogICAg
ICwgbV9maXJpbmdUaW1lcnMoZmFsc2UpCiAgICAgLCBtX3BlbmRpbmdTaGFyZWRUaW1lckZpcmVU
aW1lKDApCiB7CiAgICAgaWYgKGlzVUlUaHJlYWQoKSkKLSAgICAgICAgc2V0U2hhcmVkVGltZXIo
bWFpblRocmVhZFNoYXJlZFRpbWVyKCkpOworICAgICAgICBzZXRTaGFyZWRUaW1lcigmTWFpblRo
cmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKSk7CiB9CiAKIC8vIEEgd29ya2VyIHRocmVhZCBt
YXkgaW5pdGlhbGl6ZSBTaGFyZWRUaW1lciBhZnRlciBzb21lIHRpbWVycyBhcmUgY3JlYXRlZC4K
LS8vIEFsc28sIFNoYXJlZFRpbWVyIGNhbiBiZSByZXBsYWNlZCB3aXRoIDAgYmVmb3JlIGFsbCB0
aW1lcnMgYXJlIGRlc3Ryb3llZC4KKy8vIEFsc28sIFNoYXJlZFRpbWVyIGNhbiBiZSByZXBsYWNl
ZCB3aXRoIG51bGxwdHIgYmVmb3JlIGFsbCB0aW1lcnMgYXJlIGRlc3Ryb3llZC4KIHZvaWQgVGhy
ZWFkVGltZXJzOjpzZXRTaGFyZWRUaW1lcihTaGFyZWRUaW1lciogc2hhcmVkVGltZXIpCiB7CiAg
ICAgaWYgKG1fc2hhcmVkVGltZXIpIHsKLSAgICAgICAgbV9zaGFyZWRUaW1lci0+c2V0RmlyZWRG
dW5jdGlvbigwKTsKKyAgICAgICAgbV9zaGFyZWRUaW1lci0+c2V0RmlyZWRGdW5jdGlvbihudWxs
cHRyKTsKICAgICAgICAgbV9zaGFyZWRUaW1lci0+c3RvcCgpOwogICAgICAgICBtX3BlbmRpbmdT
aGFyZWRUaW1lckZpcmVUaW1lID0gMDsKICAgICB9CkBAIC03NSw3ICs3MCw3IEBAIHZvaWQgVGhy
ZWFkVGltZXJzOjpzZXRTaGFyZWRUaW1lcihTaGFyZWRUaW1lciogc2hhcmVkVGltZXIpCiAgICAg
bV9zaGFyZWRUaW1lciA9IHNoYXJlZFRpbWVyOwogICAgIAogICAgIGlmIChzaGFyZWRUaW1lcikg
ewotICAgICAgICBtX3NoYXJlZFRpbWVyLT5zZXRGaXJlZEZ1bmN0aW9uKFRocmVhZFRpbWVyczo6
c2hhcmVkVGltZXJGaXJlZCk7CisgICAgICAgIG1fc2hhcmVkVGltZXItPnNldEZpcmVkRnVuY3Rp
b24oW10geyB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkuc2hhcmVkVGltZXJGaXJl
ZEludGVybmFsKCk7IH0pOwogICAgICAgICB1cGRhdGVTaGFyZWRUaW1lcigpOwogICAgIH0KIH0K
QEAgLTEwMSwxMiArOTYsNiBAQCB2b2lkIFRocmVhZFRpbWVyczo6dXBkYXRlU2hhcmVkVGltZXIo
KQogICAgIH0KIH0KIAotdm9pZCBUaHJlYWRUaW1lcnM6OnNoYXJlZFRpbWVyRmlyZWQoKQotewot
ICAgIC8vIFJlZGlyZWN0IHRvIG5vbi1zdGF0aWMgbWV0aG9kLgotICAgIHRocmVhZEdsb2JhbERh
dGEoKS50aHJlYWRUaW1lcnMoKS5zaGFyZWRUaW1lckZpcmVkSW50ZXJuYWwoKTsKLX0KLQogdm9p
ZCBUaHJlYWRUaW1lcnM6OnNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpIHx8ICghaXNXZWJUaHJlYWQoKSAmJiAhaXNVSVRocmVhZCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5oCmluZGV4IDE1ZDlmMzcuLmU0ZjI2MjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5oCkBAIC01MSw4ICs1MSw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRFdmVu
dExvb3AoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyB2b2lkIHNoYXJlZFRpbWVy
RmlyZWQoKTsKLQogICAgICAgICB2b2lkIHNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpOwogICAg
ICAgICB2b2lkIGZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcEludGVybmFsKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNG
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNG
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTYyNDc5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJNYWluVGhyZWFkU2hhcmVkVGltZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBv
b2wuaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbXBvcnQgIlBvd2VyT2JzZXJ2ZXJNYWMuaCIK
KyNlbGlmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgIldlYkNvcmVUaHJlYWQuaCIKKyNpbXBvcnQg
IldlYkNvcmVUaHJlYWRSdW4uaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiBzaGFyZWRUaW1lcjsKK3N0YXRpYyB2b2lkIHRpbWVyRmly
ZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKK3N0YXRpYyB2b2lkIHJlc3RhcnRTaGFyZWRU
aW1lcigpOworCitzdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwga0NGVGltZUludGVydmFsRGlz
dGFudEZ1dHVyZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8Q0ZUaW1lSW50ZXJ2YWw+OjptYXgoKTsK
KworI2lmIFBMQVRGT1JNKElPUykKK3N0YXRpYyB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0
aXZlKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZv
aWQqLCBDRkRpY3Rpb25hcnlSZWYpCit7CisgICAgV2ViVGhyZWFkUnVuKF57CisgICAgICAgIHJl
c3RhcnRTaGFyZWRUaW1lcigpOworICAgIH0pOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIHNl
dHVwUG93ZXJPYnNlcnZlcigpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBQb3dl
ck9ic2VydmVyKiBwb3dlck9ic2VydmVyOworICAgIGlmICghcG93ZXJPYnNlcnZlcikKKyAgICAg
ICAgcG93ZXJPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFy
dFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7CisjZWxpZiBQTEFURk9STShJT1MpCisgICAgc3RhdGlj
IGJvb2wgcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gZmFsc2U7CisgICAg
aWYgKCFyZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24pIHsKKyAgICAgICAgcmVn
aXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gdHJ1ZTsKKyAgICAgICAgQ0ZOb3Rp
ZmljYXRpb25DZW50ZXJSZWYgbm90aWZpY2F0aW9uQ2VudGVyID0gQ0ZOb3RpZmljYXRpb25DZW50
ZXJHZXRMb2NhbENlbnRlcigpOworICAgICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2Vy
dmVyKG5vdGlmaWNhdGlvbkNlbnRlciwgbnVsbHB0ciwgYXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmUsIENGU1RSKCJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIiksIG51
bGxwdHIsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yQ29hbGVzY2UpOworICAgIH0K
KyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2
b2lkKikKK3sKKyAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKKyAgICBNYWluVGhyZWFkU2hhcmVk
VGltZXI6OnNpbmdsZXRvbigpLmZpcmVkKCk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc3RhcnRTaGFy
ZWRUaW1lcigpCit7CisgICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKS5zdG9wKCk7CisgICAgdGltZXJG
aXJlZCgwLCAwKTsKK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUo
KQoreworICAgIGlmICghc2hhcmVkVGltZXIpCisgICAgICAgIHJldHVybjsKKworICAgIENGUnVu
TG9vcFRpbWVySW52YWxpZGF0ZShzaGFyZWRUaW1lcik7CisgICAgQ0ZSZWxlYXNlKHNoYXJlZFRp
bWVyKTsKKyAgICBzaGFyZWRUaW1lciA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNo
YXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIEFTU0VS
VChtX2ZpcmVkRnVuY3Rpb24pOworCisgICAgQ0ZBYnNvbHV0ZVRpbWUgZmlyZURhdGUgPSBDRkFi
c29sdXRlVGltZUdldEN1cnJlbnQoKSArIGludGVydmFsOworICAgIGlmICghc2hhcmVkVGltZXIp
IHsKKyAgICAgICAgc2hhcmVkVGltZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0ZShudWxscHRyLCBm
aXJlRGF0ZSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSwgMCwgMCwgdGltZXJGaXJlZCwg
bnVsbHB0cik7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihX
ZWJUaHJlYWRSdW5Mb29wKCksIHNoYXJlZFRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwor
I2Vsc2UKKyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBz
aGFyZWRUaW1lciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyNlbmRpZgorCisgICAgICAgIHNl
dHVwUG93ZXJPYnNlcnZlcigpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDRlJ1
bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwgZmlyZURhdGUpOworfQorCit2
b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCgpCit7CisgICAgaWYgKCFzaGFyZWRUaW1l
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUo
c2hhcmVkVGltZXIsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9T
aGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVy
Q0YuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmQ3MDdiLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTAs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlNo
YXJlZFRpbWVyLmgiCi0KLSNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+Ci0KLSNpZiBQ
TEFURk9STShNQUMpCi0jaW1wb3J0ICJQb3dlck9ic2VydmVyTWFjLmgiCi0jZWxpZiBQTEFURk9S
TShJT1MpCi0jaW1wb3J0ICJXZWJDb3JlVGhyZWFkLmgiCi0jaW1wb3J0ICJXZWJDb3JlVGhyZWFk
UnVuLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgQ0ZSdW5Mb29w
VGltZXJSZWYgc2hhcmVkVGltZXI7Ci1zdGF0aWMgdm9pZCAoKnNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbikoKTsKLXN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQq
KTsKLXN0YXRpYyB2b2lkIHJlc3RhcnRTaGFyZWRUaW1lcigpOwotCi1zdGF0aWMgY29uc3QgQ0ZU
aW1lSW50ZXJ2YWwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8Q0ZUaW1lSW50ZXJ2YWw+OjptYXgoKTsKLQotI2lmIFBMQVRGT1JNKElPUykKLXN0YXRp
YyB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKENGTm90aWZpY2F0aW9uQ2VudGVyUmVm
LCB2b2lkKiwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCi17Ci0g
ICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgIHJlc3RhcnRTaGFyZWRUaW1lcigpOwotICAgIH0p
OwotfQotI2VuZGlmCi0KLXN0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZlcigpCi17Ci0jaWYg
UExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBwb3dlck9ic2VydmVyOwot
ICAgIGlmICghcG93ZXJPYnNlcnZlcikKLSAgICAgICAgcG93ZXJPYnNlcnZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7Ci0j
ZWxpZiBQTEFURk9STShJT1MpCi0gICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJlZEZvckFwcGxpY2F0
aW9uTm90aWZpY2F0aW9uID0gZmFsc2U7Ci0gICAgaWYgKCFyZWdpc3RlcmVkRm9yQXBwbGljYXRp
b25Ob3RpZmljYXRpb24pIHsKLSAgICAgICAgcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZp
Y2F0aW9uID0gdHJ1ZTsKLSAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYgbm90aWZpY2F0
aW9uQ2VudGVyID0gQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpOwotICAgICAg
ICBDRk5vdGlmaWNhdGlvbkNlbnRlckFkZE9ic2VydmVyKG5vdGlmaWNhdGlvbkNlbnRlciwgbnVs
bHB0ciwgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUsIENGU1RSKCJVSUFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIiksIG51bGxwdHIsIENGTm90aWZpY2F0aW9uU3VzcGVu
c2lvbkJlaGF2aW9yQ29hbGVzY2UpOwotICAgIH0KLSNlbmRpZgotfQotCi12b2lkIHNldFNoYXJl
ZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqZikoKSkKLXsKLSAgICBBU1NFUlQoIXNoYXJlZFRp
bWVyRmlyZWRGdW5jdGlvbiB8fCBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gPT0gZik7Ci0KLSAg
ICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gPSBmOwotfQotCi1zdGF0aWMgdm9pZCB0aW1lckZp
cmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKikKLXsKLSAgICBBdXRvZHJhaW5lZFBvb2wgcG9v
bDsKLSAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24oKTsKLX0KLQotc3RhdGljIHZvaWQgcmVz
dGFydFNoYXJlZFRpbWVyKCkKLXsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBzdG9wU2hhcmVkVGltZXIoKTsKLSAgICB0aW1lckZpcmVkKDAsIDApOwotfQot
Ci12b2lkIGludmFsaWRhdGVTaGFyZWRUaW1lcigpCi17Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRp
bWVyKTsKLSAgICBDRlJlbGVhc2Uoc2hhcmVkVGltZXIpOwotICAgIHNoYXJlZFRpbWVyID0gbnVs
bHB0cjsKLX0KLQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2
YWwpCi17Ci0gICAgQVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7Ci0KLSAgICBDRkFi
c29sdXRlVGltZSBmaXJlRGF0ZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50ZXJ2
YWw7Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikgewotICAgICAgICBzaGFyZWRUaW1lciA9IENGUnVu
TG9vcFRpbWVyQ3JlYXRlKG51bGxwdHIsIGZpcmVEYXRlLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50
RnV0dXJlLCAwLCAwLCB0aW1lckZpcmVkLCBudWxscHRyKTsKLSNpZiBQTEFURk9STShJT1MpCi0g
ICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVkVGltZXIs
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0jZWxzZQotICAgICAgICBDRlJ1bkxvb3BBZGRUaW1l
cihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHNoYXJlZFRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpOwotI2VuZGlmCi0KLSAgICAgICAgc2V0dXBQb3dlck9ic2VydmVyKCk7Ci0KLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNoYXJl
ZFRpbWVyLCBmaXJlRGF0ZSk7Ci19Ci0KLXZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKLXsKLSAgICBp
ZiAoIXNoYXJlZFRpbWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJ1bkxvb3BUaW1lclNl
dE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9NYWluVGhyZWFkU2hhcmVkVGltZXJFZmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL01haW5UaHJlYWRTaGFyZWRUaW1lckVmbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkwNmMyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9NYWluVGhyZWFkU2hhcmVkVGltZXJFZmwuY3BwCkBAIC0w
LDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4KKyAqICAgICAgICAgICAoQykgMjAwOCBBZm9uc28gUmFiZWxvIENvc3RhIEpyLgor
ICogICAgICAgICAgIChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAq
ICAgICAgICAgICAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1haW5UaHJlYWRTaGFyZWRUaW1lci5oIgorCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgor
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIEVjb3JlX1RpbWVyKiBzaGFyZWRUaW1lcjsKKworc3RhdGljIEVpbmFfQm9vbCB0aW1lckV2
ZW50KHZvaWQqKQoreworICAgIHNoYXJlZFRpbWVyID0gbnVsbHB0cjsKKyAgICBNYWluVGhyZWFk
U2hhcmVkVGltZXI6OnNpbmdsZXRvbigpLmZpcmVkKCk7CisgICAgcmV0dXJuIEVDT1JFX0NBTExC
QUNLX0NBTkNFTDsKK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3AoKQorewor
ICAgIGlmIChzaGFyZWRUaW1lcikgeworICAgICAgICBlY29yZV90aW1lcl9kZWwoc2hhcmVkVGlt
ZXIpOworICAgICAgICBzaGFyZWRUaW1lciA9IG51bGxwdHI7CisgICAgfQorfQorCit2b2lkIE1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKK3sK
KyAgICBzdG9wKCk7CisgICAgc2hhcmVkVGltZXIgPSBlY29yZV90aW1lcl9sb29wX2FkZChpbnRl
cnZhbCwgdGltZXJFdmVudCwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRp
bWVyOjppbnZhbGlkYXRlKCkKK3sKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTBiYTAzNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVk
VGltZXJFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOCBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgotICogICAgICAgICAgIChD
KSAyMDA4IEFmb25zbyBSYWJlbG8gQ29zdGEgSnIuCi0gKiAgICAgICAgICAgKEMpIDIwMDktMjAx
MCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICogICAgICAgICAgIChDKSAyMDA5LTIwMTAg
U2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkVGltZXIuaCIKLQot
I2luY2x1ZGUgPEVjb3JlLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBFY29yZV9UaW1lciAqX3NoYXJlZFRpbWVyID0gMDsK
LQotc3RhdGljIHZvaWQgKCpfdGltZXJGdW5jdGlvbikoKTsKLQotdm9pZCBzZXRTaGFyZWRUaW1l
ckZpcmVkRnVuY3Rpb24odm9pZCAoKmZ1bmMpKCkpCi17Ci0gICAgX3RpbWVyRnVuY3Rpb24gPSBm
dW5jOwotfQotCi1zdGF0aWMgRWluYV9Cb29sIHRpbWVyRXZlbnQodm9pZCopCi17Ci0gICAgX3No
YXJlZFRpbWVyID0gMDsKLSAgICBpZiAoX3RpbWVyRnVuY3Rpb24pCi0gICAgICAgIF90aW1lckZ1
bmN0aW9uKCk7Ci0KLSAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOwotfQotCi12b2lk
IHN0b3BTaGFyZWRUaW1lcigpCi17Ci0gICAgaWYgKF9zaGFyZWRUaW1lcikgewotICAgICAgICBl
Y29yZV90aW1lcl9kZWwoX3NoYXJlZFRpbWVyKTsKLSAgICAgICAgX3NoYXJlZFRpbWVyID0gMDsK
LSAgICB9Ci19Ci0KLXZvaWQgYWRkTmV3VGltZXIoZG91YmxlIGludGVydmFsKQotewotICAgIHN0
b3BTaGFyZWRUaW1lcigpOwotCi0gICAgX3NoYXJlZFRpbWVyID0gZWNvcmVfdGltZXJfbG9vcF9h
ZGQoaW50ZXJ2YWwsIHRpbWVyRXZlbnQsIDApOwotfQotCi12b2lkIHNldFNoYXJlZFRpbWVyRmly
ZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBhZGROZXdUaW1lcihpbnRlcnZhbCk7
Ci19Ci0KLXZvaWQgaW52YWxpZGF0ZVNoYXJlZFRpbWVyKCkKLXsKLX0KLQotfQotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTWFpblRocmVhZFNoYXJlZFRpbWVyR3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJH
dGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZDliNTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTWFpblRocmVhZFNoYXJl
ZFRpbWVyR3RrLmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
TWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIk1haW5UaHJlYWRTaGFyZWRUaW1lci5oIgorCisjaW5jbHVk
ZSA8d3RmL2dsaWIvR01haW5Mb29wU291cmNlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIEdNYWluTG9vcFNvdXJjZSBnU2hhcmVkVGltZXI7CisKK3ZvaWQgTWFpblRocmVhZFNo
YXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIEFTU0VS
VChtX2ZpcmVkRnVuY3Rpb24pOworCisgICAgLy8gVGhpcyBpcyBHREtfUFJJT1JJVFlfUkVEUkFX
LCBidXQgd2UgZG9uJ3Qgd2FudCB0byBkZXBlbmQgb24gR0RLIGhlcmUganVzdCB0byB1c2UgYSBj
b25zdGFudC4KKyAgICBzdGF0aWMgY29uc3QgaW50IHByaW9yaXR5ID0gR19QUklPUklUWV9ISUdI
X0lETEUgKyAyMDsKKyAgICBnU2hhcmVkVGltZXIuc2NoZWR1bGVBZnRlckRlbGF5KCJbV2ViS2l0
XSBzaGFyZWRUaW1lclRpbWVvdXRDYWxsYmFjayIsIFt0aGlzXSB7IGZpcmVkKCk7IH0sCisgICAg
ICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+
KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGludGVydmFsKSksIHByaW9yaXR5KTsKK30K
Kwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3AoKQoreworICAgIGdTaGFyZWRUaW1l
ci5jYW5jZWwoKTsKK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OmludmFsaWRhdGUo
KQoreworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hh
cmVkVGltZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVy
R3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZmN2Q3My4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hh
ZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgotCi0jaW5jbHVkZSA8d3RmL2dsaWIvR01h
aW5Mb29wU291cmNlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIEdNYWluTG9v
cFNvdXJjZSBnU2hhcmVkVGltZXI7Ci1zdGF0aWMgdm9pZCAoKnNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbikoKTsKLQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkp
Ci17Ci0gICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uID0gZjsKLSAgICBpZiAoIXNoYXJlZFRp
bWVyRmlyZWRGdW5jdGlvbikKLSAgICAgICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOwotfQotCi12
b2lkIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBB
U1NFUlQoc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKTsKLQotICAgIC8vIFRoaXMgaXMgR0RLX1BS
SU9SSVRZX1JFRFJBVywgYnV0IHdlIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9uIEdESyBoZXJlIGp1
c3QgdG8gdXNlIGEgY29uc3RhbnQuCi0gICAgc3RhdGljIGNvbnN0IGludCBwcmlvcml0eSA9IEdf
UFJJT1JJVFlfSElHSF9JRExFICsgMjA7Ci0gICAgZ1NoYXJlZFRpbWVyLnNjaGVkdWxlQWZ0ZXJE
ZWxheSgiW1dlYktpdF0gc2hhcmVkVGltZXJUaW1lb3V0Q2FsbGJhY2siLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4oc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSwKLSAgICAgICAgc3RkOjpjaHJvbm86
OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1
cmF0aW9uPGRvdWJsZT4oaW50ZXJ2YWwpKSwgcHJpb3JpdHkpOwotfQotCi12b2lkIHN0b3BTaGFy
ZWRUaW1lcigpCi17Ci0gICAgZ1NoYXJlZFRpbWVyLmNhbmNlbCgpOwotfQotCi12b2lkIGludmFs
aWRhdGVTaGFyZWRUaW1lcigpCi17Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9NYWluVGhyZWFkU2hhcmVkVGltZXJXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE2NjBkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NYWluVGhyZWFkU2hhcmVkVGltZXJXaW4uY3BwCkBAIC0w
LDAgKzEsMTk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZFNoYXJlZFRpbWVy
LmgiCisKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKKyNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1
ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CisKKyNpbmNsdWRlIDxtbXN5c3RlbS5oPgorCisvLyBU
aGVzZSBhcmVuJ3QgaW4gd2ludXNlci5oIHdpdGggdGhlIE1TVlMgMjAwMyBQbGF0Zm9ybSBTREss
IAorLy8gc28gdXNlIGRlZmF1bHQgdmFsdWVzIGluIHRoYXQgY2FzZS4KKyNpZm5kZWYgVVNFUl9U
SU1FUl9NSU5JTVVNCisjZGVmaW5lIFVTRVJfVElNRVJfTUlOSU1VTSAweDAwMDAwMDBBCisjZW5k
aWYKKworI2lmbmRlZiBVU0VSX1RJTUVSX01BWElNVU0KKyNkZWZpbmUgVVNFUl9USU1FUl9NQVhJ
TVVNIDB4N0ZGRkZGRkYKKyNlbmRpZgorCisjaWZuZGVmIFFTX1JBV0lOUFVUCisjZGVmaW5lIFFT
X1JBV0lOUFVUICAgICAgICAgMHgwNDAwCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgVUlOVCB0aW1lcklEOworCitzdGF0aWMgSEFORExFIHRpbWVyOworc3RhdGljIEhX
TkQgdGltZXJXaW5kb3dIYW5kbGUgPSAwOworY29uc3QgTFBDV1NUUiBrVGltZXJXaW5kb3dDbGFz
c05hbWUgPSBMIlRpbWVyV2luZG93Q2xhc3MiOworCitzdGF0aWMgVUlOVCB0aW1lckZpcmVkTWVz
c2FnZSA9IDA7CitzdGF0aWMgSEFORExFIHRpbWVyUXVldWU7CitzdGF0aWMgYm9vbCBoaWdoUmVz
VGltZXJBY3RpdmU7CitzdGF0aWMgYm9vbCBwcm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlID0g
ZmFsc2U7CitzdGF0aWMgTE9ORyBwZW5kaW5nVGltZXJzOworCitjb25zdCBpbnQgdGltZXJSZXNv
bHV0aW9uID0gMTsgLy8gVG8gaW1wcm92ZSB0aW1lciByZXNvbHV0aW9uLCB3ZSBjYWxsIHRpbWVC
ZWdpblBlcmlvZC90aW1lRW5kUGVyaW9kIHdpdGggdGhpcyB2YWx1ZSB0byBpbmNyZWFzZSB0aW1l
ciByZXNvbHV0aW9uIHRvIDFtcy4KK2NvbnN0IGludCBoaWdoUmVzb2x1dGlvblRocmVzaG9sZE1z
ZWMgPSAxNjsgLy8gT25seSBhY3RpdmF0ZSBoaWdoLXJlcyB0aW1lciBmb3Igc3ViLTE2bXMgdGlt
ZXJzIChXaW5kb3dzIGNhbiBmaXJlIHRpbWVycyBhdCAxNm1zIGludGVydmFscyB3aXRob3V0IGNo
YW5naW5nIHRoZSBzeXN0ZW0gcmVzb2x1dGlvbikuCitjb25zdCBpbnQgc3RvcEhpZ2hSZXNUaW1l
ckluTXNlYyA9IDMwMDsgLy8gU3RvcCBoaWdoLXJlcyB0aW1lciBhZnRlciAwLjMgc2Vjb25kcyB0
byBsZXNzZW4gcG93ZXIgY29uc3VtcHRpb24gKHdlIGRvbid0IHVzZSBhIHNtYWxsZXIgdGltZSBz
aW5jZSBvc2NpbGxhdGluZyBiZXR3ZWVuIGhpZ2ggYW5kIGxvdyByZXNvbHV0aW9uIGJyZWFrcyB0
aW1lciBhY2N1cmFjeSBvbiBYUCkuCisKK2VudW0geworICAgIHNoYXJlZFRpbWVySUQgPSAxMDAw
LAorICAgIGVuZEhpZ2hSZXNUaW1lcklEID0gMTAwMSwKK307CisKK0xSRVNVTFQgQ0FMTEJBQ0sg
VGltZXJXaW5kb3dXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFt
LCBMUEFSQU0gbFBhcmFtKQoreworICAgIGlmIChtZXNzYWdlID09IFdNX1RJTUVSKSB7CisgICAg
ICAgIGlmICh3UGFyYW0gPT0gc2hhcmVkVGltZXJJRCkgeworICAgICAgICAgICAgS2lsbFRpbWVy
KHRpbWVyV2luZG93SGFuZGxlLCBzaGFyZWRUaW1lcklEKTsKKyAgICAgICAgICAgIE1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c2luZ2xldG9uKCkuZmlyZWQoKTsKKyAgICAgICAgfSBlbHNlIGlmICh3
UGFyYW0gPT0gZW5kSGlnaFJlc1RpbWVySUQpIHsKKyAgICAgICAgICAgIEtpbGxUaW1lcih0aW1l
cldpbmRvd0hhbmRsZSwgZW5kSGlnaFJlc1RpbWVySUQpOworICAgICAgICAgICAgaGlnaFJlc1Rp
bWVyQWN0aXZlID0gZmFsc2U7CisgICAgICAgICAgICB0aW1lRW5kUGVyaW9kKHRpbWVyUmVzb2x1
dGlvbik7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1lc3NhZ2UgPT0gdGltZXJGaXJlZE1l
c3NhZ2UpIHsKKyAgICAgICAgSW50ZXJsb2NrZWRFeGNoYW5nZSgmcGVuZGluZ1RpbWVycywgMCk7
CisgICAgICAgIHByb2Nlc3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgPSB0cnVlOworICAgICAgICBN
YWluVGhyZWFkU2hhcmVkVGltZXI6OnNpbmdsZXRvbigpLmZpcmVkKCk7CisgICAgICAgIHByb2Nl
c3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgPSBmYWxzZTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0
dXJuIERlZldpbmRvd1Byb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOworCisgICAg
cmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldpbmRv
dygpCit7CisgICAgaWYgKHRpbWVyV2luZG93SGFuZGxlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXTkRDTEFTU0VYIHdjZXg7CisgICAgbWVtc2V0KCZ3Y2V4LCAwLCBzaXplb2YoV05EQ0xBU1NF
WCkpOworICAgIHdjZXguY2JTaXplID0gc2l6ZW9mKFdORENMQVNTRVgpOworCisgICAgd2NleC5s
cGZuV25kUHJvYyAgICA9IFRpbWVyV2luZG93V25kUHJvYzsKKyAgICB3Y2V4LmhJbnN0YW5jZSAg
ICAgID0gV2ViQ29yZTo6aW5zdGFuY2VIYW5kbGUoKTsKKyAgICB3Y2V4Lmxwc3pDbGFzc05hbWUg
ID0ga1RpbWVyV2luZG93Q2xhc3NOYW1lOworICAgIFJlZ2lzdGVyQ2xhc3NFeCgmd2NleCk7CisK
KyAgICB0aW1lcldpbmRvd0hhbmRsZSA9IENyZWF0ZVdpbmRvdyhrVGltZXJXaW5kb3dDbGFzc05h
bWUsIDAsIDAsCisgICAgICAgQ1dfVVNFREVGQVVMVCwgMCwgQ1dfVVNFREVGQVVMVCwgMCwgSFdO
RF9NRVNTQUdFLCAwLCBXZWJDb3JlOjppbnN0YW5jZUhhbmRsZSgpLCAwKTsKKworICAgIHRpbWVy
RmlyZWRNZXNzYWdlID0gUmVnaXN0ZXJXaW5kb3dNZXNzYWdlKEwiY29tLmFwcGxlLldlYktpdC5U
aW1lckZpcmVkIik7Cit9CisKK3N0YXRpYyB2b2lkIE5UQVBJIHF1ZXVlVGltZXJQcm9jKFBWT0lE
LCBCT09MRUFOKQoreworICAgIGlmIChJbnRlcmxvY2tlZEluY3JlbWVudCgmcGVuZGluZ1RpbWVy
cykgPT0gMSkKKyAgICAgICAgUG9zdE1lc3NhZ2UodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVyRmly
ZWRNZXNzYWdlLCAwLCAwKTsKK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZp
cmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlv
bik7CisKKyAgICB1bnNpZ25lZCBpbnRlcnZhbEluTVM7CisgICAgaW50ZXJ2YWwgKj0gMTAwMDsK
KyAgICBpZiAoaW50ZXJ2YWwgPiBVU0VSX1RJTUVSX01BWElNVU0pCisgICAgICAgIGludGVydmFs
SW5NUyA9IFVTRVJfVElNRVJfTUFYSU1VTTsKKyAgICBlbHNlCisgICAgICAgIGludGVydmFsSW5N
UyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnRlcnZhbCk7CisKKyAgICBpbml0aWFsaXplT2Zm
U2NyZWVuVGltZXJXaW5kb3coKTsKKyAgICBib29sIHRpbWVyU2V0ID0gZmFsc2U7CisKKyAgICBp
ZiAoU2V0dGluZ3M6OnNob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKCkpIHsKKyAgICAgICAg
aWYgKGludGVydmFsIDwgaGlnaFJlc29sdXRpb25UaHJlc2hvbGRNc2VjKSB7CisgICAgICAgICAg
ICBpZiAoIWhpZ2hSZXNUaW1lckFjdGl2ZSkgeworICAgICAgICAgICAgICAgIGhpZ2hSZXNUaW1l
ckFjdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgdGltZUJlZ2luUGVyaW9kKHRpbWVyUmVz
b2x1dGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBTZXRUaW1lcih0aW1lcldpbmRv
d0hhbmRsZSwgZW5kSGlnaFJlc1RpbWVySUQsIHN0b3BIaWdoUmVzVGltZXJJbk1zZWMsIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgRFdPUkQgcXVldWVTdGF0dXMgPSBMT1dPUkQoR2V0UXVldWVT
dGF0dXMoUVNfUEFJTlQgfCBRU19NT1VTRUJVVFRPTiB8IFFTX0tFWSB8IFFTX1JBV0lOUFVUKSk7
CisKKyAgICAgICAgLy8gV2luMzIgaGFzIGEgdHJpLWxldmVsIHF1ZXVlIHdpdGggYXBwbGljYXRp
b24gbWVzc2FnZXMgPiB1c2VyIGlucHV0ID4gV01fUEFJTlQvV01fVElNRVIuCisKKyAgICAgICAg
Ly8gSWYgdGhlIHF1ZXVlIGRvZXNuJ3QgY29udGFpbnMgaW5wdXQgZXZlbnRzLCB3ZSB1c2UgYSBo
aWdoZXIgcHJpb3J0eSB0aW1lciBldmVudCBwb3N0aW5nIG1lY2hhbmlzbS4KKyAgICAgICAgaWYg
KCEocXVldWVTdGF0dXMgJiAoUVNfTU9VU0VCVVRUT04gfCBRU19LRVkgfCBRU19SQVdJTlBVVCkp
KSB7CisgICAgICAgICAgICBpZiAoaW50ZXJ2YWxJbk1TIDwgVVNFUl9USU1FUl9NSU5JTVVNICYm
ICFwcm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlICYmICEocXVldWVTdGF0dXMgJiBRU19QQUlO
VCkpIHsKKyAgICAgICAgICAgICAgICAvLyBDYWxsIFBvc3RNZXNzYWdlIGltbWVkaWF0ZWx5IGlm
IHRoZSB0aW1lciBpcyBhbHJlYWR5IGV4cGlyZWQsIHVubGVzcyBhIHBhaW50IGlzIHBlbmRpbmcu
CisgICAgICAgICAgICAgICAgLy8gKHdlIHByaW9yaXRpemUgcGFpbnRzIG92ZXIgdGltZXJzKQor
ICAgICAgICAgICAgICAgIGlmIChJbnRlcmxvY2tlZEluY3JlbWVudCgmcGVuZGluZ1RpbWVycykg
PT0gMSkKKyAgICAgICAgICAgICAgICAgICAgUG9zdE1lc3NhZ2UodGltZXJXaW5kb3dIYW5kbGUs
IHRpbWVyRmlyZWRNZXNzYWdlLCAwLCAwKTsKKyAgICAgICAgICAgICAgICB0aW1lclNldCA9IHRy
dWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwg
ZGVsYXkgdGhlIFBvc3RNZXNzYWdlIHZpYSBhIENyZWF0ZVRpbWVyUXVldWVUaW1lcgorICAgICAg
ICAgICAgICAgIGlmICghdGltZXJRdWV1ZSkKKyAgICAgICAgICAgICAgICAgICAgdGltZXJRdWV1
ZSA9IENyZWF0ZVRpbWVyUXVldWUoKTsKKyAgICAgICAgICAgICAgICBpZiAodGltZXIpCisgICAg
ICAgICAgICAgICAgICAgIERlbGV0ZVRpbWVyUXVldWVUaW1lcih0aW1lclF1ZXVlLCB0aW1lciwg
MCk7CisgICAgICAgICAgICAgICAgdGltZXJTZXQgPSBDcmVhdGVUaW1lclF1ZXVlVGltZXIoJnRp
bWVyLCB0aW1lclF1ZXVlLCBxdWV1ZVRpbWVyUHJvYywgMCwgaW50ZXJ2YWxJbk1TLCAwLCBXVF9F
WEVDVVRFSU5USU1FUlRIUkVBRCB8IFdUX0VYRUNVVEVPTkxZT05DRSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodGltZXJTZXQpIHsKKyAgICAgICAgaWYgKHRp
bWVySUQpIHsKKyAgICAgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJJ
RCk7CisgICAgICAgICAgICB0aW1lcklEID0gMDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIHRpbWVySUQgPSBTZXRUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgc2hhcmVkVGltZXJJ
RCwgaW50ZXJ2YWxJbk1TLCAwKTsKKyAgICAgICAgdGltZXIgPSAwOworICAgIH0KK30KKwordm9p
ZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3AoKQoreworICAgIGlmICh0aW1lclF1ZXVlICYm
IHRpbWVyKSB7CisgICAgICAgIERlbGV0ZVRpbWVyUXVldWVUaW1lcih0aW1lclF1ZXVlLCB0aW1l
ciwgMCk7CisgICAgICAgIHRpbWVyID0gMDsKKyAgICB9CisKKyAgICBpZiAodGltZXJJRCkgewor
ICAgICAgICBLaWxsVGltZXIodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVySUQpOworICAgICAgICB0
aW1lcklEID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZh
bGlkYXRlKCkKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NoYXJlZFRpbWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFy
ZWRUaW1lcldpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkMDJiMTkuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZFRpbWVyV2luLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDIwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
U2hhcmVkVGltZXIuaCIKLQotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5o
IgotI2luY2x1ZGUgIldlYkNvcmVJbnN0YW5jZUhhbmRsZS5oIgotI2luY2x1ZGUgIldpZGdldC5o
IgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+Ci0jaW5jbHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KLQotI2luY2x1ZGUgPG1tc3lzdGVt
Lmg+Ci0KLS8vIFRoZXNlIGFyZW4ndCBpbiB3aW51c2VyLmggd2l0aCB0aGUgTVNWUyAyMDAzIFBs
YXRmb3JtIFNESywgCi0vLyBzbyB1c2UgZGVmYXVsdCB2YWx1ZXMgaW4gdGhhdCBjYXNlLgotI2lm
bmRlZiBVU0VSX1RJTUVSX01JTklNVU0KLSNkZWZpbmUgVVNFUl9USU1FUl9NSU5JTVVNIDB4MDAw
MDAwMEEKLSNlbmRpZgotCi0jaWZuZGVmIFVTRVJfVElNRVJfTUFYSU1VTQotI2RlZmluZSBVU0VS
X1RJTUVSX01BWElNVU0gMHg3RkZGRkZGRgotI2VuZGlmCi0KLSNpZm5kZWYgUVNfUkFXSU5QVVQK
LSNkZWZpbmUgUVNfUkFXSU5QVVQgICAgICAgICAweDA0MDAKLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0YXRpYyBVSU5UIHRpbWVySUQ7Ci1zdGF0aWMgdm9pZCAoKnNoYXJlZFRp
bWVyRmlyZWRGdW5jdGlvbikoKTsKLQotc3RhdGljIEhBTkRMRSB0aW1lcjsKLXN0YXRpYyBIV05E
IHRpbWVyV2luZG93SGFuZGxlID0gMDsKLWNvbnN0IExQQ1dTVFIga1RpbWVyV2luZG93Q2xhc3NO
YW1lID0gTCJUaW1lcldpbmRvd0NsYXNzIjsKLQotc3RhdGljIFVJTlQgdGltZXJGaXJlZE1lc3Nh
Z2UgPSAwOwotc3RhdGljIEhBTkRMRSB0aW1lclF1ZXVlOwotc3RhdGljIGJvb2wgaGlnaFJlc1Rp
bWVyQWN0aXZlOwotc3RhdGljIGJvb2wgcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IGZh
bHNlOwotc3RhdGljIExPTkcgcGVuZGluZ1RpbWVyczsKLQotY29uc3QgaW50IHRpbWVyUmVzb2x1
dGlvbiA9IDE7IC8vIFRvIGltcHJvdmUgdGltZXIgcmVzb2x1dGlvbiwgd2UgY2FsbCB0aW1lQmVn
aW5QZXJpb2QvdGltZUVuZFBlcmlvZCB3aXRoIHRoaXMgdmFsdWUgdG8gaW5jcmVhc2UgdGltZXIg
cmVzb2x1dGlvbiB0byAxbXMuCi1jb25zdCBpbnQgaGlnaFJlc29sdXRpb25UaHJlc2hvbGRNc2Vj
ID0gMTY7IC8vIE9ubHkgYWN0aXZhdGUgaGlnaC1yZXMgdGltZXIgZm9yIHN1Yi0xNm1zIHRpbWVy
cyAoV2luZG93cyBjYW4gZmlyZSB0aW1lcnMgYXQgMTZtcyBpbnRlcnZhbHMgd2l0aG91dCBjaGFu
Z2luZyB0aGUgc3lzdGVtIHJlc29sdXRpb24pLgotY29uc3QgaW50IHN0b3BIaWdoUmVzVGltZXJJ
bk1zZWMgPSAzMDA7IC8vIFN0b3AgaGlnaC1yZXMgdGltZXIgYWZ0ZXIgMC4zIHNlY29uZHMgdG8g
bGVzc2VuIHBvd2VyIGNvbnN1bXB0aW9uICh3ZSBkb24ndCB1c2UgYSBzbWFsbGVyIHRpbWUgc2lu
Y2Ugb3NjaWxsYXRpbmcgYmV0d2VlbiBoaWdoIGFuZCBsb3cgcmVzb2x1dGlvbiBicmVha3MgdGlt
ZXIgYWNjdXJhY3kgb24gWFApLgotCi1lbnVtIHsKLSAgICBzaGFyZWRUaW1lcklEID0gMTAwMCwK
LSAgICBlbmRIaWdoUmVzVGltZXJJRCA9IDEwMDEsCi19OwotCi1MUkVTVUxUIENBTExCQUNLIFRp
bWVyV2luZG93V25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwg
TFBBUkFNIGxQYXJhbSkKLXsKLSAgICBpZiAobWVzc2FnZSA9PSBXTV9USU1FUikgewotICAgICAg
ICBpZiAod1BhcmFtID09IHNoYXJlZFRpbWVySUQpIHsKLSAgICAgICAgICAgIEtpbGxUaW1lcih0
aW1lcldpbmRvd0hhbmRsZSwgc2hhcmVkVGltZXJJRCk7Ci0gICAgICAgICAgICBzaGFyZWRUaW1l
ckZpcmVkRnVuY3Rpb24oKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh3UGFyYW0gPT0g
ZW5kSGlnaFJlc1RpbWVySUQpIHsKLSAgICAgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hh
bmRsZSwgZW5kSGlnaFJlc1RpbWVySUQpOwotICAgICAgICAgICAgaGlnaFJlc1RpbWVyQWN0aXZl
ID0gZmFsc2U7Ci0gICAgICAgICAgICB0aW1lRW5kUGVyaW9kKHRpbWVyUmVzb2x1dGlvbik7Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKG1lc3NhZ2UgPT0gdGltZXJGaXJlZE1lc3NhZ2UpIHsK
LSAgICAgICAgSW50ZXJsb2NrZWRFeGNoYW5nZSgmcGVuZGluZ1RpbWVycywgMCk7Ci0gICAgICAg
IHByb2Nlc3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgPSB0cnVlOwotICAgICAgICBzaGFyZWRUaW1l
ckZpcmVkRnVuY3Rpb24oKTsKLSAgICAgICAgcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9
IGZhbHNlOwotICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gRGVmV2luZG93UHJvYyhoV25kLCBt
ZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZU9mZlNjcmVlblRpbWVyV2luZG93KCkKLXsKLSAgICBpZiAodGltZXJXaW5k
b3dIYW5kbGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdORENMQVNTRVggd2NleDsKLSAgICBt
ZW1zZXQoJndjZXgsIDAsIHNpemVvZihXTkRDTEFTU0VYKSk7Ci0gICAgd2NleC5jYlNpemUgPSBz
aXplb2YoV05EQ0xBU1NFWCk7Ci0KLSAgICB3Y2V4LmxwZm5XbmRQcm9jICAgID0gVGltZXJXaW5k
b3dXbmRQcm9jOwotICAgIHdjZXguaEluc3RhbmNlICAgICAgPSBXZWJDb3JlOjppbnN0YW5jZUhh
bmRsZSgpOwotICAgIHdjZXgubHBzekNsYXNzTmFtZSAgPSBrVGltZXJXaW5kb3dDbGFzc05hbWU7
Ci0gICAgUmVnaXN0ZXJDbGFzc0V4KCZ3Y2V4KTsKLQotICAgIHRpbWVyV2luZG93SGFuZGxlID0g
Q3JlYXRlV2luZG93KGtUaW1lcldpbmRvd0NsYXNzTmFtZSwgMCwgMCwKLSAgICAgICBDV19VU0VE
RUZBVUxULCAwLCBDV19VU0VERUZBVUxULCAwLCBIV05EX01FU1NBR0UsIDAsIFdlYkNvcmU6Omlu
c3RhbmNlSGFuZGxlKCksIDApOwotCi0gICAgdGltZXJGaXJlZE1lc3NhZ2UgPSBSZWdpc3Rlcldp
bmRvd01lc3NhZ2UoTCJjb20uYXBwbGUuV2ViS2l0LlRpbWVyRmlyZWQiKTsKLX0KLQotdm9pZCBz
ZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpCi17Ci0gICAgc2hhcmVkVGlt
ZXJGaXJlZEZ1bmN0aW9uID0gZjsKLX0KLQotc3RhdGljIHZvaWQgTlRBUEkgcXVldWVUaW1lclBy
b2MoUFZPSUQsIEJPT0xFQU4pCi17Ci0gICAgaWYgKEludGVybG9ja2VkSW5jcmVtZW50KCZwZW5k
aW5nVGltZXJzKSA9PSAxKQotICAgICAgICBQb3N0TWVzc2FnZSh0aW1lcldpbmRvd0hhbmRsZSwg
dGltZXJGaXJlZE1lc3NhZ2UsIDAsIDApOwotfQotCi12b2lkIHNldFNoYXJlZFRpbWVyRmlyZUlu
dGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBBU1NFUlQoc2hhcmVkVGltZXJGaXJlZEZ1
bmN0aW9uKTsKLQotICAgIHVuc2lnbmVkIGludGVydmFsSW5NUzsKLSAgICBpbnRlcnZhbCAqPSAx
MDAwOwotICAgIGlmIChpbnRlcnZhbCA+IFVTRVJfVElNRVJfTUFYSU1VTSkKLSAgICAgICAgaW50
ZXJ2YWxJbk1TID0gVVNFUl9USU1FUl9NQVhJTVVNOwotICAgIGVsc2UKLSAgICAgICAgaW50ZXJ2
YWxJbk1TID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludGVydmFsKTsKLQotICAgIGluaXRpYWxp
emVPZmZTY3JlZW5UaW1lcldpbmRvdygpOwotICAgIGJvb2wgdGltZXJTZXQgPSBmYWxzZTsKLQot
ICAgIGlmIChTZXR0aW5nczo6c2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoKSkgewotICAg
ICAgICBpZiAoaW50ZXJ2YWwgPCBoaWdoUmVzb2x1dGlvblRocmVzaG9sZE1zZWMpIHsKLSAgICAg
ICAgICAgIGlmICghaGlnaFJlc1RpbWVyQWN0aXZlKSB7Ci0gICAgICAgICAgICAgICAgaGlnaFJl
c1RpbWVyQWN0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0aW1lQmVnaW5QZXJpb2QodGlt
ZXJSZXNvbHV0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFNldFRpbWVyKHRpbWVy
V2luZG93SGFuZGxlLCBlbmRIaWdoUmVzVGltZXJJRCwgc3RvcEhpZ2hSZXNUaW1lckluTXNlYywg
MCk7Ci0gICAgICAgIH0KLQotICAgICAgICBEV09SRCBxdWV1ZVN0YXR1cyA9IExPV09SRChHZXRR
dWV1ZVN0YXR1cyhRU19QQUlOVCB8IFFTX01PVVNFQlVUVE9OIHwgUVNfS0VZIHwgUVNfUkFXSU5Q
VVQpKTsKLQotICAgICAgICAvLyBXaW4zMiBoYXMgYSB0cmktbGV2ZWwgcXVldWUgd2l0aCBhcHBs
aWNhdGlvbiBtZXNzYWdlcyA+IHVzZXIgaW5wdXQgPiBXTV9QQUlOVC9XTV9USU1FUi4KLQotICAg
ICAgICAvLyBJZiB0aGUgcXVldWUgZG9lc24ndCBjb250YWlucyBpbnB1dCBldmVudHMsIHdlIHVz
ZSBhIGhpZ2hlciBwcmlvcnR5IHRpbWVyIGV2ZW50IHBvc3RpbmcgbWVjaGFuaXNtLgotICAgICAg
ICBpZiAoIShxdWV1ZVN0YXR1cyAmIChRU19NT1VTRUJVVFRPTiB8IFFTX0tFWSB8IFFTX1JBV0lO
UFVUKSkpIHsKLSAgICAgICAgICAgIGlmIChpbnRlcnZhbEluTVMgPCBVU0VSX1RJTUVSX01JTklN
VU0gJiYgIXByb2Nlc3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgJiYgIShxdWV1ZVN0YXR1cyAmIFFT
X1BBSU5UKSkgewotICAgICAgICAgICAgICAgIC8vIENhbGwgUG9zdE1lc3NhZ2UgaW1tZWRpYXRl
bHkgaWYgdGhlIHRpbWVyIGlzIGFscmVhZHkgZXhwaXJlZCwgdW5sZXNzIGEgcGFpbnQgaXMgcGVu
ZGluZy4KLSAgICAgICAgICAgICAgICAvLyAod2UgcHJpb3JpdGl6ZSBwYWludHMgb3ZlciB0aW1l
cnMpCi0gICAgICAgICAgICAgICAgaWYgKEludGVybG9ja2VkSW5jcmVtZW50KCZwZW5kaW5nVGlt
ZXJzKSA9PSAxKQotICAgICAgICAgICAgICAgICAgICBQb3N0TWVzc2FnZSh0aW1lcldpbmRvd0hh
bmRsZSwgdGltZXJGaXJlZE1lc3NhZ2UsIDAsIDApOwotICAgICAgICAgICAgICAgIHRpbWVyU2V0
ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gT3RoZXJ3
aXNlLCBkZWxheSB0aGUgUG9zdE1lc3NhZ2UgdmlhIGEgQ3JlYXRlVGltZXJRdWV1ZVRpbWVyCi0g
ICAgICAgICAgICAgICAgaWYgKCF0aW1lclF1ZXVlKQotICAgICAgICAgICAgICAgICAgICB0aW1l
clF1ZXVlID0gQ3JlYXRlVGltZXJRdWV1ZSgpOwotICAgICAgICAgICAgICAgIGlmICh0aW1lcikK
LSAgICAgICAgICAgICAgICAgICAgRGVsZXRlVGltZXJRdWV1ZVRpbWVyKHRpbWVyUXVldWUsIHRp
bWVyLCAwKTsKLSAgICAgICAgICAgICAgICB0aW1lclNldCA9IENyZWF0ZVRpbWVyUXVldWVUaW1l
cigmdGltZXIsIHRpbWVyUXVldWUsIHF1ZXVlVGltZXJQcm9jLCAwLCBpbnRlcnZhbEluTVMsIDAs
IFdUX0VYRUNVVEVJTlRJTUVSVEhSRUFEIHwgV1RfRVhFQ1VURU9OTFlPTkNFKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICh0aW1lclNldCkgewotICAgICAgICBp
ZiAodGltZXJJRCkgewotICAgICAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCB0
aW1lcklEKTsKLSAgICAgICAgICAgIHRpbWVySUQgPSAwOwotICAgICAgICB9Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgdGltZXJJRCA9IFNldFRpbWVyKHRpbWVyV2luZG93SGFuZGxlLCBzaGFyZWRU
aW1lcklELCBpbnRlcnZhbEluTVMsIDApOwotICAgICAgICB0aW1lciA9IDA7Ci0gICAgfQotfQot
Ci12b2lkIHN0b3BTaGFyZWRUaW1lcigpCi17Ci0gICAgaWYgKHRpbWVyUXVldWUgJiYgdGltZXIp
IHsKLSAgICAgICAgRGVsZXRlVGltZXJRdWV1ZVRpbWVyKHRpbWVyUXVldWUsIHRpbWVyLCAwKTsK
LSAgICAgICAgdGltZXIgPSAwOwotICAgIH0KLQotICAgIGlmICh0aW1lcklEKSB7Ci0gICAgICAg
IEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJJRCk7Ci0gICAgICAgIHRpbWVySUQg
PSAwOwotICAgIH0KLX0KLQotdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGltZXIoKQotewotfQotCi19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBlODEyMzA4Li42
NTlkMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3Au
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXb3JrZXJTaGFyZWRU
aW1lciA6IHB1YmxpYyBTaGFyZWRUaW1lciB7CitjbGFzcyBXb3JrZXJTaGFyZWRUaW1lciBmaW5h
bCA6IHB1YmxpYyBTaGFyZWRUaW1lciB7CiBwdWJsaWM6CiAgICAgV29ya2VyU2hhcmVkVGltZXIo
KQogICAgICAgICA6IG1fc2hhcmVkVGltZXJGdW5jdGlvbigwKQpAQCAtNTAsMTYgKzUwLDE2IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBTaGFyZWRUaW1lciBpbnRlcmZhY2UuCi0gICAgdmly
dHVhbCB2b2lkIHNldEZpcmVkRnVuY3Rpb24odm9pZCAoKmZ1bmN0aW9uKSgpKSB7IG1fc2hhcmVk
VGltZXJGdW5jdGlvbiA9IGZ1bmN0aW9uOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEZpcmVJbnRl
cnZhbChkb3VibGUgaW50ZXJ2YWwpIHsgbV9uZXh0RmlyZVRpbWUgPSBpbnRlcnZhbCArIGN1cnJl
bnRUaW1lKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIHsgbV9uZXh0RmlyZVRpbWUgPSAw
OyB9CisgICAgdmlydHVhbCB2b2lkIHNldEZpcmVkRnVuY3Rpb24oc3RkOjpmdW5jdGlvbjx2b2lk
KCk+JiYgZnVuY3Rpb24pIG92ZXJyaWRlIHsgbV9zaGFyZWRUaW1lckZ1bmN0aW9uID0gV1RGOjpt
b3ZlKGZ1bmN0aW9uKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91Ymxl
IGludGVydmFsKSBvdmVycmlkZSB7IG1fbmV4dEZpcmVUaW1lID0gaW50ZXJ2YWwgKyBjdXJyZW50
VGltZSgpOyB9CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBvdmVycmlkZSB7IG1fbmV4dEZpcmVU
aW1lID0gMDsgfQogCiAgICAgYm9vbCBpc0FjdGl2ZSgpIHsgcmV0dXJuIG1fc2hhcmVkVGltZXJG
dW5jdGlvbiAmJiBtX25leHRGaXJlVGltZTsgfQogICAgIGRvdWJsZSBmaXJlVGltZSgpIHsgcmV0
dXJuIG1fbmV4dEZpcmVUaW1lOyB9CiAgICAgdm9pZCBmaXJlKCkgeyBtX3NoYXJlZFRpbWVyRnVu
Y3Rpb24oKTsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgKCptX3NoYXJlZFRpbWVyRnVuY3Rpb24p
KCk7CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fc2hhcmVkVGltZXJGdW5jdGlvbjsKICAg
ICBkb3VibGUgbV9uZXh0RmlyZVRpbWU7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264203</attachid>
            <date>2015-10-28 02:43:00 -0700</date>
            <delta_ts>2015-10-28 04:38:40 -0700</delta_ts>
            <desc>Try to fix mac builds</desc>
            <filename>wcore-shared-timer.diff</filename>
            <type>text/plain</type>
            <size>61505</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOThmM2VhNC4uYjIwNjMxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMDksNiArMjEwOSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9MaW5rSGFzaC5jcHAKICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmNwcAogICAgIHBsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuY3BwCisgICAgcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVy
LmNwcAogICAgIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKICAgICBwbGF0Zm9y
bS9Ob3RJbXBsZW1lbnRlZC5jcHAKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDI1ZTJiNjAuLjQ5Y2FmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAor
MjAxNS0xMC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
KyAgICAgICAgTWFrZSBldmVyeSBwb3J0IGltcGxlbWVudCBNYWluVGhyZWFkU2hhcmVkVGltZXIg
aW5zdGVhZCBvZiB1c2luZyBnbG9iYWwgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIE1haW5UaHJlYWRTaGFyZWRUaW1lciB0byBp
dHMgb3duIGZpbGVzIGFuZCBhZGQgdGhlIGNvbW1vbgorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0
aGVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgTWFpblRocmVhZFNoYXJlZFRp
bWVyLmNwcC4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogVXBkYXRlIGZpbGVuYW1lcy4K
KyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpNYWluVGhyZWFkU2hhcmVkVGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6ZmlyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwLgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZFRpbWVyLmg6IFJlbW92ZSBNYWluVGhyZWFkU2hhcmVkVGltZXIKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gYW5kIHJlaW5kZW50IHRoZSBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkVGltZXI6OlNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVy
Ojp+U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXI6OmludmFsaWRh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRUaW1lcnM6OlRocmVhZFRpbWVycyk6IFVzZSBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnNpbmdsZXRvbigpLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzZXRTaGFy
ZWRUaW1lcik6IFVzZSBhIGxhbWJkYSBmdW5jdGlvbgorICAgICAgICBpbnN0ZWFkIG9mIGEgcG9p
bnRlciB0byBhIHN0YXRpYyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6
OnNoYXJlZFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRp
bWVycy5oOiBSZW1vdmVkIHVuc3VzZWQgc3RhdGljIG1ldGhvZCBzaGFyZWRUaW1lckZpcmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0dXBQb3dlck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6cmVzdGFydFNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2Vm
bC9NYWluVGhyZWFkU2hhcmVkVGltZXJFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnRp
bWVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVy
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0ay5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsu
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50
ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJXaW5kb3dXbmRQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6
OmluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpxdWV1
ZVRpbWVyUHJvYyk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNl
dEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlk
YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOiBVcGRhdGUgV29ya2Vy
U2hhcmVkVGltZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24gdG8gdXNlIHN0ZDo6ZnVuY3Rpb24g
aW5zdGVhZCBvZiBhIHBvaW50ZXIuIEFsc28KKyAgICAgICAgbWFyayB0aGUgY2xhc3MgYXMgZmlu
YWwgYW5kIHRoZSB2aXJ0dWFsIGltcGxlbWVudGF0aW9ucyBhcyBvdmVycmlkZS4KKwogMjAxNS0x
MC0yNiAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtTdHJlYW1zIEFQSV0gSW1wbGVtZW50IGFib3J0IG1ldGhvZCBvbiB3cml0YWJsZSBz
dHJlYW1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDljYzExNTcuLjA0MTI3OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMTMsMTMgKzExMywxMyBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9lZmwvTG9jYWxpemVkU3RyaW5nc0VmbC5j
cHAKICAgICBwbGF0Zm9ybS9lZmwvTG9nZ2luZ0VmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvTUlN
RVR5cGVSZWdpc3RyeUVmbC5jcHAKKyAgICBwbGF0Zm9ybS9lZmwvTWFpblRocmVhZFNoYXJlZFRp
bWVyRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcAogICAgIHBsYXRm
b3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL1Bs
YXRmb3JtTW91c2VFdmVudEVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1TY3JlZW5F
ZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAKICAgICBw
bGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwCi0gICAgcGxhdGZvcm0vZWZsL1NoYXJl
ZFRpbWVyRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9Tb3VuZEVmbC5jcHAKICAgICBwbGF0Zm9y
bS9lZmwvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRmb3JtL2VmbC9XaWRnZXRFZmwu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGJhYWFjYjkuLmEyMDlhOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xNjEsOCArMTYxLDggQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9Mb2dnaW5nR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9NSU1FVHlwZVJlZ2lzdHJ5
R3RrLmNwcAorICAgIHBsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsuY3BwCiAg
ICAgcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKLSAgICBwbGF0Zm9ybS9ndGsvU2hh
cmVkVGltZXJHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAK
ICAgICBwbGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCmluZGV4IDk3MDQ4ODYuLmNlNjg0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBA
IC0yNjMsMTAgKzI2MywxMCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0Yu
Y3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisgICAgcGxhdGZvcm0vY2Yv
TWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nlc3Np
YmlsaXR5U29mdExpbmsuY3BwCiAgICAgcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcAog
ICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1NoYXJl
ZFRpbWVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCiAKICAgICBwbGF0Zm9ybS9j
b2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdp
bi5jbWFrZQppbmRleCAwMjExZjY4Li40ZWY4YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFr
ZQpAQCAtMTI0LDYgKzEyNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3Bw
CisgICAgcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKICAgICBwbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5j
cHAKICAgICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcApAQCAtMTMzLDcg
KzEzNCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dpbi9T
Y3JvbGxiYXJUaGVtZVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2lu
LmNwcAogICAgIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCi0gICAgcGxhdGZvcm0v
d2luL1NoYXJlZFRpbWVyV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9Tb3VuZFdpbi5jcHAKICAg
ICBwbGF0Zm9ybS93aW4vU3RydWN0dXJlZEV4Y2VwdGlvbkhhbmRsZXJTdXBwcmVzc29yLmNwcAog
ICAgIHBsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg5MzJmOTcuLmIxNDRhMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE3MDYsNyArMTcwNiw2IEBACiAJCTQ2MjMzRUVFMUJBMEYxODcwMDBFQkVCQiAvKiBBdHRy
aWJ1dGVET01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2MjMzRUVEMUJBMEYxN0EwMDBFQkVCQiAvKiBBdHRyaWJ1dGVET01Ub2tlbkxp
c3QuaCAqLzsgfTsKIAkJNDYyMzNFRUYxQkEwRjE4QjAwMEVCRUJCIC8qIEF0dHJpYnV0ZURPTVRv
a2VuTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjIzM0VFQzFCQTBGMTdBMDAwRUJFQkIgLyogQXR0cmlidXRlRE9NVG9rZW5MaXN0LmNwcCAq
LzsgfTsKIAkJNDYzNDU5MkMxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNDU5MkIx
QUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuY3BwICovOyB9OwotCQk0NjM0NTky
RTFBQzIyNzNDMDBFQ0I3MUMgLyogU2hhcmVkVGltZXJDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjM0NTkyRDFBQzIyNzNDMDBFQ0I3MUMgLyog
U2hhcmVkVGltZXJDRi5jcHAgKi87IH07CiAJCTQ2M0VCNjIyMUI4Nzg5RTAwMDk2RUQ1MSAvKiBU
YWdDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAqLzsg
fTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0Iw
MDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NjlCMjg3MUI4NTJBMEIwMDBG
OTA1RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMjc2OEUxQjg1Mjk3RjAwNUMyNTU2
IC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAgKi87IH07CkBAIC0yNjQyLDYg
KzI2NDEsOSBAQAogCQk3QURFNzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92
aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FE
RTcyMjUxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUUzMzVGMTFBQ0IwOUUy
MDBFNDAxRUYgLyogV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRTMzNUVGMUFDQjA5RTIwMEU0MDFFRiAvKiBX
aGVlbEV2ZW50VGVzdFRyaWdnZXIuY3BwICovOyB9OwogCQk3QUUzMzVGMjFBQ0IwOUUyMDBFNDAx
RUYgLyogV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QUUzMzVGMDFBQ0IwOUUyMDBFNDAxRUYgLyogV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJN0FFNkM5MzgxQkUwQzVDODAwRTE5RTAzIC8qIE1haW5UaHJlYWRTaGFyZWRUaW1l
ckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
RTZDOTM3MUJFMEM1QzgwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAgKi87
IH07CisJCTdBRTZDOTNCMUJFMEM2MDEwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFNkM5
MzkxQkUwQzYwMTAwRTE5RTAzIC8qIE1haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAgKi87IH07CisJ
CTdBRTZDOTNDMUJFMEM2MDEwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRTZDOTNBMUJFMEM2
MDEwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXIuaCAqLzsgfTsKIAkJN0FGOUIyMDIx
OENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGQzE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVn
aW9uLmNwcCAqLzsgfTsKIAkJN0FGOUIyMDMxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIxRkQx
OENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5oICovOyB9OwogCQk3QUY5QjIwNTE4Q0ZCMkRG
MDBDNjRCRUYgLyogVlRUUmVnaW9uTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGRjE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9u
TGlzdC5jcHAgKi87IH07CkBAIC05MDY1LDcgKzkwNjcsNiBAQAogCQk0NjIzM0VFQzFCQTBGMTdB
MDAwRUJFQkIgLyogQXR0cmlidXRlRE9NVG9rZW5MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEF0dHJpYnV0ZURPTVRva2VuTGlzdC5jcHA7IHBhdGggPSAuLi9B
dHRyaWJ1dGVET01Ub2tlbkxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjIzM0VFRDFCQTBGMTdBMDAwRUJFQkIgLyogQXR0cmlidXRlRE9NVG9rZW5MaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF0dHJpYnV0ZURPTVRva2VuTGlzdC5oOyBwYXRo
ID0gLi4vQXR0cmlidXRlRE9NVG9rZW5MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjM0NTkyRDFBQzIyNzNDMDBFQ0I3MUMgLyog
U2hhcmVkVGltZXJDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aGFyZWRUaW1lckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRUI2MjAx
Qjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGFnQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhZ0NvbGxlY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVNZXRh
ZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlTWV0YWRhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMTAyLDYgKzEwMTAzLDkgQEAKIAkJN0FE
RTcyMjUxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE1lbnVQcm92aWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QUUzMzVFRjFBQ0IwOUUyMDBFNDAxRUYgLyogV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdo
ZWVsRXZlbnRUZXN0VHJpZ2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdB
RTMzNUYwMUFDQjA5RTIwMEU0MDFFRiAvKiBXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBRTZDOTM3MUJFMEM1QzgwMEUxOUUwMyAvKiBNYWlu
VGhyZWFkU2hhcmVkVGltZXJDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdBRTZDOTM5MUJFMEM2MDEwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFpblRocmVhZFNoYXJl
ZFRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FFNkM5M0ExQkUwQzYw
MTAwRTE5RTAzIC8qIE1haW5UaHJlYWRTaGFyZWRUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNYWluVGhyZWFkU2hhcmVkVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0FGOUIxRkMxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWVFRSZWdpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QUY5QjFGRDE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVn
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZUVFJlZ2lvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUY5QjFGRTE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRU
UmVnaW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWVFRSZWdpb24uaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3NjAsNiArMTU3NjQsNyBAQAogCQkxQUU0MkY2NzBB
QTRCOENCMDBDODYxMkQgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTdBRTZDOTM3MUJFMEM1QzgwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hhcmVk
VGltZXJDRi5jcHAgKi8sCiAJCQkJRTFBOEU1NjQxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0
cmFzLmNwcCAqLywKIAkJCQlFMUE4RTU2NTE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMu
aCAqLywKIAkJCQk0NDM4MTdGRDFBOTFCMkY4MDA2RTA0RjIgLyogQ29yZU1lZGlhU29mdExpbmsu
Y3BwICovLApAQCAtMTU3NzQsNyArMTU3NzksNiBAQAogCQkJCTJENzZCQjgzMTk0NTZGODEwMENG
RDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuY3BwICovLAogCQkJCTJENzZCQjgwMTk0NTYzMjQwMENG
RDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuaCAqLywKIAkJCQk1MTJERDhFMjBEOTFFMkI0MDAwRjg5
RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwICovLAotCQkJCTQ2MzQ1OTJEMUFDMjI3M0MwMEVDQjcx
QyAvKiBTaGFyZWRUaW1lckNGLmNwcCAqLywKIAkJCQkxQTk4OTU2QTBBQTc4RjgwMDA1RUY1RUYg
LyogVVJMQ0YuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjZjsKQEAgLTIyMzU5LDYgKzIyMzYz
LDggQEAKIAkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3QUU2QzkzOTFCRTBDNjAxMDBF
MTlFMDMgLyogTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcCAqLywKKwkJCQk3QUU2QzkzQTFCRTBD
NjAxMDBFMTlFMDMgLyogTWFpblRocmVhZFNoYXJlZFRpbWVyLmggKi8sCiAJCQkJNDlFOTEyQTQw
RUZBQzhFNjAwOUQwQ0FGIC8qIGFuaW1hdGlvbiAqLywKIAkJCQlGRDMxNjA0MDEyQjAyNkEzMDBD
MUEzNTkgLyogYXVkaW8gKi8sCiAJCQkJMUFFNDJGNjcwQUE0QjhDQjAwQzg2MTJEIC8qIGNmICov
LApAQCAtMjc4NDUsNiArMjc4NTEsNyBAQAogCQkJCUFBQTcyOEY3MTZEMUQ4QkMwMEQzQkJDNiAv
KiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QUE0NzhBN0YxNkNENzBDMzAwN0QxQkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDNFRjQ0ODE5MTc5MTVDMDAwMzQxODQgLyogV2Vi
QWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QUU2
QzkzQzFCRTBDNjAxMDBFMTlFMDMgLyogTWFpblRocmVhZFNoYXJlZFRpbWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwN0Q2Mzc0MDFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92
aWRlckFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QTdBQTQzMTMyRjBFQ0MwMEQzQTND
MiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU2QzVCOUIxODlG
MzQ1NzAwODJEMTNDIC8qIFdlYkNvbnNvbGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTI0
NCw2ICsyOTI1MSw3IEBACiAJCQkJMDc3OUJGMEQxODQ1MzE2ODAwMEI2QUU3IC8qIEhUTUxNZWRp
YUVsZW1lbnRNZWRpYVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBNzlGODBBMTkx
NkRGMDBBOEVGNUYgLyogSFRNTE1lbnVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJC
RThFMkM5MTJBNThBMDEwMEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJN0FFNkM5MzgxQkUwQzVDODAwRTE5RTAzIC8qIE1haW5UaHJlYWRTaGFy
ZWRUaW1lckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFEQzI3MEExNTIwNTcwMEIxMkE2
OCAvKiBIVE1MTWV0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTQ1NDQyNEExMTlC
MzY2MTAwOUJFOTEyIC8qIEhUTUxNZXRlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThDRkY3QTkwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxNb2RFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzA3ODksNyArMzA3OTcsNiBAQAogCQkJCTUxMkREOEUzMEQ5MUUyQjQwMDBGODlF
RSAvKiBTaGFyZWRCdWZmZXJDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0IxRjAyRTEzQjAy
NUNBMDBGNTEwM0YgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUE0QTk1NTIwQjRFRENGRjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlck1hYy5tbSBpbiBT
b3VyY2VzICovLAotCQkJCTQ2MzQ1OTJFMUFDMjI3M0MwMEVDQjcxQyAvKiBTaGFyZWRUaW1lckNG
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE2M0U4OEY3MTE4QTM5RDIwMEVEOTIzMSAvKiBTaW1w
bGVGb250RGF0YUNvcmVUZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0ODk0NEEyMTgwQjU3
RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU4
NUQ2RTAzMUExQTc5MkUwMEZBNEYxMiAvKiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMzEzNTUsNiArMzEzNjIsNyBAQAogCQkJCUJDODI0M0U4MEQw
Q0ZENzUwMDQ2MEM4RiAvKiBXaW5kb3dGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
RTk5QUY1MTBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkJEMTg3RjY0QjQwMERBNjNBNiAvKiBXS0NvbnRl
bnRPYnNlcnZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QUU2QzkzQjFCRTBDNjAxMDBF
MTlFMDMgLyogTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
NDgzMkMwMTg3RjY1NjYwMERBNjNBNiAvKiBXS0dyYXBoaWNzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTE0ODMyQzIxODdGNjVDNzAwREE2M0E2IC8qIFdLVXRpbGl0aWVzLmMgaW4gU291cmNlcyAq
LywKIAkJCQlBMTQ4MzJDNTE4N0Y2NjgzMDBEQTYzQTYgLyogV0tWaWV3Lm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVk
VGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2YxN2M2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVy
LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWluVGhyZWFkU2hhcmVkVGltZXIuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitNYWluVGhyZWFkU2hhcmVkVGltZXImIE1haW5UaHJlYWRTaGFyZWRU
aW1lcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWFpblRocmVh
ZFNoYXJlZFRpbWVyPiBpbnN0YW5jZTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK01haW5U
aHJlYWRTaGFyZWRUaW1lcjo6TWFpblRocmVhZFNoYXJlZFRpbWVyKCkKK3sKK30KKwordm9pZCBN
YWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVkRnVuY3Rpb24oc3RkOjpmdW5jdGlvbjx2b2lk
KCk+JiYgZmlyZWRGdW5jdGlvbikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9maXJlZEZ1bmN0
aW9uIHx8ICFmaXJlZEZ1bmN0aW9uKTsKKyAgICBtX2ZpcmVkRnVuY3Rpb24gPSBXVEY6Om1vdmUo
ZmlyZWRGdW5jdGlvbik7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpmaXJlZCgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlvbik7CisgICAgbV9maXJlZEZ1bmN0
aW9uKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNDE0NjFjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1haW5UaHJlYWRTaGFyZWRUaW1lcl9oCisjZGVmaW5l
IE1haW5UaHJlYWRTaGFyZWRUaW1lcl9oCisKKyNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIE1haW5UaHJlYWRTaGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBTaGFyZWRUaW1lciB7Cisg
ICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8TWFpblRocmVhZFNoYXJlZFRpbWVy
PjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTWFpblRocmVhZFNoYXJlZFRpbWVyJiBzaW5nbGV0b24o
KTsKKworICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAgICB2b2lkIGludmFsaWRhdGUoKSBvdmVycmlkZTsK
KworICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBwcml2YXRlLCBidXQgQ0YgYW5kIFdpbmRv
d3MgaW1wbGVtZW50YXRpb25zCisgICAgLy8gbmVlZCB0byBjYWxsIHRoaXMgZnJvbSBzdGF0aWMg
bWV0aG9kcyBhdCB0aGUgbW9tZW50LgorICAgIHZvaWQgZmlyZWQoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBNYWluVGhyZWFkU2hhcmVkVGltZXIoKTsKKworICAgIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiBtX2ZpcmVkRnVuY3Rpb24geyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBNYWluVGhyZWFkU2hhcmVkVGltZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRUaW1lci5oCmluZGV4IDI5OWM0OTkuLmNhYzFiOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkVGltZXIuaApAQCAtMjYsNTkgKzI2LDI4IEBACiAjaWZuZGVmIFNoYXJl
ZFRpbWVyX2gKICNkZWZpbmUgU2hhcmVkVGltZXJfaAogCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
ICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICAvLyBFYWNoIHRocmVhZCBoYXMgaXRzIG93
biBzaW5nbGUgaW5zdGFuY2Ugb2Ygc2hhcmVkIHRpbWVyLCB3aGljaCBpbXBsZW1lbnRzIHRoaXMg
aW50ZXJmYWNlLgotICAgIC8vIFRoaXMgaW5zdGFuY2UgaXMgc2hhcmVkIGJ5IGFsbCB0aW1lcnMg
aW4gdGhlIHRocmVhZC4KLSAgICAvLyBOb3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseTsg
dXNlIHRoZSBUaW1lciBjbGFzcyBpbnN0ZWFkLgotICAgIGNsYXNzIFNoYXJlZFRpbWVyIHsKLSAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhcmVkVGltZXIpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNoYXJlZFRpbWVyKCkgeyB9Ci0gICAgICAg
IHZpcnR1YWwgflNoYXJlZFRpbWVyKCkge30KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldEZpcmVk
RnVuY3Rpb24odm9pZCAoKikoKSkgPSAwOwotCi0gICAgICAgIC8vIFRoZSBmaXJlIGludGVydmFs
IGlzIGluIHNlY29uZHMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgbW9ub3RvbmljIGNsb2NrIHRp
bWUuCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlKSA9IDA7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBp
bnZhbGlkYXRlKCkgeyB9Ci0gICAgfTsKLQotCi0gICAgLy8gSW1wbGVtZW50ZWQgYnkgcG9ydCAo
c2luY2UgaXQgcHJvdmlkZXMgdGhlIHJ1biBsb29wIGZvciB0aGUgbWFpbiB0aHJlYWQpLgotICAg
IC8vIEZJWE1FOiBtYWtlIHBvcnRzIGltcGxlbWVudCBNYWluVGhyZWFkU2hhcmVkVGltZXIgZGly
ZWN0bHkgaW5zdGVhZC4KLSAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lk
ICgqKSgpKTsKLSAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJsZSk7Ci0g
ICAgdm9pZCBzdG9wU2hhcmVkVGltZXIoKTsKLSAgICB2b2lkIGludmFsaWRhdGVTaGFyZWRUaW1l
cigpOwotCi0gICAgLy8gSW1wbGVtZW50YXRpb24gb2YgU2hhcmVkVGltZXIgZm9yIHRoZSBtYWlu
IHRocmVhZC4KLSAgICBjbGFzcyBNYWluVGhyZWFkU2hhcmVkVGltZXIgZmluYWwgOiBwdWJsaWMg
U2hhcmVkVGltZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9u
KHZvaWQgKCpmdW5jdGlvbikoKSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgc2V0
U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKGZ1bmN0aW9uKTsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKSBvdmVycmlkZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChpbnRlcnZh
bCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN0b3BTaGFyZWRUaW1lcigpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAg
aW52YWxpZGF0ZVNoYXJlZFRpbWVyKCk7Ci0gICAgICAgIH0KLSAgICB9OworLy8gRWFjaCB0aHJl
YWQgaGFzIGl0cyBvd24gc2luZ2xlIGluc3RhbmNlIG9mIHNoYXJlZCB0aW1lciwgd2hpY2ggaW1w
bGVtZW50cyB0aGlzIGludGVyZmFjZS4KKy8vIFRoaXMgaW5zdGFuY2UgaXMgc2hhcmVkIGJ5IGFs
bCB0aW1lcnMgaW4gdGhlIHRocmVhZC4KKy8vIE5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVj
dGx5OyB1c2UgdGhlIFRpbWVyIGNsYXNzIGluc3RlYWQuCitjbGFzcyBTaGFyZWRUaW1lciB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhcmVkVGltZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRUaW1lcigpIHsgfQorICAgIHZpcnR1YWwgflNoYXJl
ZFRpbWVyKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldEZpcmVkRnVuY3Rpb24oc3RkOjpmdW5j
dGlvbjx2b2lkKCk+JiYpID0gMDsKKworICAgIC8vIFRoZSBmaXJlIGludGVydmFsIGlzIGluIHNl
Y29uZHMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgbW9ub3RvbmljIGNsb2NrIHRpbWUuCisgICAg
dmlydHVhbCB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3VibGUpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgeyB9Cit9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZFRpbWVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRU
aW1lcnMuY3BwCmluZGV4IDEyMzFjYTIuLjAyMjgzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGhyZWFkVGltZXJzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlRocmVhZFRpbWVycy5oIgogCisjaW5jbHVkZSAiTWFpblRocmVhZFNoYXJl
ZFRpbWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkVGltZXIuaCIKICNpbmNsdWRlICJUaHJlYWRHbG9i
YWxEYXRhLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTQ3LDI3ICs0OCwyMSBAQCBzdGF0aWMg
Y29uc3QgZG91YmxlIG1heER1cmF0aW9uT2ZGaXJpbmdUaW1lcnMgPSAwLjA1MDsKIC8vIFRpbWVy
cyBhcmUgY3JlYXRlZCwgc3RhcnRlZCBhbmQgZmlyZWQgb24gdGhlIHNhbWUgdGhyZWFkLCBhbmQg
ZWFjaCB0aHJlYWQgaGFzIGl0cyBvd24gVGhyZWFkVGltZXJzCiAvLyBjb3B5IHRvIGtlZXAgdGhl
IGhlYXAgYW5kIGEgc2V0IG9mIGN1cnJlbnRseSBmaXJpbmcgdGltZXJzLgogCi1zdGF0aWMgTWFp
blRocmVhZFNoYXJlZFRpbWVyKiBtYWluVGhyZWFkU2hhcmVkVGltZXIoKQotewotICAgIHN0YXRp
YyBNYWluVGhyZWFkU2hhcmVkVGltZXIqIHRpbWVyID0gbmV3IE1haW5UaHJlYWRTaGFyZWRUaW1l
cjsKLSAgICByZXR1cm4gdGltZXI7Ci19Ci0KIFRocmVhZFRpbWVyczo6VGhyZWFkVGltZXJzKCkK
ICAgICA6IG1fc2hhcmVkVGltZXIoMCkKICAgICAsIG1fZmlyaW5nVGltZXJzKGZhbHNlKQogICAg
ICwgbV9wZW5kaW5nU2hhcmVkVGltZXJGaXJlVGltZSgwKQogewogICAgIGlmIChpc1VJVGhyZWFk
KCkpCi0gICAgICAgIHNldFNoYXJlZFRpbWVyKG1haW5UaHJlYWRTaGFyZWRUaW1lcigpKTsKKyAg
ICAgICAgc2V0U2hhcmVkVGltZXIoJk1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2luZ2xldG9uKCkp
OwogfQogCiAvLyBBIHdvcmtlciB0aHJlYWQgbWF5IGluaXRpYWxpemUgU2hhcmVkVGltZXIgYWZ0
ZXIgc29tZSB0aW1lcnMgYXJlIGNyZWF0ZWQuCi0vLyBBbHNvLCBTaGFyZWRUaW1lciBjYW4gYmUg
cmVwbGFjZWQgd2l0aCAwIGJlZm9yZSBhbGwgdGltZXJzIGFyZSBkZXN0cm95ZWQuCisvLyBBbHNv
LCBTaGFyZWRUaW1lciBjYW4gYmUgcmVwbGFjZWQgd2l0aCBudWxscHRyIGJlZm9yZSBhbGwgdGlt
ZXJzIGFyZSBkZXN0cm95ZWQuCiB2b2lkIFRocmVhZFRpbWVyczo6c2V0U2hhcmVkVGltZXIoU2hh
cmVkVGltZXIqIHNoYXJlZFRpbWVyKQogewogICAgIGlmIChtX3NoYXJlZFRpbWVyKSB7Ci0gICAg
ICAgIG1fc2hhcmVkVGltZXItPnNldEZpcmVkRnVuY3Rpb24oMCk7CisgICAgICAgIG1fc2hhcmVk
VGltZXItPnNldEZpcmVkRnVuY3Rpb24obnVsbHB0cik7CiAgICAgICAgIG1fc2hhcmVkVGltZXIt
PnN0b3AoKTsKICAgICAgICAgbV9wZW5kaW5nU2hhcmVkVGltZXJGaXJlVGltZSA9IDA7CiAgICAg
fQpAQCAtNzUsNyArNzAsNyBAQCB2b2lkIFRocmVhZFRpbWVyczo6c2V0U2hhcmVkVGltZXIoU2hh
cmVkVGltZXIqIHNoYXJlZFRpbWVyKQogICAgIG1fc2hhcmVkVGltZXIgPSBzaGFyZWRUaW1lcjsK
ICAgICAKICAgICBpZiAoc2hhcmVkVGltZXIpIHsKLSAgICAgICAgbV9zaGFyZWRUaW1lci0+c2V0
RmlyZWRGdW5jdGlvbihUaHJlYWRUaW1lcnM6OnNoYXJlZFRpbWVyRmlyZWQpOworICAgICAgICBt
X3NoYXJlZFRpbWVyLT5zZXRGaXJlZEZ1bmN0aW9uKFtdIHsgdGhyZWFkR2xvYmFsRGF0YSgpLnRo
cmVhZFRpbWVycygpLnNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpOyB9KTsKICAgICAgICAgdXBk
YXRlU2hhcmVkVGltZXIoKTsKICAgICB9CiB9CkBAIC0xMDEsMTIgKzk2LDYgQEAgdm9pZCBUaHJl
YWRUaW1lcnM6OnVwZGF0ZVNoYXJlZFRpbWVyKCkKICAgICB9CiB9CiAKLXZvaWQgVGhyZWFkVGlt
ZXJzOjpzaGFyZWRUaW1lckZpcmVkKCkKLXsKLSAgICAvLyBSZWRpcmVjdCB0byBub24tc3RhdGlj
IG1ldGhvZC4KLSAgICB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkuc2hhcmVkVGlt
ZXJGaXJlZEludGVybmFsKCk7Ci19Ci0KIHZvaWQgVGhyZWFkVGltZXJzOjpzaGFyZWRUaW1lckZp
cmVkSW50ZXJuYWwoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSB8fCAoIWlzV2ViVGhy
ZWFkKCkgJiYgIWlzVUlUaHJlYWQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGhyZWFkVGltZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1l
cnMuaAppbmRleCAxNWQ5ZjM3Li5lNGYyNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaHJlYWRUaW1lcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJl
YWRUaW1lcnMuaApAQCAtNTEsOCArNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBzdGF0aWMgdm9pZCBzaGFyZWRUaW1lckZpcmVkKCk7Ci0KICAgICAgICAgdm9pZCBzaGFy
ZWRUaW1lckZpcmVkSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRF
dmVudExvb3BJbnRlcm5hbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZGE2MjQ3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcApAQCAtMCwwICsxLDEyNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTWFpblRocmVhZFNoYXJlZFRpbWVyLmgiCisK
KyNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisj
aW1wb3J0ICJQb3dlck9ic2VydmVyTWFjLmgiCisjZWxpZiBQTEFURk9STShJT1MpCisjaW1wb3J0
ICJXZWJDb3JlVGhyZWFkLmgiCisjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgQ0ZSdW5Mb29wVGltZXJSZWYgc2hhcmVk
VGltZXI7CitzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKik7
CitzdGF0aWMgdm9pZCByZXN0YXJ0U2hhcmVkVGltZXIoKTsKKworc3RhdGljIGNvbnN0IENGVGlt
ZUludGVydmFsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPENGVGltZUludGVydmFsPjo6bWF4KCk7CisKKyNpZiBQTEFURk9STShJT1MpCitzdGF0aWMg
dm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZShDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwg
dm9pZCosIENGU3RyaW5nUmVmLCBjb25zdCB2b2lkKiwgQ0ZEaWN0aW9uYXJ5UmVmKQoreworICAg
IFdlYlRocmVhZFJ1biheeworICAgICAgICByZXN0YXJ0U2hhcmVkVGltZXIoKTsKKyAgICB9KTsK
K30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBzZXR1cFBvd2VyT2JzZXJ2ZXIoKQoreworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBzdGF0aWMgUG93ZXJPYnNlcnZlciogcG93ZXJPYnNlcnZlcjsKKyAg
ICBpZiAoIXBvd2VyT2JzZXJ2ZXIpCisgICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBvd2VyT2JzZXJ2ZXI+KHJlc3RhcnRTaGFyZWRUaW1lcikucmVsZWFzZSgpOworI2Vs
aWYgUExBVEZPUk0oSU9TKQorICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlv
bk5vdGlmaWNhdGlvbiA9IGZhbHNlOworICAgIGlmICghcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9u
Tm90aWZpY2F0aW9uKSB7CisgICAgICAgIHJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNh
dGlvbiA9IHRydWU7CisgICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIG5vdGlmaWNhdGlv
bkNlbnRlciA9IENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKKyAgICAgICAg
Q0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihub3RpZmljYXRpb25DZW50ZXIsIG51bGxw
dHIsIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlLCBDRlNUUigiVUlBcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZU5vdGlmaWNhdGlvbiIpLCBudWxscHRyLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNp
b25CZWhhdmlvckNvYWxlc2NlKTsKKyAgICB9CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgdGlt
ZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopCit7CisgICAgQXV0b2RyYWluZWRQb29s
IHBvb2w7CisgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKS5maXJlZCgpOwor
fQorCitzdGF0aWMgdm9pZCByZXN0YXJ0U2hhcmVkVGltZXIoKQoreworICAgIGlmICghc2hhcmVk
VGltZXIpCisgICAgICAgIHJldHVybjsKKworICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2lu
Z2xldG9uKCkuc3RvcCgpOworICAgIHRpbWVyRmlyZWQoMCwgMCk7Cit9CisKK3ZvaWQgTWFpblRo
cmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKK3sKKyAgICBpZiAoIXNoYXJlZFRpbWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUoc2hhcmVkVGlt
ZXIpOworICAgIENGUmVsZWFzZShzaGFyZWRUaW1lcik7CisgICAgc2hhcmVkVGltZXIgPSBudWxs
cHRyOworfQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKGRv
dWJsZSBpbnRlcnZhbCkKK3sKKyAgICBBU1NFUlQobV9maXJlZEZ1bmN0aW9uKTsKKworICAgIENG
QWJzb2x1dGVUaW1lIGZpcmVEYXRlID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBpbnRl
cnZhbDsKKyAgICBpZiAoIXNoYXJlZFRpbWVyKSB7CisgICAgICAgIHNoYXJlZFRpbWVyID0gQ0ZS
dW5Mb29wVGltZXJDcmVhdGUobnVsbHB0ciwgZmlyZURhdGUsIGtDRlRpbWVJbnRlcnZhbERpc3Rh
bnRGdXR1cmUsIDAsIDAsIHRpbWVyRmlyZWQsIG51bGxwdHIpOworI2lmIFBMQVRGT1JNKElPUykK
KyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoV2ViVGhyZWFkUnVuTG9vcCgpLCBzaGFyZWRUaW1l
ciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyNlbHNlCisgICAgICAgIENGUnVuTG9vcEFkZFRp
bWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgc2hhcmVkVGltZXIsIGtDRlJ1bkxvb3BDb21tb25N
b2Rlcyk7CisjZW5kaWYKKworICAgICAgICBzZXR1cFBvd2VyT2JzZXJ2ZXIoKTsKKworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hh
cmVkVGltZXIsIGZpcmVEYXRlKTsKK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0
b3AoKQoreworICAgIGlmICghc2hhcmVkVGltZXIpCisgICAgICAgIHJldHVybjsKKworICAgIENG
UnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyLCBrQ0ZUaW1lSW50ZXJ2YWxE
aXN0YW50RnV0dXJlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkVGltZXJDRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRUaW1lckNGLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNmZkNzA3Yi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9TaGFyZWRUaW1lckNGLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJTaGFyZWRUaW1lci5oIgotCi0jaW5jbHVkZSA8d3Rm
L0F1dG9kcmFpbmVkUG9vbC5oPgotCi0jaWYgUExBVEZPUk0oTUFDKQotI2ltcG9ydCAiUG93ZXJP
YnNlcnZlck1hYy5oIgotI2VsaWYgUExBVEZPUk0oSU9TKQotI2ltcG9ydCAiV2ViQ29yZVRocmVh
ZC5oIgotI2ltcG9ydCAiV2ViQ29yZVRocmVhZFJ1bi5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotc3RhdGljIENGUnVuTG9vcFRpbWVyUmVmIHNoYXJlZFRpbWVyOwotc3RhdGlj
IHZvaWQgKCpzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pKCk7Ci1zdGF0aWMgdm9pZCB0aW1lckZp
cmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKik7Ci1zdGF0aWMgdm9pZCByZXN0YXJ0U2hhcmVk
VGltZXIoKTsKLQotc3RhdGljIGNvbnN0IENGVGltZUludGVydmFsIGtDRlRpbWVJbnRlcnZhbERp
c3RhbnRGdXR1cmUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPENGVGltZUludGVydmFsPjo6bWF4KCk7
Ci0KLSNpZiBQTEFURk9STShJT1MpCi1zdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZShDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCosIENGU3RyaW5nUmVmLCBjb25zdCB2
b2lkKiwgQ0ZEaWN0aW9uYXJ5UmVmKQotewotICAgIFdlYlRocmVhZFJ1biheewotICAgICAgICBy
ZXN0YXJ0U2hhcmVkVGltZXIoKTsKLSAgICB9KTsKLX0KLSNlbmRpZgotCi1zdGF0aWMgdm9pZCBz
ZXR1cFBvd2VyT2JzZXJ2ZXIoKQotewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgUG93
ZXJPYnNlcnZlciogcG93ZXJPYnNlcnZlcjsKLSAgICBpZiAoIXBvd2VyT2JzZXJ2ZXIpCi0gICAg
ICAgIHBvd2VyT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvd2VyT2JzZXJ2ZXI+KHJlc3Rh
cnRTaGFyZWRUaW1lcikucmVsZWFzZSgpOwotI2VsaWYgUExBVEZPUk0oSU9TKQotICAgIHN0YXRp
YyBib29sIHJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IGZhbHNlOwotICAg
IGlmICghcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSB7Ci0gICAgICAgIHJl
Z2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IHRydWU7Ci0gICAgICAgIENGTm90
aWZpY2F0aW9uQ2VudGVyUmVmIG5vdGlmaWNhdGlvbkNlbnRlciA9IENGTm90aWZpY2F0aW9uQ2Vu
dGVyR2V0TG9jYWxDZW50ZXIoKTsKLSAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNl
cnZlcihub3RpZmljYXRpb25DZW50ZXIsIG51bGxwdHIsIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0
aXZlLCBDRlNUUigiVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiIpLCBu
dWxscHRyLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckNvYWxlc2NlKTsKLSAgICB9
Ci0jZW5kaWYKLX0KLQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYp
KCkpCi17Ci0gICAgQVNTRVJUKCFzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gfHwgc2hhcmVkVGlt
ZXJGaXJlZEZ1bmN0aW9uID09IGYpOwotCi0gICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uID0g
ZjsKLX0KLQotc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCop
Ci17Ci0gICAgQXV0b2RyYWluZWRQb29sIHBvb2w7Ci0gICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0
aW9uKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlc3RhcnRTaGFyZWRUaW1lcigpCi17Ci0gICAgaWYg
KCFzaGFyZWRUaW1lcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RvcFNoYXJlZFRpbWVyKCk7
Ci0gICAgdGltZXJGaXJlZCgwLCAwKTsKLX0KLQotdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGltZXIo
KQotewotICAgIGlmICghc2hhcmVkVGltZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIENGUnVu
TG9vcFRpbWVySW52YWxpZGF0ZShzaGFyZWRUaW1lcik7Ci0gICAgQ0ZSZWxlYXNlKHNoYXJlZFRp
bWVyKTsKLSAgICBzaGFyZWRUaW1lciA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgc2V0U2hhcmVkVGlt
ZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQotewotICAgIEFTU0VSVChzaGFyZWRUaW1l
ckZpcmVkRnVuY3Rpb24pOwotCi0gICAgQ0ZBYnNvbHV0ZVRpbWUgZmlyZURhdGUgPSBDRkFic29s
dXRlVGltZUdldEN1cnJlbnQoKSArIGludGVydmFsOwotICAgIGlmICghc2hhcmVkVGltZXIpIHsK
LSAgICAgICAgc2hhcmVkVGltZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0ZShudWxscHRyLCBmaXJl
RGF0ZSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSwgMCwgMCwgdGltZXJGaXJlZCwgbnVs
bHB0cik7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihXZWJU
aHJlYWRSdW5Mb29wKCksIHNoYXJlZFRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vs
c2UKLSAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBzaGFy
ZWRUaW1lciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSNlbmRpZgotCi0gICAgICAgIHNldHVw
UG93ZXJPYnNlcnZlcigpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDRlJ1bkxv
b3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwgZmlyZURhdGUpOwotfQotCi12b2lk
IHN0b3BTaGFyZWRUaW1lcigpCi17Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIsIGtD
RlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTWFpblRocmVhZFNoYXJl
ZFRpbWVyRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9NYWluVGhyZWFkU2hh
cmVkVGltZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MDZj
MjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTWFpblRo
cmVhZFNoYXJlZFRpbWVyRWZsLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuCisgKiAgICAgICAgICAgKEMpIDIw
MDggQWZvbnNvIFJhYmVsbyBDb3N0YSBKci4KKyAqICAgICAgICAgICAoQykgMjAwOS0yMDEwIFBy
b0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgKiAgICAgICAgICAgKEMpIDIwMDktMjAxMCBTYW1z
dW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWluVGhyZWFkU2hhcmVkVGltZXIu
aCIKKworI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBFY29yZV9UaW1lciogc2hhcmVkVGltZXI7
CisKK3N0YXRpYyBFaW5hX0Jvb2wgdGltZXJFdmVudCh2b2lkKikKK3sKKyAgICBzaGFyZWRUaW1l
ciA9IG51bGxwdHI7CisgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKS5maXJl
ZCgpOworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7Cit9CisKK3ZvaWQgTWFpblRo
cmVhZFNoYXJlZFRpbWVyOjpzdG9wKCkKK3sKKyAgICBpZiAoc2hhcmVkVGltZXIpIHsKKyAgICAg
ICAgZWNvcmVfdGltZXJfZGVsKHNoYXJlZFRpbWVyKTsKKyAgICAgICAgc2hhcmVkVGltZXIgPSBu
dWxscHRyOworICAgIH0KK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJ
bnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgc3RvcCgpOworICAgIHNoYXJlZFRpbWVy
ID0gZWNvcmVfdGltZXJfbG9vcF9hZGQoaW50ZXJ2YWwsIHRpbWVyRXZlbnQsIG51bGxwdHIpOwor
fQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgpCit7Cit9CisKK30K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVmbC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwYmEwMzYuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4KLSAqICAgICAgICAgICAoQykgMjAwOCBBZm9uc28gUmFiZWxvIENvc3RhIEpy
LgotICogICAgICAgICAgIChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMK
LSAqICAgICAgICAgICAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNoYXJlZFRpbWVyLmgiCi0KLSNpbmNsdWRlIDxFY29yZS5oPgotI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgRWNv
cmVfVGltZXIgKl9zaGFyZWRUaW1lciA9IDA7Ci0KLXN0YXRpYyB2b2lkICgqX3RpbWVyRnVuY3Rp
b24pKCk7Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmdW5jKSgp
KQotewotICAgIF90aW1lckZ1bmN0aW9uID0gZnVuYzsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCB0
aW1lckV2ZW50KHZvaWQqKQotewotICAgIF9zaGFyZWRUaW1lciA9IDA7Ci0gICAgaWYgKF90aW1l
ckZ1bmN0aW9uKQotICAgICAgICBfdGltZXJGdW5jdGlvbigpOwotCi0gICAgcmV0dXJuIEVDT1JF
X0NBTExCQUNLX0NBTkNFTDsKLX0KLQotdm9pZCBzdG9wU2hhcmVkVGltZXIoKQotewotICAgIGlm
IChfc2hhcmVkVGltZXIpIHsKLSAgICAgICAgZWNvcmVfdGltZXJfZGVsKF9zaGFyZWRUaW1lcik7
Ci0gICAgICAgIF9zaGFyZWRUaW1lciA9IDA7Ci0gICAgfQotfQotCi12b2lkIGFkZE5ld1RpbWVy
KGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBzdG9wU2hhcmVkVGltZXIoKTsKLQotICAgIF9zaGFy
ZWRUaW1lciA9IGVjb3JlX3RpbWVyX2xvb3BfYWRkKGludGVydmFsLCB0aW1lckV2ZW50LCAwKTsK
LX0KLQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCi17
Ci0gICAgYWRkTmV3VGltZXIoaW50ZXJ2YWwpOwotfQotCi12b2lkIGludmFsaWRhdGVTaGFyZWRU
aW1lcigpCi17Ci19Ci0KLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvTWFpblRocmVhZFNoYXJlZFRpbWVyR3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44N2Q5YjUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0ay5jcHAKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFp
bC5jb20KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWluVGhy
ZWFkU2hhcmVkVGltZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9nbGliL0dNYWluTG9vcFNvdXJjZS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBHTWFpbkxvb3BTb3VyY2UgZ1NoYXJl
ZFRpbWVyOworCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKGRv
dWJsZSBpbnRlcnZhbCkKK3sKKyAgICBBU1NFUlQobV9maXJlZEZ1bmN0aW9uKTsKKworICAgIC8v
IFRoaXMgaXMgR0RLX1BSSU9SSVRZX1JFRFJBVywgYnV0IHdlIGRvbid0IHdhbnQgdG8gZGVwZW5k
IG9uIEdESyBoZXJlIGp1c3QgdG8gdXNlIGEgY29uc3RhbnQuCisgICAgc3RhdGljIGNvbnN0IGlu
dCBwcmlvcml0eSA9IEdfUFJJT1JJVFlfSElHSF9JRExFICsgMjA7CisgICAgZ1NoYXJlZFRpbWVy
LnNjaGVkdWxlQWZ0ZXJEZWxheSgiW1dlYktpdF0gc2hhcmVkVGltZXJUaW1lb3V0Q2FsbGJhY2si
LCBbdGhpc10geyBmaXJlZCgpOyB9LAorICAgICAgICBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2Fz
dDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91Ymxl
PihpbnRlcnZhbCkpLCBwcmlvcml0eSk7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVy
OjpzdG9wKCkKK3sKKyAgICBnU2hhcmVkVGltZXIuY2FuY2VsKCk7Cit9CisKK3ZvaWQgTWFpblRo
cmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGNmZjdkNzMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1NoYXJlZFRpbWVyR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29t
Ci0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkVGltZXIu
aCIKLQotI2luY2x1ZGUgPHd0Zi9nbGliL0dNYWluTG9vcFNvdXJjZS5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0YXRpYyBHTWFpbkxvb3BTb3VyY2UgZ1NoYXJlZFRpbWVyOwotc3RhdGlj
IHZvaWQgKCpzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pKCk7Ci0KLXZvaWQgc2V0U2hhcmVkVGlt
ZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmKSgpKQotewotICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbiA9IGY7Ci0gICAgaWYgKCFzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pCi0gICAgICAgIGdT
aGFyZWRUaW1lci5jYW5jZWwoKTsKLX0KLQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZh
bChkb3VibGUgaW50ZXJ2YWwpCi17Ci0gICAgQVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlv
bik7Ci0KLSAgICAvLyBUaGlzIGlzIEdES19QUklPUklUWV9SRURSQVcsIGJ1dCB3ZSBkb24ndCB3
YW50IHRvIGRlcGVuZCBvbiBHREsgaGVyZSBqdXN0IHRvIHVzZSBhIGNvbnN0YW50LgotICAgIHN0
YXRpYyBjb25zdCBpbnQgcHJpb3JpdHkgPSBHX1BSSU9SSVRZX0hJR0hfSURMRSArIDIwOwotICAg
IGdTaGFyZWRUaW1lci5zY2hlZHVsZUFmdGVyRGVsYXkoIltXZWJLaXRdIHNoYXJlZFRpbWVyVGlt
ZW91dENhbGxiYWNrIiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KHNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbiksCi0gICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjpt
aWNyb3NlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGludGVydmFsKSksIHBy
aW9yaXR5KTsKLX0KLQotdm9pZCBzdG9wU2hhcmVkVGltZXIoKQotewotICAgIGdTaGFyZWRUaW1l
ci5jYW5jZWwoKTsKLX0KLQotdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGltZXIoKQotewotfQotCi19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTWFpblRocmVhZFNoYXJl
ZFRpbWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NYWluVGhyZWFkU2hh
cmVkVGltZXJXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNjYw
ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTWFpblRo
cmVhZFNoYXJlZFRpbWVyV2luLmNwcApAQCAtMCwwICsxLDE5OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1haW5UaHJlYWRTaGFyZWRUaW1lci5oIgorCisjaW5jbHVkZSAiUGFnZS5oIgorI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCisj
aW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgorCisj
aW5jbHVkZSA8bW1zeXN0ZW0uaD4KKworLy8gVGhlc2UgYXJlbid0IGluIHdpbnVzZXIuaCB3aXRo
IHRoZSBNU1ZTIDIwMDMgUGxhdGZvcm0gU0RLLCAKKy8vIHNvIHVzZSBkZWZhdWx0IHZhbHVlcyBp
biB0aGF0IGNhc2UuCisjaWZuZGVmIFVTRVJfVElNRVJfTUlOSU1VTQorI2RlZmluZSBVU0VSX1RJ
TUVSX01JTklNVU0gMHgwMDAwMDAwQQorI2VuZGlmCisKKyNpZm5kZWYgVVNFUl9USU1FUl9NQVhJ
TVVNCisjZGVmaW5lIFVTRVJfVElNRVJfTUFYSU1VTSAweDdGRkZGRkZGCisjZW5kaWYKKworI2lm
bmRlZiBRU19SQVdJTlBVVAorI2RlZmluZSBRU19SQVdJTlBVVCAgICAgICAgIDB4MDQwMAorI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFVJTlQgdGltZXJJRDsKKworc3Rh
dGljIEhBTkRMRSB0aW1lcjsKK3N0YXRpYyBIV05EIHRpbWVyV2luZG93SGFuZGxlID0gMDsKK2Nv
bnN0IExQQ1dTVFIga1RpbWVyV2luZG93Q2xhc3NOYW1lID0gTCJUaW1lcldpbmRvd0NsYXNzIjsK
Kworc3RhdGljIFVJTlQgdGltZXJGaXJlZE1lc3NhZ2UgPSAwOworc3RhdGljIEhBTkRMRSB0aW1l
clF1ZXVlOworc3RhdGljIGJvb2wgaGlnaFJlc1RpbWVyQWN0aXZlOworc3RhdGljIGJvb2wgcHJv
Y2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IGZhbHNlOworc3RhdGljIExPTkcgcGVuZGluZ1Rp
bWVyczsKKworY29uc3QgaW50IHRpbWVyUmVzb2x1dGlvbiA9IDE7IC8vIFRvIGltcHJvdmUgdGlt
ZXIgcmVzb2x1dGlvbiwgd2UgY2FsbCB0aW1lQmVnaW5QZXJpb2QvdGltZUVuZFBlcmlvZCB3aXRo
IHRoaXMgdmFsdWUgdG8gaW5jcmVhc2UgdGltZXIgcmVzb2x1dGlvbiB0byAxbXMuCitjb25zdCBp
bnQgaGlnaFJlc29sdXRpb25UaHJlc2hvbGRNc2VjID0gMTY7IC8vIE9ubHkgYWN0aXZhdGUgaGln
aC1yZXMgdGltZXIgZm9yIHN1Yi0xNm1zIHRpbWVycyAoV2luZG93cyBjYW4gZmlyZSB0aW1lcnMg
YXQgMTZtcyBpbnRlcnZhbHMgd2l0aG91dCBjaGFuZ2luZyB0aGUgc3lzdGVtIHJlc29sdXRpb24p
LgorY29uc3QgaW50IHN0b3BIaWdoUmVzVGltZXJJbk1zZWMgPSAzMDA7IC8vIFN0b3AgaGlnaC1y
ZXMgdGltZXIgYWZ0ZXIgMC4zIHNlY29uZHMgdG8gbGVzc2VuIHBvd2VyIGNvbnN1bXB0aW9uICh3
ZSBkb24ndCB1c2UgYSBzbWFsbGVyIHRpbWUgc2luY2Ugb3NjaWxsYXRpbmcgYmV0d2VlbiBoaWdo
IGFuZCBsb3cgcmVzb2x1dGlvbiBicmVha3MgdGltZXIgYWNjdXJhY3kgb24gWFApLgorCitlbnVt
IHsKKyAgICBzaGFyZWRUaW1lcklEID0gMTAwMCwKKyAgICBlbmRIaWdoUmVzVGltZXJJRCA9IDEw
MDEsCit9OworCitMUkVTVUxUIENBTExCQUNLIFRpbWVyV2luZG93V25kUHJvYyhIV05EIGhXbmQs
IFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKK3sKKyAgICBpZiAo
bWVzc2FnZSA9PSBXTV9USU1FUikgeworICAgICAgICBpZiAod1BhcmFtID09IHNoYXJlZFRpbWVy
SUQpIHsKKyAgICAgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgc2hhcmVkVGlt
ZXJJRCk7CisgICAgICAgICAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNpbmdsZXRvbigpLmZp
cmVkKCk7CisgICAgICAgIH0gZWxzZSBpZiAod1BhcmFtID09IGVuZEhpZ2hSZXNUaW1lcklEKSB7
CisgICAgICAgICAgICBLaWxsVGltZXIodGltZXJXaW5kb3dIYW5kbGUsIGVuZEhpZ2hSZXNUaW1l
cklEKTsKKyAgICAgICAgICAgIGhpZ2hSZXNUaW1lckFjdGl2ZSA9IGZhbHNlOworICAgICAgICAg
ICAgdGltZUVuZFBlcmlvZCh0aW1lclJlc29sdXRpb24pOworICAgICAgICB9CisgICAgfSBlbHNl
IGlmIChtZXNzYWdlID09IHRpbWVyRmlyZWRNZXNzYWdlKSB7CisgICAgICAgIEludGVybG9ja2Vk
RXhjaGFuZ2UoJnBlbmRpbmdUaW1lcnMsIDApOworICAgICAgICBwcm9jZXNzaW5nQ3VzdG9tVGlt
ZXJNZXNzYWdlID0gdHJ1ZTsKKyAgICAgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0
b24oKS5maXJlZCgpOworICAgICAgICBwcm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlID0gZmFs
c2U7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBEZWZXaW5kb3dQcm9jKGhXbmQsIG1lc3Nh
Z2UsIHdQYXJhbSwgbFBhcmFtKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBp
bml0aWFsaXplT2ZmU2NyZWVuVGltZXJXaW5kb3coKQoreworICAgIGlmICh0aW1lcldpbmRvd0hh
bmRsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV05EQ0xBU1NFWCB3Y2V4OworICAgIG1lbXNl
dCgmd2NleCwgMCwgc2l6ZW9mKFdORENMQVNTRVgpKTsKKyAgICB3Y2V4LmNiU2l6ZSA9IHNpemVv
ZihXTkRDTEFTU0VYKTsKKworICAgIHdjZXgubHBmblduZFByb2MgICAgPSBUaW1lcldpbmRvd1du
ZFByb2M7CisgICAgd2NleC5oSW5zdGFuY2UgICAgICA9IFdlYkNvcmU6Omluc3RhbmNlSGFuZGxl
KCk7CisgICAgd2NleC5scHN6Q2xhc3NOYW1lICA9IGtUaW1lcldpbmRvd0NsYXNzTmFtZTsKKyAg
ICBSZWdpc3RlckNsYXNzRXgoJndjZXgpOworCisgICAgdGltZXJXaW5kb3dIYW5kbGUgPSBDcmVh
dGVXaW5kb3coa1RpbWVyV2luZG93Q2xhc3NOYW1lLCAwLCAwLAorICAgICAgIENXX1VTRURFRkFV
TFQsIDAsIENXX1VTRURFRkFVTFQsIDAsIEhXTkRfTUVTU0FHRSwgMCwgV2ViQ29yZTo6aW5zdGFu
Y2VIYW5kbGUoKSwgMCk7CisKKyAgICB0aW1lckZpcmVkTWVzc2FnZSA9IFJlZ2lzdGVyV2luZG93
TWVzc2FnZShMImNvbS5hcHBsZS5XZWJLaXQuVGltZXJGaXJlZCIpOworfQorCitzdGF0aWMgdm9p
ZCBOVEFQSSBxdWV1ZVRpbWVyUHJvYyhQVk9JRCwgQk9PTEVBTikKK3sKKyAgICBpZiAoSW50ZXJs
b2NrZWRJbmNyZW1lbnQoJnBlbmRpbmdUaW1lcnMpID09IDEpCisgICAgICAgIFBvc3RNZXNzYWdl
KHRpbWVyV2luZG93SGFuZGxlLCB0aW1lckZpcmVkTWVzc2FnZSwgMCwgMCk7Cit9CisKK3ZvaWQg
TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQor
eworICAgIEFTU0VSVChtX2ZpcmVkRnVuY3Rpb24pOworCisgICAgdW5zaWduZWQgaW50ZXJ2YWxJ
bk1TOworICAgIGludGVydmFsICo9IDEwMDA7CisgICAgaWYgKGludGVydmFsID4gVVNFUl9USU1F
Ul9NQVhJTVVNKQorICAgICAgICBpbnRlcnZhbEluTVMgPSBVU0VSX1RJTUVSX01BWElNVU07Cisg
ICAgZWxzZQorICAgICAgICBpbnRlcnZhbEluTVMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW50
ZXJ2YWwpOworCisgICAgaW5pdGlhbGl6ZU9mZlNjcmVlblRpbWVyV2luZG93KCk7CisgICAgYm9v
bCB0aW1lclNldCA9IGZhbHNlOworCisgICAgaWYgKFNldHRpbmdzOjpzaG91bGRVc2VIaWdoUmVz
b2x1dGlvblRpbWVycygpKSB7CisgICAgICAgIGlmIChpbnRlcnZhbCA8IGhpZ2hSZXNvbHV0aW9u
VGhyZXNob2xkTXNlYykgeworICAgICAgICAgICAgaWYgKCFoaWdoUmVzVGltZXJBY3RpdmUpIHsK
KyAgICAgICAgICAgICAgICBoaWdoUmVzVGltZXJBY3RpdmUgPSB0cnVlOworICAgICAgICAgICAg
ICAgIHRpbWVCZWdpblBlcmlvZCh0aW1lclJlc29sdXRpb24pOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgU2V0VGltZXIodGltZXJXaW5kb3dIYW5kbGUsIGVuZEhpZ2hSZXNUaW1lcklELCBz
dG9wSGlnaFJlc1RpbWVySW5Nc2VjLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIERXT1JEIHF1
ZXVlU3RhdHVzID0gTE9XT1JEKEdldFF1ZXVlU3RhdHVzKFFTX1BBSU5UIHwgUVNfTU9VU0VCVVRU
T04gfCBRU19LRVkgfCBRU19SQVdJTlBVVCkpOworCisgICAgICAgIC8vIFdpbjMyIGhhcyBhIHRy
aS1sZXZlbCBxdWV1ZSB3aXRoIGFwcGxpY2F0aW9uIG1lc3NhZ2VzID4gdXNlciBpbnB1dCA+IFdN
X1BBSU5UL1dNX1RJTUVSLgorCisgICAgICAgIC8vIElmIHRoZSBxdWV1ZSBkb2Vzbid0IGNvbnRh
aW5zIGlucHV0IGV2ZW50cywgd2UgdXNlIGEgaGlnaGVyIHByaW9ydHkgdGltZXIgZXZlbnQgcG9z
dGluZyBtZWNoYW5pc20uCisgICAgICAgIGlmICghKHF1ZXVlU3RhdHVzICYgKFFTX01PVVNFQlVU
VE9OIHwgUVNfS0VZIHwgUVNfUkFXSU5QVVQpKSkgeworICAgICAgICAgICAgaWYgKGludGVydmFs
SW5NUyA8IFVTRVJfVElNRVJfTUlOSU1VTSAmJiAhcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2Fn
ZSAmJiAhKHF1ZXVlU3RhdHVzICYgUVNfUEFJTlQpKSB7CisgICAgICAgICAgICAgICAgLy8gQ2Fs
bCBQb3N0TWVzc2FnZSBpbW1lZGlhdGVseSBpZiB0aGUgdGltZXIgaXMgYWxyZWFkeSBleHBpcmVk
LCB1bmxlc3MgYSBwYWludCBpcyBwZW5kaW5nLgorICAgICAgICAgICAgICAgIC8vICh3ZSBwcmlv
cml0aXplIHBhaW50cyBvdmVyIHRpbWVycykKKyAgICAgICAgICAgICAgICBpZiAoSW50ZXJsb2Nr
ZWRJbmNyZW1lbnQoJnBlbmRpbmdUaW1lcnMpID09IDEpCisgICAgICAgICAgICAgICAgICAgIFBv
c3RNZXNzYWdlKHRpbWVyV2luZG93SGFuZGxlLCB0aW1lckZpcmVkTWVzc2FnZSwgMCwgMCk7Cisg
ICAgICAgICAgICAgICAgdGltZXJTZXQgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGRlbGF5IHRoZSBQb3N0TWVzc2FnZSB2aWEgYSBD
cmVhdGVUaW1lclF1ZXVlVGltZXIKKyAgICAgICAgICAgICAgICBpZiAoIXRpbWVyUXVldWUpCisg
ICAgICAgICAgICAgICAgICAgIHRpbWVyUXVldWUgPSBDcmVhdGVUaW1lclF1ZXVlKCk7CisgICAg
ICAgICAgICAgICAgaWYgKHRpbWVyKQorICAgICAgICAgICAgICAgICAgICBEZWxldGVUaW1lclF1
ZXVlVGltZXIodGltZXJRdWV1ZSwgdGltZXIsIDApOworICAgICAgICAgICAgICAgIHRpbWVyU2V0
ID0gQ3JlYXRlVGltZXJRdWV1ZVRpbWVyKCZ0aW1lciwgdGltZXJRdWV1ZSwgcXVldWVUaW1lclBy
b2MsIDAsIGludGVydmFsSW5NUywgMCwgV1RfRVhFQ1VURUlOVElNRVJUSFJFQUQgfCBXVF9FWEVD
VVRFT05MWU9OQ0UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KHRpbWVyU2V0KSB7CisgICAgICAgIGlmICh0aW1lcklEKSB7CisgICAgICAgICAgICBLaWxsVGlt
ZXIodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVySUQpOworICAgICAgICAgICAgdGltZXJJRCA9IDA7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB0aW1lcklEID0gU2V0VGltZXIodGlt
ZXJXaW5kb3dIYW5kbGUsIHNoYXJlZFRpbWVySUQsIGludGVydmFsSW5NUywgMCk7CisgICAgICAg
IHRpbWVyID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9w
KCkKK3sKKyAgICBpZiAodGltZXJRdWV1ZSAmJiB0aW1lcikgeworICAgICAgICBEZWxldGVUaW1l
clF1ZXVlVGltZXIodGltZXJRdWV1ZSwgdGltZXIsIDApOworICAgICAgICB0aW1lciA9IDA7Cisg
ICAgfQorCisgICAgaWYgKHRpbWVySUQpIHsKKyAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2luZG93
SGFuZGxlLCB0aW1lcklEKTsKKyAgICAgICAgdGltZXJJRCA9IDA7CisgICAgfQorfQorCit2b2lk
IE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgpCit7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzZDAyYjE5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZFRpbWVyLmgiCi0KLSNpbmNsdWRlICJQ
YWdlLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VI
YW5kbGUuaCIKLSNpbmNsdWRlICJXaWRnZXQuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0
cmFzLmg+Ci0KLSNpbmNsdWRlIDxtbXN5c3RlbS5oPgotCi0vLyBUaGVzZSBhcmVuJ3QgaW4gd2lu
dXNlci5oIHdpdGggdGhlIE1TVlMgMjAwMyBQbGF0Zm9ybSBTREssIAotLy8gc28gdXNlIGRlZmF1
bHQgdmFsdWVzIGluIHRoYXQgY2FzZS4KLSNpZm5kZWYgVVNFUl9USU1FUl9NSU5JTVVNCi0jZGVm
aW5lIFVTRVJfVElNRVJfTUlOSU1VTSAweDAwMDAwMDBBCi0jZW5kaWYKLQotI2lmbmRlZiBVU0VS
X1RJTUVSX01BWElNVU0KLSNkZWZpbmUgVVNFUl9USU1FUl9NQVhJTVVNIDB4N0ZGRkZGRkYKLSNl
bmRpZgotCi0jaWZuZGVmIFFTX1JBV0lOUFVUCi0jZGVmaW5lIFFTX1JBV0lOUFVUICAgICAgICAg
MHgwNDAwCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgVUlOVCB0aW1l
cklEOwotc3RhdGljIHZvaWQgKCpzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pKCk7Ci0KLXN0YXRp
YyBIQU5ETEUgdGltZXI7Ci1zdGF0aWMgSFdORCB0aW1lcldpbmRvd0hhbmRsZSA9IDA7Ci1jb25z
dCBMUENXU1RSIGtUaW1lcldpbmRvd0NsYXNzTmFtZSA9IEwiVGltZXJXaW5kb3dDbGFzcyI7Ci0K
LXN0YXRpYyBVSU5UIHRpbWVyRmlyZWRNZXNzYWdlID0gMDsKLXN0YXRpYyBIQU5ETEUgdGltZXJR
dWV1ZTsKLXN0YXRpYyBib29sIGhpZ2hSZXNUaW1lckFjdGl2ZTsKLXN0YXRpYyBib29sIHByb2Nl
c3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgPSBmYWxzZTsKLXN0YXRpYyBMT05HIHBlbmRpbmdUaW1l
cnM7Ci0KLWNvbnN0IGludCB0aW1lclJlc29sdXRpb24gPSAxOyAvLyBUbyBpbXByb3ZlIHRpbWVy
IHJlc29sdXRpb24sIHdlIGNhbGwgdGltZUJlZ2luUGVyaW9kL3RpbWVFbmRQZXJpb2Qgd2l0aCB0
aGlzIHZhbHVlIHRvIGluY3JlYXNlIHRpbWVyIHJlc29sdXRpb24gdG8gMW1zLgotY29uc3QgaW50
IGhpZ2hSZXNvbHV0aW9uVGhyZXNob2xkTXNlYyA9IDE2OyAvLyBPbmx5IGFjdGl2YXRlIGhpZ2gt
cmVzIHRpbWVyIGZvciBzdWItMTZtcyB0aW1lcnMgKFdpbmRvd3MgY2FuIGZpcmUgdGltZXJzIGF0
IDE2bXMgaW50ZXJ2YWxzIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHN5c3RlbSByZXNvbHV0aW9uKS4K
LWNvbnN0IGludCBzdG9wSGlnaFJlc1RpbWVySW5Nc2VjID0gMzAwOyAvLyBTdG9wIGhpZ2gtcmVz
IHRpbWVyIGFmdGVyIDAuMyBzZWNvbmRzIHRvIGxlc3NlbiBwb3dlciBjb25zdW1wdGlvbiAod2Ug
ZG9uJ3QgdXNlIGEgc21hbGxlciB0aW1lIHNpbmNlIG9zY2lsbGF0aW5nIGJldHdlZW4gaGlnaCBh
bmQgbG93IHJlc29sdXRpb24gYnJlYWtzIHRpbWVyIGFjY3VyYWN5IG9uIFhQKS4KLQotZW51bSB7
Ci0gICAgc2hhcmVkVGltZXJJRCA9IDEwMDAsCi0gICAgZW5kSGlnaFJlc1RpbWVySUQgPSAxMDAx
LAotfTsKLQotTFJFU1VMVCBDQUxMQkFDSyBUaW1lcldpbmRvd1duZFByb2MoSFdORCBoV25kLCBV
SU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCi17Ci0gICAgaWYgKG1l
c3NhZ2UgPT0gV01fVElNRVIpIHsKLSAgICAgICAgaWYgKHdQYXJhbSA9PSBzaGFyZWRUaW1lcklE
KSB7Ci0gICAgICAgICAgICBLaWxsVGltZXIodGltZXJXaW5kb3dIYW5kbGUsIHNoYXJlZFRpbWVy
SUQpOwotICAgICAgICAgICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKCk7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSBpZiAod1BhcmFtID09IGVuZEhpZ2hSZXNUaW1lcklEKSB7Ci0gICAgICAg
ICAgICBLaWxsVGltZXIodGltZXJXaW5kb3dIYW5kbGUsIGVuZEhpZ2hSZXNUaW1lcklEKTsKLSAg
ICAgICAgICAgIGhpZ2hSZXNUaW1lckFjdGl2ZSA9IGZhbHNlOwotICAgICAgICAgICAgdGltZUVu
ZFBlcmlvZCh0aW1lclJlc29sdXRpb24pOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChtZXNz
YWdlID09IHRpbWVyRmlyZWRNZXNzYWdlKSB7Ci0gICAgICAgIEludGVybG9ja2VkRXhjaGFuZ2Uo
JnBlbmRpbmdUaW1lcnMsIDApOwotICAgICAgICBwcm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdl
ID0gdHJ1ZTsKLSAgICAgICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKCk7Ci0gICAgICAgIHBy
b2Nlc3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgPSBmYWxzZTsKLSAgICB9IGVsc2UKLSAgICAgICAg
cmV0dXJuIERlZldpbmRvd1Byb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwotCi0g
ICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkIGluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldp
bmRvdygpCi17Ci0gICAgaWYgKHRpbWVyV2luZG93SGFuZGxlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBXTkRDTEFTU0VYIHdjZXg7Ci0gICAgbWVtc2V0KCZ3Y2V4LCAwLCBzaXplb2YoV05EQ0xB
U1NFWCkpOwotICAgIHdjZXguY2JTaXplID0gc2l6ZW9mKFdORENMQVNTRVgpOwotCi0gICAgd2Nl
eC5scGZuV25kUHJvYyAgICA9IFRpbWVyV2luZG93V25kUHJvYzsKLSAgICB3Y2V4LmhJbnN0YW5j
ZSAgICAgID0gV2ViQ29yZTo6aW5zdGFuY2VIYW5kbGUoKTsKLSAgICB3Y2V4Lmxwc3pDbGFzc05h
bWUgID0ga1RpbWVyV2luZG93Q2xhc3NOYW1lOwotICAgIFJlZ2lzdGVyQ2xhc3NFeCgmd2NleCk7
Ci0KLSAgICB0aW1lcldpbmRvd0hhbmRsZSA9IENyZWF0ZVdpbmRvdyhrVGltZXJXaW5kb3dDbGFz
c05hbWUsIDAsIDAsCi0gICAgICAgQ1dfVVNFREVGQVVMVCwgMCwgQ1dfVVNFREVGQVVMVCwgMCwg
SFdORF9NRVNTQUdFLCAwLCBXZWJDb3JlOjppbnN0YW5jZUhhbmRsZSgpLCAwKTsKLQotICAgIHRp
bWVyRmlyZWRNZXNzYWdlID0gUmVnaXN0ZXJXaW5kb3dNZXNzYWdlKEwiY29tLmFwcGxlLldlYktp
dC5UaW1lckZpcmVkIik7Ci19Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZv
aWQgKCpmKSgpKQotewotICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiA9IGY7Ci19Ci0KLXN0
YXRpYyB2b2lkIE5UQVBJIHF1ZXVlVGltZXJQcm9jKFBWT0lELCBCT09MRUFOKQotewotICAgIGlm
IChJbnRlcmxvY2tlZEluY3JlbWVudCgmcGVuZGluZ1RpbWVycykgPT0gMSkKLSAgICAgICAgUG9z
dE1lc3NhZ2UodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVyRmlyZWRNZXNzYWdlLCAwLCAwKTsKLX0K
LQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCi17Ci0g
ICAgQVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7Ci0KLSAgICB1bnNpZ25lZCBpbnRl
cnZhbEluTVM7Ci0gICAgaW50ZXJ2YWwgKj0gMTAwMDsKLSAgICBpZiAoaW50ZXJ2YWwgPiBVU0VS
X1RJTUVSX01BWElNVU0pCi0gICAgICAgIGludGVydmFsSW5NUyA9IFVTRVJfVElNRVJfTUFYSU1V
TTsKLSAgICBlbHNlCi0gICAgICAgIGludGVydmFsSW5NUyA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihpbnRlcnZhbCk7Ci0KLSAgICBpbml0aWFsaXplT2ZmU2NyZWVuVGltZXJXaW5kb3coKTsKLSAg
ICBib29sIHRpbWVyU2V0ID0gZmFsc2U7Ci0KLSAgICBpZiAoU2V0dGluZ3M6OnNob3VsZFVzZUhp
Z2hSZXNvbHV0aW9uVGltZXJzKCkpIHsKLSAgICAgICAgaWYgKGludGVydmFsIDwgaGlnaFJlc29s
dXRpb25UaHJlc2hvbGRNc2VjKSB7Ci0gICAgICAgICAgICBpZiAoIWhpZ2hSZXNUaW1lckFjdGl2
ZSkgewotICAgICAgICAgICAgICAgIGhpZ2hSZXNUaW1lckFjdGl2ZSA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgdGltZUJlZ2luUGVyaW9kKHRpbWVyUmVzb2x1dGlvbik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBTZXRUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgZW5kSGlnaFJlc1RpbWVy
SUQsIHN0b3BIaWdoUmVzVGltZXJJbk1zZWMsIDApOwotICAgICAgICB9Ci0KLSAgICAgICAgRFdP
UkQgcXVldWVTdGF0dXMgPSBMT1dPUkQoR2V0UXVldWVTdGF0dXMoUVNfUEFJTlQgfCBRU19NT1VT
RUJVVFRPTiB8IFFTX0tFWSB8IFFTX1JBV0lOUFVUKSk7Ci0KLSAgICAgICAgLy8gV2luMzIgaGFz
IGEgdHJpLWxldmVsIHF1ZXVlIHdpdGggYXBwbGljYXRpb24gbWVzc2FnZXMgPiB1c2VyIGlucHV0
ID4gV01fUEFJTlQvV01fVElNRVIuCi0KLSAgICAgICAgLy8gSWYgdGhlIHF1ZXVlIGRvZXNuJ3Qg
Y29udGFpbnMgaW5wdXQgZXZlbnRzLCB3ZSB1c2UgYSBoaWdoZXIgcHJpb3J0eSB0aW1lciBldmVu
dCBwb3N0aW5nIG1lY2hhbmlzbS4KLSAgICAgICAgaWYgKCEocXVldWVTdGF0dXMgJiAoUVNfTU9V
U0VCVVRUT04gfCBRU19LRVkgfCBRU19SQVdJTlBVVCkpKSB7Ci0gICAgICAgICAgICBpZiAoaW50
ZXJ2YWxJbk1TIDwgVVNFUl9USU1FUl9NSU5JTVVNICYmICFwcm9jZXNzaW5nQ3VzdG9tVGltZXJN
ZXNzYWdlICYmICEocXVldWVTdGF0dXMgJiBRU19QQUlOVCkpIHsKLSAgICAgICAgICAgICAgICAv
LyBDYWxsIFBvc3RNZXNzYWdlIGltbWVkaWF0ZWx5IGlmIHRoZSB0aW1lciBpcyBhbHJlYWR5IGV4
cGlyZWQsIHVubGVzcyBhIHBhaW50IGlzIHBlbmRpbmcuCi0gICAgICAgICAgICAgICAgLy8gKHdl
IHByaW9yaXRpemUgcGFpbnRzIG92ZXIgdGltZXJzKQotICAgICAgICAgICAgICAgIGlmIChJbnRl
cmxvY2tlZEluY3JlbWVudCgmcGVuZGluZ1RpbWVycykgPT0gMSkKLSAgICAgICAgICAgICAgICAg
ICAgUG9zdE1lc3NhZ2UodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVyRmlyZWRNZXNzYWdlLCAwLCAw
KTsKLSAgICAgICAgICAgICAgICB0aW1lclNldCA9IHRydWU7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgZGVsYXkgdGhlIFBvc3RNZXNzYWdlIHZp
YSBhIENyZWF0ZVRpbWVyUXVldWVUaW1lcgotICAgICAgICAgICAgICAgIGlmICghdGltZXJRdWV1
ZSkKLSAgICAgICAgICAgICAgICAgICAgdGltZXJRdWV1ZSA9IENyZWF0ZVRpbWVyUXVldWUoKTsK
LSAgICAgICAgICAgICAgICBpZiAodGltZXIpCi0gICAgICAgICAgICAgICAgICAgIERlbGV0ZVRp
bWVyUXVldWVUaW1lcih0aW1lclF1ZXVlLCB0aW1lciwgMCk7Ci0gICAgICAgICAgICAgICAgdGlt
ZXJTZXQgPSBDcmVhdGVUaW1lclF1ZXVlVGltZXIoJnRpbWVyLCB0aW1lclF1ZXVlLCBxdWV1ZVRp
bWVyUHJvYywgMCwgaW50ZXJ2YWxJbk1TLCAwLCBXVF9FWEVDVVRFSU5USU1FUlRIUkVBRCB8IFdU
X0VYRUNVVEVPTkxZT05DRSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBpZiAodGltZXJTZXQpIHsKLSAgICAgICAgaWYgKHRpbWVySUQpIHsKLSAgICAgICAgICAgIEtp
bGxUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJJRCk7Ci0gICAgICAgICAgICB0aW1lcklE
ID0gMDsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRpbWVySUQgPSBTZXRUaW1l
cih0aW1lcldpbmRvd0hhbmRsZSwgc2hhcmVkVGltZXJJRCwgaW50ZXJ2YWxJbk1TLCAwKTsKLSAg
ICAgICAgdGltZXIgPSAwOwotICAgIH0KLX0KLQotdm9pZCBzdG9wU2hhcmVkVGltZXIoKQotewot
ICAgIGlmICh0aW1lclF1ZXVlICYmIHRpbWVyKSB7Ci0gICAgICAgIERlbGV0ZVRpbWVyUXVldWVU
aW1lcih0aW1lclF1ZXVlLCB0aW1lciwgMCk7Ci0gICAgICAgIHRpbWVyID0gMDsKLSAgICB9Ci0K
LSAgICBpZiAodGltZXJJRCkgewotICAgICAgICBLaWxsVGltZXIodGltZXJXaW5kb3dIYW5kbGUs
IHRpbWVySUQpOwotICAgICAgICB0aW1lcklEID0gMDsKLSAgICB9Ci19Ci0KLXZvaWQgaW52YWxp
ZGF0ZVNoYXJlZFRpbWVyKCkKLXsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
UnVuTG9vcC5jcHAKaW5kZXggZTgxMjMwOC4uNjU5ZDA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgV29ya2VyU2hhcmVkVGltZXIgOiBwdWJsaWMgU2hhcmVkVGltZXIgewor
Y2xhc3MgV29ya2VyU2hhcmVkVGltZXIgZmluYWwgOiBwdWJsaWMgU2hhcmVkVGltZXIgewogcHVi
bGljOgogICAgIFdvcmtlclNoYXJlZFRpbWVyKCkKICAgICAgICAgOiBtX3NoYXJlZFRpbWVyRnVu
Y3Rpb24oMCkKQEAgLTUwLDE2ICs1MCwxNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gU2hh
cmVkVGltZXIgaW50ZXJmYWNlLgotICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHZv
aWQgKCpmdW5jdGlvbikoKSkgeyBtX3NoYXJlZFRpbWVyRnVuY3Rpb24gPSBmdW5jdGlvbjsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKSB7IG1fbmV4
dEZpcmVUaW1lID0gaW50ZXJ2YWwgKyBjdXJyZW50VGltZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHN0b3AoKSB7IG1fbmV4dEZpcmVUaW1lID0gMDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJl
ZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKSBvdmVycmlkZSB7IG1f
c2hhcmVkVGltZXJGdW5jdGlvbiA9IFdURjo6bW92ZShmdW5jdGlvbik7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0RmlyZUludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkgb3ZlcnJpZGUgeyBtX25leHRG
aXJlVGltZSA9IGludGVydmFsICsgY3VycmVudFRpbWUoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
dG9wKCkgb3ZlcnJpZGUgeyBtX25leHRGaXJlVGltZSA9IDA7IH0KIAogICAgIGJvb2wgaXNBY3Rp
dmUoKSB7IHJldHVybiBtX3NoYXJlZFRpbWVyRnVuY3Rpb24gJiYgbV9uZXh0RmlyZVRpbWU7IH0K
ICAgICBkb3VibGUgZmlyZVRpbWUoKSB7IHJldHVybiBtX25leHRGaXJlVGltZTsgfQogICAgIHZv
aWQgZmlyZSgpIHsgbV9zaGFyZWRUaW1lckZ1bmN0aW9uKCk7IH0KIAogcHJpdmF0ZToKLSAgICB2
b2lkICgqbV9zaGFyZWRUaW1lckZ1bmN0aW9uKSgpOworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiBtX3NoYXJlZFRpbWVyRnVuY3Rpb247CiAgICAgZG91YmxlIG1fbmV4dEZpcmVUaW1lOwogfTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264207</attachid>
            <date>2015-10-28 04:38:40 -0700</date>
            <delta_ts>2015-10-28 09:28:30 -0700</delta_ts>
            <desc>Try to fix win build</desc>
            <filename>wcore-shared-timer.diff</filename>
            <type>text/plain</type>
            <size>61587</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODFmZWE1OS4uOTNmZWEwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIxMTEsNiArMjExMSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9MaW5rSGFzaC5jcHAKICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmNwcAogICAgIHBsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuY3BwCisgICAgcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVy
LmNwcAogICAgIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKICAgICBwbGF0Zm9y
bS9Ob3RJbXBsZW1lbnRlZC5jcHAKICAgICBwbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDRkYTZmMWIuLjFmOTkwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAor
MjAxNS0xMC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
KyAgICAgICAgTWFrZSBldmVyeSBwb3J0IGltcGxlbWVudCBNYWluVGhyZWFkU2hhcmVkVGltZXIg
aW5zdGVhZCBvZiB1c2luZyBnbG9iYWwgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA0OTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIE1haW5UaHJlYWRTaGFyZWRUaW1lciB0byBp
dHMgb3duIGZpbGVzIGFuZCBhZGQgdGhlIGNvbW1vbgorICAgICAgICBpbXBsZW1lbnRhdGlvbiB0
aGVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgTWFpblRocmVhZFNoYXJlZFRp
bWVyLmNwcC4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogVXBkYXRlIGZpbGVuYW1lcy4K
KyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2hhcmVkVGltZXJFZmwuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpNYWluVGhyZWFkU2hhcmVkVGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlZEZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6ZmlyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsuY3BwLgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZFRpbWVyLmg6IFJlbW92ZSBNYWluVGhyZWFkU2hhcmVkVGltZXIKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gYW5kIHJlaW5kZW50IHRoZSBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkVGltZXI6OlNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVy
Ojp+U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXI6OmludmFsaWRh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRpbWVycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRUaW1lcnM6OlRocmVhZFRpbWVycyk6IFVzZSBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnNpbmdsZXRvbigpLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpzZXRTaGFy
ZWRUaW1lcik6IFVzZSBhIGxhbWJkYSBmdW5jdGlvbgorICAgICAgICBpbnN0ZWFkIG9mIGEgcG9p
bnRlciB0byBhIHN0YXRpYyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6
OnNoYXJlZFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZFRp
bWVycy5oOiBSZW1vdmVkIHVuc3VzZWQgc3RhdGljIG1ldGhvZCBzaGFyZWRUaW1lckZpcmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZFRpbWVyQ0YuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0dXBQb3dlck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6cmVzdGFydFNoYXJlZFRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2Vm
bC9NYWluVGhyZWFkU2hhcmVkVGltZXJFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnRp
bWVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVy
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0ay5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkVGltZXJHdGsu
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50
ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6VGltZXJXaW5kb3dXbmRQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6
OmluaXRpYWxpemVPZmZTY3JlZW5UaW1lcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpxdWV1
ZVRpbWVyUHJvYyk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNl
dEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkU2hhcmVkVGltZXI6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlk
YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOiBVcGRhdGUgV29ya2Vy
U2hhcmVkVGltZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24gdG8gdXNlIHN0ZDo6ZnVuY3Rpb24g
aW5zdGVhZCBvZiBhIHBvaW50ZXIuIEFsc28KKyAgICAgICAgbWFyayB0aGUgY2xhc3MgYXMgZmlu
YWwgYW5kIHRoZSB2aXJ0dWFsIGltcGxlbWVudGF0aW9ucyBhcyBvdmVycmlkZS4KKwogMjAxNS0x
MC0yNyAgSHVuc2VvcCBKZW9uZyAgPGhzODUuamVvbmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W0NhaXJvXSBJbmNvcnJlY3QgZGFzaGVkIGFuZCBkb3R0ZWQgYm9yZGVyIHBhaW50aW5nIGFmdGVy
IHIxNzc2ODYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDljYzExNTcuLjA0MTI3OTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMTMsMTMgKzExMywxMyBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9lZmwvTG9jYWxpemVkU3RyaW5nc0Vm
bC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvTG9nZ2luZ0VmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwv
TUlNRVR5cGVSZWdpc3RyeUVmbC5jcHAKKyAgICBwbGF0Zm9ybS9lZmwvTWFpblRocmVhZFNoYXJl
ZFRpbWVyRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcAogICAgIHBs
YXRmb3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZs
L1BsYXRmb3JtTW91c2VFdmVudEVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1TY3Jl
ZW5FZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAKICAg
ICBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwCi0gICAgcGxhdGZvcm0vZWZsL1No
YXJlZFRpbWVyRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9Tb3VuZEVmbC5jcHAKICAgICBwbGF0
Zm9ybS9lZmwvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAogICAgIHBsYXRmb3JtL2VmbC9XaWRnZXRF
ZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDkxOGVlNzcuLmI0ZWU4ZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xNjEsOCArMTYxLDggQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAogICAgIHBs
YXRmb3JtL2d0ay9Mb2dnaW5nR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9NSU1FVHlwZVJlZ2lz
dHJ5R3RrLmNwcAorICAgIHBsYXRmb3JtL2d0ay9NYWluVGhyZWFkU2hhcmVkVGltZXJHdGsuY3Bw
CiAgICAgcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKLSAgICBwbGF0Zm9ybS9ndGsv
U2hhcmVkVGltZXJHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5j
cHAKICAgICBwbGF0Zm9ybS9ndGsvVXNlckFnZW50R3RrLmNwcAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCmluZGV4IDk3MDQ4ODYuLmNlNjg0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CkBAIC0yNjMsMTAgKzI2MywxMCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBw
bGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVy
Q0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisgICAgcGxhdGZvcm0v
Y2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvTWVkaWFBY2Nl
c3NpYmlsaXR5U29mdExpbmsuY3BwCiAgICAgcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNw
cAogICAgIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAotICAgIHBsYXRmb3JtL2NmL1No
YXJlZFRpbWVyQ0YuY3BwCiAgICAgcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCiAKICAgICBwbGF0Zm9y
bS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bVdpbi5jbWFrZQppbmRleCAwMjExZjY4Li40ZWY4YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5j
bWFrZQpAQCAtMTI0LDYgKzEyNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9NZW1vcnlQcmVz
c3VyZUhhbmRsZXJXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCisgICAgcGxhdGZvcm0vd2luL01haW5UaHJlYWRTaGFyZWRUaW1lcldpbi5jcHAKICAgICBw
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGF0aFdhbGtl
ci5jcHAKICAgICBwbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcApAQCAtMTMz
LDcgKzEzNCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3dp
bi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKICAgICBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51
V2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCi0gICAgcGxhdGZv
cm0vd2luL1NoYXJlZFRpbWVyV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9Tb3VuZFdpbi5jcHAK
ICAgICBwbGF0Zm9ybS93aW4vU3RydWN0dXJlZEV4Y2VwdGlvbkhhbmRsZXJTdXBwcmVzc29yLmNw
cAogICAgIHBsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMxMWM1NjIuLjM3Y2VmYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE3MDYsNyArMTcwNiw2IEBACiAJCTQ2MjMzRUVFMUJBMEYxODcwMDBFQkVCQiAvKiBB
dHRyaWJ1dGVET01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2MjMzRUVEMUJBMEYxN0EwMDBFQkVCQiAvKiBBdHRyaWJ1dGVET01Ub2tl
bkxpc3QuaCAqLzsgfTsKIAkJNDYyMzNFRUYxQkEwRjE4QjAwMEVCRUJCIC8qIEF0dHJpYnV0ZURP
TVRva2VuTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NjIzM0VFQzFCQTBGMTdBMDAwRUJFQkIgLyogQXR0cmlidXRlRE9NVG9rZW5MaXN0LmNw
cCAqLzsgfTsKIAkJNDYzNDU5MkMxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2ZXJNYWMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNDU5
MkIxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuY3BwICovOyB9OwotCQk0NjM0
NTkyRTFBQzIyNzNDMDBFQ0I3MUMgLyogU2hhcmVkVGltZXJDRi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjM0NTkyRDFBQzIyNzNDMDBFQ0I3MUMg
LyogU2hhcmVkVGltZXJDRi5jcHAgKi87IH07CiAJCTQ2M0VCNjIyMUI4Nzg5RTAwMDk2RUQ1MSAv
KiBUYWdDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAq
LzsgfTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5
Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NjlCMjg3MUI4NTJBMEIw
MDBGOTA1RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMjc2OEUxQjg1Mjk3RjAwNUMy
NTU2IC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAgKi87IH07CkBAIC0yNjQ2
LDYgKzI2NDUsOSBAQAogCQk3QURFNzIyNjEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FERTcyMjUxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUUzMzVGMTFBQ0Iw
OUUyMDBFNDAxRUYgLyogV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRTMzNUVGMUFDQjA5RTIwMEU0MDFFRiAv
KiBXaGVlbEV2ZW50VGVzdFRyaWdnZXIuY3BwICovOyB9OwogCQk3QUUzMzVGMjFBQ0IwOUUyMDBF
NDAxRUYgLyogV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUUzMzVGMDFBQ0IwOUUyMDBFNDAxRUYgLyogV2hlZWxF
dmVudFRlc3RUcmlnZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJN0FFNkM5MzgxQkUwQzVDODAwRTE5RTAzIC8qIE1haW5UaHJlYWRTaGFyZWRU
aW1lckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBRTZDOTM3MUJFMEM1QzgwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAg
Ki87IH07CisJCTdBRTZDOTNCMUJFMEM2MDEwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGlt
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FF
NkM5MzkxQkUwQzYwMTAwRTE5RTAzIC8qIE1haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAgKi87IH07
CisJCTdBRTZDOTNDMUJFMEM2MDEwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRTZDOTNBMUJF
MEM2MDEwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXIuaCAqLzsgfTsKIAkJN0FGOUIy
MDIxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGQzE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRU
UmVnaW9uLmNwcCAqLzsgfTsKIAkJN0FGOUIyMDMxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIx
RkQxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5oICovOyB9OwogCQk3QUY5QjIwNTE4Q0ZC
MkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGRjE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVn
aW9uTGlzdC5jcHAgKi87IH07CkBAIC05MDY5LDcgKzkwNzEsNiBAQAogCQk0NjIzM0VFQzFCQTBG
MTdBMDAwRUJFQkIgLyogQXR0cmlidXRlRE9NVG9rZW5MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF0dHJpYnV0ZURPTVRva2VuTGlzdC5jcHA7IHBhdGggPSAu
Li9BdHRyaWJ1dGVET01Ub2tlbkxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjIzM0VFRDFCQTBGMTdBMDAwRUJFQkIgLyogQXR0cmlidXRlRE9NVG9rZW5MaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF0dHJpYnV0ZURPTVRva2VuTGlzdC5oOyBw
YXRoID0gLi4vQXR0cmlidXRlRE9NVG9rZW5MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjM0NTkyRDFBQzIyNzNDMDBFQ0I3MUMg
LyogU2hhcmVkVGltZXJDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaGFyZWRUaW1lckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRUI2
MjAxQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGFnQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhZ0NvbGxlY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUYxQUUxMjY3QkFFMTAwRThEMzgwIC8qIEZpbGVN
ZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlTWV0YWRhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMTEwLDYgKzEwMTExLDkgQEAKIAkJ
N0FERTcyMjUxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE1lbnVQcm92aWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QUUzMzVFRjFBQ0IwOUUyMDBFNDAxRUYgLyogV2hlZWxF
dmVudFRlc3RUcmlnZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdoZWVsRXZlbnRUZXN0VHJpZ2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBRTMzNUYwMUFDQjA5RTIwMEU0MDFFRiAvKiBXaGVlbEV2ZW50VGVzdFRyaWdnZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBRTZDOTM3MUJFMEM1QzgwMEUxOUUwMyAvKiBN
YWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdBRTZDOTM5MUJFMEM2MDEwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGlt
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFpblRocmVhZFNo
YXJlZFRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FFNkM5M0ExQkUw
QzYwMTAwRTE5RTAzIC8qIE1haW5UaHJlYWRTaGFyZWRUaW1lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNYWluVGhyZWFkU2hhcmVkVGltZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0FGOUIxRkMxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWVFRSZWdpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUY5QjFGRDE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRU
UmVnaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZUVFJlZ2lvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUY5QjFGRTE4Q0ZCMkRGMDBDNjRCRUYgLyog
VlRUUmVnaW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWVFRSZWdpb24uaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3NjgsNiArMTU3NzIsNyBAQAogCQkxQUU0MkY2
NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTdBRTZDOTM3MUJFMEM1QzgwMEUxOUUwMyAvKiBNYWluVGhyZWFkU2hh
cmVkVGltZXJDRi5jcHAgKi8sCiAJCQkJRTFBOEU1NjQxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJM
RXh0cmFzLmNwcCAqLywKIAkJCQlFMUE4RTU2NTE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRy
YXMuaCAqLywKIAkJCQk0NDM4MTdGRDFBOTFCMkY4MDA2RTA0RjIgLyogQ29yZU1lZGlhU29mdExp
bmsuY3BwICovLApAQCAtMTU3ODIsNyArMTU3ODcsNiBAQAogCQkJCTJENzZCQjgzMTk0NTZGODEw
MENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuY3BwICovLAogCQkJCTJENzZCQjgwMTk0NTYzMjQw
MENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuaCAqLywKIAkJCQk1MTJERDhFMjBEOTFFMkI0MDAw
Rjg5RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwICovLAotCQkJCTQ2MzQ1OTJEMUFDMjI3M0MwMEVD
QjcxQyAvKiBTaGFyZWRUaW1lckNGLmNwcCAqLywKIAkJCQkxQTk4OTU2QTBBQTc4RjgwMDA1RUY1
RUYgLyogVVJMQ0YuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjZjsKQEAgLTIyMzcwLDYgKzIy
Mzc0LDggQEAKIAkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3QUU2QzkzOTFCRTBDNjAx
MDBFMTlFMDMgLyogTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcCAqLywKKwkJCQk3QUU2QzkzQTFC
RTBDNjAxMDBFMTlFMDMgLyogTWFpblRocmVhZFNoYXJlZFRpbWVyLmggKi8sCiAJCQkJNDlFOTEy
QTQwRUZBQzhFNjAwOUQwQ0FGIC8qIGFuaW1hdGlvbiAqLywKIAkJCQlGRDMxNjA0MDEyQjAyNkEz
MDBDMUEzNTkgLyogYXVkaW8gKi8sCiAJCQkJMUFFNDJGNjcwQUE0QjhDQjAwQzg2MTJEIC8qIGNm
ICovLApAQCAtMjc4NTksNiArMjc4NjUsNyBAQAogCQkJCUFBQTcyOEY3MTZEMUQ4QkMwMEQzQkJD
NiAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQUE0NzhBN0YxNkNENzBDMzAwN0QxQkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDNFRjQ0ODE5MTc5MTVDMDAwMzQxODQgLyog
V2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
QUU2QzkzQzFCRTBDNjAxMDBFMTlFMDMgLyogTWFpblRocmVhZFNoYXJlZFRpbWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwN0Q2Mzc0MDFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QTdBQTQzMTMyRjBFQ0MwMEQz
QTNDMiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU2QzVCOUIx
ODlGMzQ1NzAwODJEMTNDIC8qIFdlYkNvbnNvbGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
OTI1OSw2ICsyOTI2Niw3IEBACiAJCQkJMDc3OUJGMEQxODQ1MzE2ODAwMEI2QUU3IC8qIEhUTUxN
ZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBNzlGODBB
MTkxNkRGMDBBOEVGNUYgLyogSFRNTE1lbnVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJCRThFMkM5MTJBNThBMDEwMEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJN0FFNkM5MzgxQkUwQzVDODAwRTE5RTAzIC8qIE1haW5UaHJlYWRT
aGFyZWRUaW1lckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFEQzI3MEExNTIwNTcwMEIx
MkE2OCAvKiBIVE1MTWV0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTQ1NDQyNEEx
MTlCMzY2MTAwOUJFOTEyIC8qIEhUTUxNZXRlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThDRkY3QTkwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxNb2RFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzA4MDQsNyArMzA4MTIsNiBAQAogCQkJCTUxMkREOEUzMEQ5MUUyQjQwMDBG
ODlFRSAvKiBTaGFyZWRCdWZmZXJDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0IxRjAyRTEz
QjAyNUNBMDBGNTEwM0YgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE0QTk1NTIwQjRFRENGRjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlck1hYy5tbSBp
biBTb3VyY2VzICovLAotCQkJCTQ2MzQ1OTJFMUFDMjI3M0MwMEVDQjcxQyAvKiBTaGFyZWRUaW1l
ckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE2M0U4OEY3MTE4QTM5RDIwMEVEOTIzMSAvKiBT
aW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0ODk0NEEyMTgw
QjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTU4NUQ2RTAzMUExQTc5MkUwMEZBNEYxMiAvKiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRz
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEzNzEsNiArMzEzNzgsNyBAQAogCQkJCUJDODI0M0U4
MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5kb3dGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3RTk5QUY1MTBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkJEMTg3RjY0QjQwMERBNjNBNiAvKiBXS0Nv
bnRlbnRPYnNlcnZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QUU2QzkzQjFCRTBDNjAx
MDBFMTlFMDMgLyogTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUExNDgzMkMwMTg3RjY1NjYwMERBNjNBNiAvKiBXS0dyYXBoaWNzLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTE0ODMyQzIxODdGNjVDNzAwREE2M0E2IC8qIFdLVXRpbGl0aWVzLmMgaW4gU291cmNl
cyAqLywKIAkJCQlBMTQ4MzJDNTE4N0Y2NjgzMDBEQTYzQTYgLyogV0tWaWV3Lm1tIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hh
cmVkVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRp
bWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2YxN2M2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRp
bWVyLmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWluVGhyZWFkU2hhcmVkVGltZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitNYWluVGhyZWFkU2hhcmVkVGltZXImIE1haW5UaHJlYWRTaGFy
ZWRUaW1lcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWFpblRo
cmVhZFNoYXJlZFRpbWVyPiBpbnN0YW5jZTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK01h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6TWFpblRocmVhZFNoYXJlZFRpbWVyKCkKK3sKK30KKwordm9p
ZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZpcmVkRnVuY3Rpb24oc3RkOjpmdW5jdGlvbjx2
b2lkKCk+JiYgZmlyZWRGdW5jdGlvbikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9maXJlZEZ1
bmN0aW9uIHx8ICFmaXJlZEZ1bmN0aW9uKTsKKyAgICBtX2ZpcmVkRnVuY3Rpb24gPSBXVEY6Om1v
dmUoZmlyZWRGdW5jdGlvbik7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpmaXJl
ZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlvbik7CisgICAgbV9maXJlZEZ1
bmN0aW9uKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNDE0NjFjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1haW5UaHJlYWRTaGFyZWRUaW1lcl9oCisjZGVm
aW5lIE1haW5UaHJlYWRTaGFyZWRUaW1lcl9oCisKKyNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgor
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1haW5UaHJlYWRTaGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBTaGFyZWRUaW1lciB7
CisgICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8TWFpblRocmVhZFNoYXJlZFRp
bWVyPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTWFpblRocmVhZFNoYXJlZFRpbWVyJiBzaW5nbGV0
b24oKTsKKworICAgIHZvaWQgc2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4m
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlKSBvdmVycmlkZTsK
KyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAgICB2b2lkIGludmFsaWRhdGUoKSBvdmVycmlk
ZTsKKworICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBwcml2YXRlLCBidXQgQ0YgYW5kIFdp
bmRvd3MgaW1wbGVtZW50YXRpb25zCisgICAgLy8gbmVlZCB0byBjYWxsIHRoaXMgZnJvbSBzdGF0
aWMgbWV0aG9kcyBhdCB0aGUgbW9tZW50LgorICAgIHZvaWQgZmlyZWQoKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBNYWluVGhyZWFkU2hhcmVkVGltZXIoKTsKKworICAgIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBtX2ZpcmVkRnVuY3Rpb24geyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBNYWluVGhyZWFkU2hhcmVkVGltZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRUaW1lci5oCmluZGV4IDI5OWM0OTkuLmNhYzFiOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFRpbWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkVGltZXIuaApAQCAtMjYsNTkgKzI2LDI4IEBACiAjaWZuZGVmIFNo
YXJlZFRpbWVyX2gKICNkZWZpbmUgU2hhcmVkVGltZXJfaAogCisjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICAvLyBFYWNoIHRocmVhZCBoYXMgaXRz
IG93biBzaW5nbGUgaW5zdGFuY2Ugb2Ygc2hhcmVkIHRpbWVyLCB3aGljaCBpbXBsZW1lbnRzIHRo
aXMgaW50ZXJmYWNlLgotICAgIC8vIFRoaXMgaW5zdGFuY2UgaXMgc2hhcmVkIGJ5IGFsbCB0aW1l
cnMgaW4gdGhlIHRocmVhZC4KLSAgICAvLyBOb3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3Rs
eTsgdXNlIHRoZSBUaW1lciBjbGFzcyBpbnN0ZWFkLgotICAgIGNsYXNzIFNoYXJlZFRpbWVyIHsK
LSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhcmVkVGltZXIpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNoYXJlZFRpbWVyKCkgeyB9Ci0gICAg
ICAgIHZpcnR1YWwgflNoYXJlZFRpbWVyKCkge30KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldEZp
cmVkRnVuY3Rpb24odm9pZCAoKikoKSkgPSAwOwotCi0gICAgICAgIC8vIFRoZSBmaXJlIGludGVy
dmFsIGlzIGluIHNlY29uZHMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgbW9ub3RvbmljIGNsb2Nr
IHRpbWUuCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlKSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwotCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlKCkgeyB9Ci0gICAgfTsKLQotCi0gICAgLy8gSW1wbGVtZW50ZWQgYnkgcG9y
dCAoc2luY2UgaXQgcHJvdmlkZXMgdGhlIHJ1biBsb29wIGZvciB0aGUgbWFpbiB0aHJlYWQpLgot
ICAgIC8vIEZJWE1FOiBtYWtlIHBvcnRzIGltcGxlbWVudCBNYWluVGhyZWFkU2hhcmVkVGltZXIg
ZGlyZWN0bHkgaW5zdGVhZC4KLSAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2
b2lkICgqKSgpKTsKLSAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKGRvdWJsZSk7
Ci0gICAgdm9pZCBzdG9wU2hhcmVkVGltZXIoKTsKLSAgICB2b2lkIGludmFsaWRhdGVTaGFyZWRU
aW1lcigpOwotCi0gICAgLy8gSW1wbGVtZW50YXRpb24gb2YgU2hhcmVkVGltZXIgZm9yIHRoZSBt
YWluIHRocmVhZC4KLSAgICBjbGFzcyBNYWluVGhyZWFkU2hhcmVkVGltZXIgZmluYWwgOiBwdWJs
aWMgU2hhcmVkVGltZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgdm9pZCBzZXRGaXJlZEZ1bmN0
aW9uKHZvaWQgKCpmdW5jdGlvbikoKSkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAg
c2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKGZ1bmN0aW9uKTsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKSBvdmVycmlk
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChpbnRl
cnZhbCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRl
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0b3BTaGFyZWRUaW1lcigpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAg
ICAgaW52YWxpZGF0ZVNoYXJlZFRpbWVyKCk7Ci0gICAgICAgIH0KLSAgICB9OworLy8gRWFjaCB0
aHJlYWQgaGFzIGl0cyBvd24gc2luZ2xlIGluc3RhbmNlIG9mIHNoYXJlZCB0aW1lciwgd2hpY2gg
aW1wbGVtZW50cyB0aGlzIGludGVyZmFjZS4KKy8vIFRoaXMgaW5zdGFuY2UgaXMgc2hhcmVkIGJ5
IGFsbCB0aW1lcnMgaW4gdGhlIHRocmVhZC4KKy8vIE5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRp
cmVjdGx5OyB1c2UgdGhlIFRpbWVyIGNsYXNzIGluc3RlYWQuCitjbGFzcyBTaGFyZWRUaW1lciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhcmVkVGltZXIpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRUaW1lcigpIHsgfQorICAgIHZpcnR1YWwgflNo
YXJlZFRpbWVyKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldEZpcmVkRnVuY3Rpb24oc3RkOjpm
dW5jdGlvbjx2b2lkKCk+JiYpID0gMDsKKworICAgIC8vIFRoZSBmaXJlIGludGVydmFsIGlzIGlu
IHNlY29uZHMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgbW9ub3RvbmljIGNsb2NrIHRpbWUuCisg
ICAgdmlydHVhbCB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3VibGUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgeyB9Cit9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJl
YWRUaW1lcnMuY3BwCmluZGV4IDEyMzFjYTIuLjAyMjgzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGhyZWFkVGltZXJzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlRocmVhZFRpbWVycy5oIgogCisjaW5jbHVkZSAiTWFpblRocmVhZFNo
YXJlZFRpbWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkVGltZXIuaCIKICNpbmNsdWRlICJUaHJlYWRH
bG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTQ3LDI3ICs0OCwyMSBAQCBzdGF0
aWMgY29uc3QgZG91YmxlIG1heER1cmF0aW9uT2ZGaXJpbmdUaW1lcnMgPSAwLjA1MDsKIC8vIFRp
bWVycyBhcmUgY3JlYXRlZCwgc3RhcnRlZCBhbmQgZmlyZWQgb24gdGhlIHNhbWUgdGhyZWFkLCBh
bmQgZWFjaCB0aHJlYWQgaGFzIGl0cyBvd24gVGhyZWFkVGltZXJzCiAvLyBjb3B5IHRvIGtlZXAg
dGhlIGhlYXAgYW5kIGEgc2V0IG9mIGN1cnJlbnRseSBmaXJpbmcgdGltZXJzLgogCi1zdGF0aWMg
TWFpblRocmVhZFNoYXJlZFRpbWVyKiBtYWluVGhyZWFkU2hhcmVkVGltZXIoKQotewotICAgIHN0
YXRpYyBNYWluVGhyZWFkU2hhcmVkVGltZXIqIHRpbWVyID0gbmV3IE1haW5UaHJlYWRTaGFyZWRU
aW1lcjsKLSAgICByZXR1cm4gdGltZXI7Ci19Ci0KIFRocmVhZFRpbWVyczo6VGhyZWFkVGltZXJz
KCkKICAgICA6IG1fc2hhcmVkVGltZXIoMCkKICAgICAsIG1fZmlyaW5nVGltZXJzKGZhbHNlKQog
ICAgICwgbV9wZW5kaW5nU2hhcmVkVGltZXJGaXJlVGltZSgwKQogewogICAgIGlmIChpc1VJVGhy
ZWFkKCkpCi0gICAgICAgIHNldFNoYXJlZFRpbWVyKG1haW5UaHJlYWRTaGFyZWRUaW1lcigpKTsK
KyAgICAgICAgc2V0U2hhcmVkVGltZXIoJk1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2luZ2xldG9u
KCkpOwogfQogCiAvLyBBIHdvcmtlciB0aHJlYWQgbWF5IGluaXRpYWxpemUgU2hhcmVkVGltZXIg
YWZ0ZXIgc29tZSB0aW1lcnMgYXJlIGNyZWF0ZWQuCi0vLyBBbHNvLCBTaGFyZWRUaW1lciBjYW4g
YmUgcmVwbGFjZWQgd2l0aCAwIGJlZm9yZSBhbGwgdGltZXJzIGFyZSBkZXN0cm95ZWQuCisvLyBB
bHNvLCBTaGFyZWRUaW1lciBjYW4gYmUgcmVwbGFjZWQgd2l0aCBudWxscHRyIGJlZm9yZSBhbGwg
dGltZXJzIGFyZSBkZXN0cm95ZWQuCiB2b2lkIFRocmVhZFRpbWVyczo6c2V0U2hhcmVkVGltZXIo
U2hhcmVkVGltZXIqIHNoYXJlZFRpbWVyKQogewogICAgIGlmIChtX3NoYXJlZFRpbWVyKSB7Ci0g
ICAgICAgIG1fc2hhcmVkVGltZXItPnNldEZpcmVkRnVuY3Rpb24oMCk7CisgICAgICAgIG1fc2hh
cmVkVGltZXItPnNldEZpcmVkRnVuY3Rpb24obnVsbHB0cik7CiAgICAgICAgIG1fc2hhcmVkVGlt
ZXItPnN0b3AoKTsKICAgICAgICAgbV9wZW5kaW5nU2hhcmVkVGltZXJGaXJlVGltZSA9IDA7CiAg
ICAgfQpAQCAtNzUsNyArNzAsNyBAQCB2b2lkIFRocmVhZFRpbWVyczo6c2V0U2hhcmVkVGltZXIo
U2hhcmVkVGltZXIqIHNoYXJlZFRpbWVyKQogICAgIG1fc2hhcmVkVGltZXIgPSBzaGFyZWRUaW1l
cjsKICAgICAKICAgICBpZiAoc2hhcmVkVGltZXIpIHsKLSAgICAgICAgbV9zaGFyZWRUaW1lci0+
c2V0RmlyZWRGdW5jdGlvbihUaHJlYWRUaW1lcnM6OnNoYXJlZFRpbWVyRmlyZWQpOworICAgICAg
ICBtX3NoYXJlZFRpbWVyLT5zZXRGaXJlZEZ1bmN0aW9uKFtdIHsgdGhyZWFkR2xvYmFsRGF0YSgp
LnRocmVhZFRpbWVycygpLnNoYXJlZFRpbWVyRmlyZWRJbnRlcm5hbCgpOyB9KTsKICAgICAgICAg
dXBkYXRlU2hhcmVkVGltZXIoKTsKICAgICB9CiB9CkBAIC0xMDEsMTIgKzk2LDYgQEAgdm9pZCBU
aHJlYWRUaW1lcnM6OnVwZGF0ZVNoYXJlZFRpbWVyKCkKICAgICB9CiB9CiAKLXZvaWQgVGhyZWFk
VGltZXJzOjpzaGFyZWRUaW1lckZpcmVkKCkKLXsKLSAgICAvLyBSZWRpcmVjdCB0byBub24tc3Rh
dGljIG1ldGhvZC4KLSAgICB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkuc2hhcmVk
VGltZXJGaXJlZEludGVybmFsKCk7Ci19Ci0KIHZvaWQgVGhyZWFkVGltZXJzOjpzaGFyZWRUaW1l
ckZpcmVkSW50ZXJuYWwoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSB8fCAoIWlzV2Vi
VGhyZWFkKCkgJiYgIWlzVUlUaHJlYWQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGhyZWFkVGltZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRU
aW1lcnMuaAppbmRleCAxNWQ5ZjM3Li5lNGYyNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aHJlYWRUaW1lcnMuaApAQCAtNTEsOCArNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBzdGF0aWMgdm9pZCBzaGFyZWRUaW1lckZpcmVkKCk7Ci0KICAgICAgICAgdm9pZCBz
aGFyZWRUaW1lckZpcmVkSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBmaXJlVGltZXJzSW5OZXN0
ZWRFdmVudExvb3BJbnRlcm5hbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZGE2MjQ3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcApAQCAtMCwwICsxLDEyNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTWFpblRocmVhZFNoYXJlZFRpbWVyLmgi
CisKKyNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CisKKyNpZiBQTEFURk9STShNQUMp
CisjaW1wb3J0ICJQb3dlck9ic2VydmVyTWFjLmgiCisjZWxpZiBQTEFURk9STShJT1MpCisjaW1w
b3J0ICJXZWJDb3JlVGhyZWFkLmgiCisjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgiCisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgQ0ZSdW5Mb29wVGltZXJSZWYgc2hh
cmVkVGltZXI7CitzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lk
Kik7CitzdGF0aWMgdm9pZCByZXN0YXJ0U2hhcmVkVGltZXIoKTsKKworc3RhdGljIGNvbnN0IENG
VGltZUludGVydmFsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPENGVGltZUludGVydmFsPjo6bWF4KCk7CisKKyNpZiBQTEFURk9STShJT1MpCitzdGF0
aWMgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZShDRk5vdGlmaWNhdGlvbkNlbnRlclJl
Ziwgdm9pZCosIENGU3RyaW5nUmVmLCBjb25zdCB2b2lkKiwgQ0ZEaWN0aW9uYXJ5UmVmKQorewor
ICAgIFdlYlRocmVhZFJ1biheeworICAgICAgICByZXN0YXJ0U2hhcmVkVGltZXIoKTsKKyAgICB9
KTsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBzZXR1cFBvd2VyT2JzZXJ2ZXIoKQoreworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgUG93ZXJPYnNlcnZlciogcG93ZXJPYnNlcnZlcjsK
KyAgICBpZiAoIXBvd2VyT2JzZXJ2ZXIpCisgICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBvd2VyT2JzZXJ2ZXI+KHJlc3RhcnRTaGFyZWRUaW1lcikucmVsZWFzZSgpOwor
I2VsaWYgUExBVEZPUk0oSU9TKQorICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWRGb3JBcHBsaWNh
dGlvbk5vdGlmaWNhdGlvbiA9IGZhbHNlOworICAgIGlmICghcmVnaXN0ZXJlZEZvckFwcGxpY2F0
aW9uTm90aWZpY2F0aW9uKSB7CisgICAgICAgIHJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlm
aWNhdGlvbiA9IHRydWU7CisgICAgICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIG5vdGlmaWNh
dGlvbkNlbnRlciA9IENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKKyAgICAg
ICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihub3RpZmljYXRpb25DZW50ZXIsIG51
bGxwdHIsIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlLCBDRlNUUigiVUlBcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiIpLCBudWxscHRyLCBDRk5vdGlmaWNhdGlvblN1c3Bl
bnNpb25CZWhhdmlvckNvYWxlc2NlKTsKKyAgICB9CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQg
dGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopCit7CisgICAgQXV0b2RyYWluZWRQ
b29sIHBvb2w7CisgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKS5maXJlZCgp
OworfQorCitzdGF0aWMgdm9pZCByZXN0YXJ0U2hhcmVkVGltZXIoKQoreworICAgIGlmICghc2hh
cmVkVGltZXIpCisgICAgICAgIHJldHVybjsKKworICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6
c2luZ2xldG9uKCkuc3RvcCgpOworICAgIHRpbWVyRmlyZWQoMCwgMCk7Cit9CisKK3ZvaWQgTWFp
blRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKK3sKKyAgICBpZiAoIXNoYXJlZFRpbWVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUoc2hhcmVk
VGltZXIpOworICAgIENGUmVsZWFzZShzaGFyZWRUaW1lcik7CisgICAgc2hhcmVkVGltZXIgPSBu
dWxscHRyOworfQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFs
KGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAgICBBU1NFUlQobV9maXJlZEZ1bmN0aW9uKTsKKworICAg
IENGQWJzb2x1dGVUaW1lIGZpcmVEYXRlID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBp
bnRlcnZhbDsKKyAgICBpZiAoIXNoYXJlZFRpbWVyKSB7CisgICAgICAgIHNoYXJlZFRpbWVyID0g
Q0ZSdW5Mb29wVGltZXJDcmVhdGUobnVsbHB0ciwgZmlyZURhdGUsIGtDRlRpbWVJbnRlcnZhbERp
c3RhbnRGdXR1cmUsIDAsIDAsIHRpbWVyRmlyZWQsIG51bGxwdHIpOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoV2ViVGhyZWFkUnVuTG9vcCgpLCBzaGFyZWRU
aW1lciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyNlbHNlCisgICAgICAgIENGUnVuTG9vcEFk
ZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgc2hhcmVkVGltZXIsIGtDRlJ1bkxvb3BDb21t
b25Nb2Rlcyk7CisjZW5kaWYKKworICAgICAgICBzZXR1cFBvd2VyT2JzZXJ2ZXIoKTsKKworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUo
c2hhcmVkVGltZXIsIGZpcmVEYXRlKTsKK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6
OnN0b3AoKQoreworICAgIGlmICghc2hhcmVkVGltZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyLCBrQ0ZUaW1lSW50ZXJ2
YWxEaXN0YW50RnV0dXJlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkVGltZXJDRi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRUaW1lckNGLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNmZkNzA3Yi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9TaGFyZWRUaW1lckNGLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJTaGFyZWRUaW1lci5oIgotCi0jaW5jbHVkZSA8
d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgotCi0jaWYgUExBVEZPUk0oTUFDKQotI2ltcG9ydCAiUG93
ZXJPYnNlcnZlck1hYy5oIgotI2VsaWYgUExBVEZPUk0oSU9TKQotI2ltcG9ydCAiV2ViQ29yZVRo
cmVhZC5oIgotI2ltcG9ydCAiV2ViQ29yZVRocmVhZFJ1bi5oIgotI2VuZGlmCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RhdGljIENGUnVuTG9vcFRpbWVyUmVmIHNoYXJlZFRpbWVyOwotc3Rh
dGljIHZvaWQgKCpzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pKCk7Ci1zdGF0aWMgdm9pZCB0aW1l
ckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKik7Ci1zdGF0aWMgdm9pZCByZXN0YXJ0U2hh
cmVkVGltZXIoKTsKLQotc3RhdGljIGNvbnN0IENGVGltZUludGVydmFsIGtDRlRpbWVJbnRlcnZh
bERpc3RhbnRGdXR1cmUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPENGVGltZUludGVydmFsPjo6bWF4
KCk7Ci0KLSNpZiBQTEFURk9STShJT1MpCi1zdGF0aWMgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZShDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCosIENGU3RyaW5nUmVmLCBjb25z
dCB2b2lkKiwgQ0ZEaWN0aW9uYXJ5UmVmKQotewotICAgIFdlYlRocmVhZFJ1biheewotICAgICAg
ICByZXN0YXJ0U2hhcmVkVGltZXIoKTsKLSAgICB9KTsKLX0KLSNlbmRpZgotCi1zdGF0aWMgdm9p
ZCBzZXR1cFBvd2VyT2JzZXJ2ZXIoKQotewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMg
UG93ZXJPYnNlcnZlciogcG93ZXJPYnNlcnZlcjsKLSAgICBpZiAoIXBvd2VyT2JzZXJ2ZXIpCi0g
ICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvd2VyT2JzZXJ2ZXI+KHJl
c3RhcnRTaGFyZWRUaW1lcikucmVsZWFzZSgpOwotI2VsaWYgUExBVEZPUk0oSU9TKQotICAgIHN0
YXRpYyBib29sIHJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IGZhbHNlOwot
ICAgIGlmICghcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSB7Ci0gICAgICAg
IHJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IHRydWU7Ci0gICAgICAgIENG
Tm90aWZpY2F0aW9uQ2VudGVyUmVmIG5vdGlmaWNhdGlvbkNlbnRlciA9IENGTm90aWZpY2F0aW9u
Q2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKLSAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRP
YnNlcnZlcihub3RpZmljYXRpb25DZW50ZXIsIG51bGxwdHIsIGFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlLCBDRlNUUigiVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiIp
LCBudWxscHRyLCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckNvYWxlc2NlKTsKLSAg
ICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAo
KmYpKCkpCi17Ci0gICAgQVNTRVJUKCFzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24gfHwgc2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uID09IGYpOwotCi0gICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9u
ID0gZjsKLX0KLQotc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9p
ZCopCi17Ci0gICAgQXV0b2RyYWluZWRQb29sIHBvb2w7Ci0gICAgc2hhcmVkVGltZXJGaXJlZEZ1
bmN0aW9uKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlc3RhcnRTaGFyZWRUaW1lcigpCi17Ci0gICAg
aWYgKCFzaGFyZWRUaW1lcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RvcFNoYXJlZFRpbWVy
KCk7Ci0gICAgdGltZXJGaXJlZCgwLCAwKTsKLX0KLQotdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGlt
ZXIoKQotewotICAgIGlmICghc2hhcmVkVGltZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIENG
UnVuTG9vcFRpbWVySW52YWxpZGF0ZShzaGFyZWRUaW1lcik7Ci0gICAgQ0ZSZWxlYXNlKHNoYXJl
ZFRpbWVyKTsKLSAgICBzaGFyZWRUaW1lciA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgc2V0U2hhcmVk
VGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQotewotICAgIEFTU0VSVChzaGFyZWRU
aW1lckZpcmVkRnVuY3Rpb24pOwotCi0gICAgQ0ZBYnNvbHV0ZVRpbWUgZmlyZURhdGUgPSBDRkFi
c29sdXRlVGltZUdldEN1cnJlbnQoKSArIGludGVydmFsOwotICAgIGlmICghc2hhcmVkVGltZXIp
IHsKLSAgICAgICAgc2hhcmVkVGltZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0ZShudWxscHRyLCBm
aXJlRGF0ZSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSwgMCwgMCwgdGltZXJGaXJlZCwg
bnVsbHB0cik7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihX
ZWJUaHJlYWRSdW5Mb29wKCksIHNoYXJlZFRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwot
I2Vsc2UKLSAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBz
aGFyZWRUaW1lciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSNlbmRpZgotCi0gICAgICAgIHNl
dHVwUG93ZXJPYnNlcnZlcigpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDRlJ1
bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwgZmlyZURhdGUpOwotfQotCi12
b2lkIHN0b3BTaGFyZWRUaW1lcigpCi17Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIs
IGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTWFpblRocmVhZFNo
YXJlZFRpbWVyRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9NYWluVGhyZWFk
U2hhcmVkVGltZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5
MDZjMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTWFp
blRocmVhZFNoYXJlZFRpbWVyRWZsLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuCisgKiAgICAgICAgICAgKEMp
IDIwMDggQWZvbnNvIFJhYmVsbyBDb3N0YSBKci4KKyAqICAgICAgICAgICAoQykgMjAwOS0yMDEw
IFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgKiAgICAgICAgICAgKEMpIDIwMDktMjAxMCBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWluVGhyZWFkU2hhcmVkVGlt
ZXIuaCIKKworI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
KyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBFY29yZV9UaW1lciogc2hhcmVkVGlt
ZXI7CisKK3N0YXRpYyBFaW5hX0Jvb2wgdGltZXJFdmVudCh2b2lkKikKK3sKKyAgICBzaGFyZWRU
aW1lciA9IG51bGxwdHI7CisgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKS5m
aXJlZCgpOworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7Cit9CisKK3ZvaWQgTWFp
blRocmVhZFNoYXJlZFRpbWVyOjpzdG9wKCkKK3sKKyAgICBpZiAoc2hhcmVkVGltZXIpIHsKKyAg
ICAgICAgZWNvcmVfdGltZXJfZGVsKHNoYXJlZFRpbWVyKTsKKyAgICAgICAgc2hhcmVkVGltZXIg
PSBudWxscHRyOworICAgIH0KK30KKwordm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNldEZp
cmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgc3RvcCgpOworICAgIHNoYXJlZFRp
bWVyID0gZWNvcmVfdGltZXJfbG9vcF9hZGQoaW50ZXJ2YWwsIHRpbWVyRXZlbnQsIG51bGxwdHIp
OworfQorCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgpCit7Cit9CisK
K30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVy
RWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TaGFyZWRUaW1lckVmbC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwYmEwMzYuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1NoYXJlZFRpbWVyRWZsLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4KLSAqICAgICAgICAgICAoQykgMjAwOCBBZm9uc28gUmFiZWxvIENvc3Rh
IEpyLgotICogICAgICAgICAgIChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3Rl
bXMKLSAqICAgICAgICAgICAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlNoYXJlZFRpbWVyLmgiCi0KLSNpbmNsdWRlIDxFY29yZS5oPgotI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMg
RWNvcmVfVGltZXIgKl9zaGFyZWRUaW1lciA9IDA7Ci0KLXN0YXRpYyB2b2lkICgqX3RpbWVyRnVu
Y3Rpb24pKCk7Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmdW5j
KSgpKQotewotICAgIF90aW1lckZ1bmN0aW9uID0gZnVuYzsKLX0KLQotc3RhdGljIEVpbmFfQm9v
bCB0aW1lckV2ZW50KHZvaWQqKQotewotICAgIF9zaGFyZWRUaW1lciA9IDA7Ci0gICAgaWYgKF90
aW1lckZ1bmN0aW9uKQotICAgICAgICBfdGltZXJGdW5jdGlvbigpOwotCi0gICAgcmV0dXJuIEVD
T1JFX0NBTExCQUNLX0NBTkNFTDsKLX0KLQotdm9pZCBzdG9wU2hhcmVkVGltZXIoKQotewotICAg
IGlmIChfc2hhcmVkVGltZXIpIHsKLSAgICAgICAgZWNvcmVfdGltZXJfZGVsKF9zaGFyZWRUaW1l
cik7Ci0gICAgICAgIF9zaGFyZWRUaW1lciA9IDA7Ci0gICAgfQotfQotCi12b2lkIGFkZE5ld1Rp
bWVyKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBzdG9wU2hhcmVkVGltZXIoKTsKLQotICAgIF9z
aGFyZWRUaW1lciA9IGVjb3JlX3RpbWVyX2xvb3BfYWRkKGludGVydmFsLCB0aW1lckV2ZW50LCAw
KTsKLX0KLQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwp
Ci17Ci0gICAgYWRkTmV3VGltZXIoaW50ZXJ2YWwpOwotfQotCi12b2lkIGludmFsaWRhdGVTaGFy
ZWRUaW1lcigpCi17Ci19Ci0KLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvTWFpblRocmVhZFNoYXJlZFRpbWVyR3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi44N2Q5YjUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL01haW5UaHJlYWRTaGFyZWRUaW1lckd0ay5jcHAKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBn
bWFpbC5jb20KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWlu
VGhyZWFkU2hhcmVkVGltZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9nbGliL0dNYWluTG9vcFNvdXJj
ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBHTWFpbkxvb3BTb3VyY2UgZ1No
YXJlZFRpbWVyOworCit2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFs
KGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAgICBBU1NFUlQobV9maXJlZEZ1bmN0aW9uKTsKKworICAg
IC8vIFRoaXMgaXMgR0RLX1BSSU9SSVRZX1JFRFJBVywgYnV0IHdlIGRvbid0IHdhbnQgdG8gZGVw
ZW5kIG9uIEdESyBoZXJlIGp1c3QgdG8gdXNlIGEgY29uc3RhbnQuCisgICAgc3RhdGljIGNvbnN0
IGludCBwcmlvcml0eSA9IEdfUFJJT1JJVFlfSElHSF9JRExFICsgMjA7CisgICAgZ1NoYXJlZFRp
bWVyLnNjaGVkdWxlQWZ0ZXJEZWxheSgiW1dlYktpdF0gc2hhcmVkVGltZXJUaW1lb3V0Q2FsbGJh
Y2siLCBbdGhpc10geyBmaXJlZCgpOyB9LAorICAgICAgICBzdGQ6OmNocm9ubzo6ZHVyYXRpb25f
Y2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91
YmxlPihpbnRlcnZhbCkpLCBwcmlvcml0eSk7Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRp
bWVyOjpzdG9wKCkKK3sKKyAgICBnU2hhcmVkVGltZXIuY2FuY2VsKCk7Cit9CisKK3ZvaWQgTWFp
blRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGNmZjdkNzMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1NoYXJlZFRpbWVyR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwu
Y29tCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkVGlt
ZXIuaCIKLQotI2luY2x1ZGUgPHd0Zi9nbGliL0dNYWluTG9vcFNvdXJjZS5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBHTWFpbkxvb3BTb3VyY2UgZ1NoYXJlZFRpbWVyOwotc3Rh
dGljIHZvaWQgKCpzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pKCk7Ci0KLXZvaWQgc2V0U2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmKSgpKQotewotICAgIHNoYXJlZFRpbWVyRmlyZWRG
dW5jdGlvbiA9IGY7Ci0gICAgaWYgKCFzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pCi0gICAgICAg
IGdTaGFyZWRUaW1lci5jYW5jZWwoKTsKLX0KLQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRl
cnZhbChkb3VibGUgaW50ZXJ2YWwpCi17Ci0gICAgQVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5j
dGlvbik7Ci0KLSAgICAvLyBUaGlzIGlzIEdES19QUklPUklUWV9SRURSQVcsIGJ1dCB3ZSBkb24n
dCB3YW50IHRvIGRlcGVuZCBvbiBHREsgaGVyZSBqdXN0IHRvIHVzZSBhIGNvbnN0YW50LgotICAg
IHN0YXRpYyBjb25zdCBpbnQgcHJpb3JpdHkgPSBHX1BSSU9SSVRZX0hJR0hfSURMRSArIDIwOwot
ICAgIGdTaGFyZWRUaW1lci5zY2hlZHVsZUFmdGVyRGVsYXkoIltXZWJLaXRdIHNoYXJlZFRpbWVy
VGltZW91dENhbGxiYWNrIiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KHNoYXJlZFRpbWVyRmlyZWRG
dW5jdGlvbiksCi0gICAgICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25v
OjptaWNyb3NlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KGludGVydmFsKSks
IHByaW9yaXR5KTsKLX0KLQotdm9pZCBzdG9wU2hhcmVkVGltZXIoKQotewotICAgIGdTaGFyZWRU
aW1lci5jYW5jZWwoKTsKLX0KLQotdm9pZCBpbnZhbGlkYXRlU2hhcmVkVGltZXIoKQotewotfQot
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTWFpblRocmVhZFNo
YXJlZFRpbWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NYWluVGhyZWFk
U2hhcmVkVGltZXJXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlh
NjYwZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTWFp
blRocmVhZFNoYXJlZFRpbWVyV2luLmNwcApAQCAtMCwwICsxLDE5OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk1haW5UaHJlYWRTaGFyZWRUaW1lci5oIgorCisjaW5jbHVkZSAiUGFnZS5oIgor
I2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgi
CisjaW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgor
CisjaW5jbHVkZSA8bW1zeXN0ZW0uaD4KKworLy8gVGhlc2UgYXJlbid0IGluIHdpbnVzZXIuaCB3
aXRoIHRoZSBNU1ZTIDIwMDMgUGxhdGZvcm0gU0RLLCAKKy8vIHNvIHVzZSBkZWZhdWx0IHZhbHVl
cyBpbiB0aGF0IGNhc2UuCisjaWZuZGVmIFVTRVJfVElNRVJfTUlOSU1VTQorI2RlZmluZSBVU0VS
X1RJTUVSX01JTklNVU0gMHgwMDAwMDAwQQorI2VuZGlmCisKKyNpZm5kZWYgVVNFUl9USU1FUl9N
QVhJTVVNCisjZGVmaW5lIFVTRVJfVElNRVJfTUFYSU1VTSAweDdGRkZGRkZGCisjZW5kaWYKKwor
I2lmbmRlZiBRU19SQVdJTlBVVAorI2RlZmluZSBRU19SQVdJTlBVVCAgICAgICAgIDB4MDQwMAor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFVJTlQgdGltZXJJRDsKKwor
c3RhdGljIEhBTkRMRSB0aW1lcjsKK3N0YXRpYyBIV05EIHRpbWVyV2luZG93SGFuZGxlID0gMDsK
K2NvbnN0IExQQ1dTVFIga1RpbWVyV2luZG93Q2xhc3NOYW1lID0gTCJUaW1lcldpbmRvd0NsYXNz
IjsKKworc3RhdGljIFVJTlQgdGltZXJGaXJlZE1lc3NhZ2UgPSAwOworc3RhdGljIEhBTkRMRSB0
aW1lclF1ZXVlOworc3RhdGljIGJvb2wgaGlnaFJlc1RpbWVyQWN0aXZlOworc3RhdGljIGJvb2wg
cHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVzc2FnZSA9IGZhbHNlOworc3RhdGljIExPTkcgcGVuZGlu
Z1RpbWVyczsKKworY29uc3QgaW50IHRpbWVyUmVzb2x1dGlvbiA9IDE7IC8vIFRvIGltcHJvdmUg
dGltZXIgcmVzb2x1dGlvbiwgd2UgY2FsbCB0aW1lQmVnaW5QZXJpb2QvdGltZUVuZFBlcmlvZCB3
aXRoIHRoaXMgdmFsdWUgdG8gaW5jcmVhc2UgdGltZXIgcmVzb2x1dGlvbiB0byAxbXMuCitjb25z
dCBpbnQgaGlnaFJlc29sdXRpb25UaHJlc2hvbGRNc2VjID0gMTY7IC8vIE9ubHkgYWN0aXZhdGUg
aGlnaC1yZXMgdGltZXIgZm9yIHN1Yi0xNm1zIHRpbWVycyAoV2luZG93cyBjYW4gZmlyZSB0aW1l
cnMgYXQgMTZtcyBpbnRlcnZhbHMgd2l0aG91dCBjaGFuZ2luZyB0aGUgc3lzdGVtIHJlc29sdXRp
b24pLgorY29uc3QgaW50IHN0b3BIaWdoUmVzVGltZXJJbk1zZWMgPSAzMDA7IC8vIFN0b3AgaGln
aC1yZXMgdGltZXIgYWZ0ZXIgMC4zIHNlY29uZHMgdG8gbGVzc2VuIHBvd2VyIGNvbnN1bXB0aW9u
ICh3ZSBkb24ndCB1c2UgYSBzbWFsbGVyIHRpbWUgc2luY2Ugb3NjaWxsYXRpbmcgYmV0d2VlbiBo
aWdoIGFuZCBsb3cgcmVzb2x1dGlvbiBicmVha3MgdGltZXIgYWNjdXJhY3kgb24gWFApLgorCitl
bnVtIHsKKyAgICBzaGFyZWRUaW1lcklEID0gMTAwMCwKKyAgICBlbmRIaWdoUmVzVGltZXJJRCA9
IDEwMDEsCit9OworCitMUkVTVUxUIENBTExCQUNLIFRpbWVyV2luZG93V25kUHJvYyhIV05EIGhX
bmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKK3sKKyAgICBp
ZiAobWVzc2FnZSA9PSBXTV9USU1FUikgeworICAgICAgICBpZiAod1BhcmFtID09IHNoYXJlZFRp
bWVySUQpIHsKKyAgICAgICAgICAgIEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgc2hhcmVk
VGltZXJJRCk7CisgICAgICAgICAgICBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnNpbmdsZXRvbigp
LmZpcmVkKCk7CisgICAgICAgIH0gZWxzZSBpZiAod1BhcmFtID09IGVuZEhpZ2hSZXNUaW1lcklE
KSB7CisgICAgICAgICAgICBLaWxsVGltZXIodGltZXJXaW5kb3dIYW5kbGUsIGVuZEhpZ2hSZXNU
aW1lcklEKTsKKyAgICAgICAgICAgIGhpZ2hSZXNUaW1lckFjdGl2ZSA9IGZhbHNlOworICAgICAg
ICAgICAgdGltZUVuZFBlcmlvZCh0aW1lclJlc29sdXRpb24pOworICAgICAgICB9CisgICAgfSBl
bHNlIGlmIChtZXNzYWdlID09IHRpbWVyRmlyZWRNZXNzYWdlKSB7CisgICAgICAgIEludGVybG9j
a2VkRXhjaGFuZ2UoJnBlbmRpbmdUaW1lcnMsIDApOworICAgICAgICBwcm9jZXNzaW5nQ3VzdG9t
VGltZXJNZXNzYWdlID0gdHJ1ZTsKKyAgICAgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5n
bGV0b24oKS5maXJlZCgpOworICAgICAgICBwcm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNzYWdlID0g
ZmFsc2U7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBEZWZXaW5kb3dQcm9jKGhXbmQsIG1l
c3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9p
ZCBpbml0aWFsaXplT2ZmU2NyZWVuVGltZXJXaW5kb3coKQoreworICAgIGlmICh0aW1lcldpbmRv
d0hhbmRsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV05EQ0xBU1NFWCB3Y2V4OworICAgIG1l
bXNldCgmd2NleCwgMCwgc2l6ZW9mKFdORENMQVNTRVgpKTsKKyAgICB3Y2V4LmNiU2l6ZSA9IHNp
emVvZihXTkRDTEFTU0VYKTsKKworICAgIHdjZXgubHBmblduZFByb2MgICAgPSBUaW1lcldpbmRv
d1duZFByb2M7CisgICAgd2NleC5oSW5zdGFuY2UgICAgICA9IFdlYkNvcmU6Omluc3RhbmNlSGFu
ZGxlKCk7CisgICAgd2NleC5scHN6Q2xhc3NOYW1lICA9IGtUaW1lcldpbmRvd0NsYXNzTmFtZTsK
KyAgICBSZWdpc3RlckNsYXNzRXgoJndjZXgpOworCisgICAgdGltZXJXaW5kb3dIYW5kbGUgPSBD
cmVhdGVXaW5kb3coa1RpbWVyV2luZG93Q2xhc3NOYW1lLCAwLCAwLAorICAgICAgIENXX1VTRURF
RkFVTFQsIDAsIENXX1VTRURFRkFVTFQsIDAsIEhXTkRfTUVTU0FHRSwgMCwgV2ViQ29yZTo6aW5z
dGFuY2VIYW5kbGUoKSwgMCk7CisKKyAgICB0aW1lckZpcmVkTWVzc2FnZSA9IFJlZ2lzdGVyV2lu
ZG93TWVzc2FnZShMImNvbS5hcHBsZS5XZWJLaXQuVGltZXJGaXJlZCIpOworfQorCitzdGF0aWMg
dm9pZCBOVEFQSSBxdWV1ZVRpbWVyUHJvYyhQVk9JRCwgQk9PTEVBTikKK3sKKyAgICBpZiAoSW50
ZXJsb2NrZWRJbmNyZW1lbnQoJnBlbmRpbmdUaW1lcnMpID09IDEpCisgICAgICAgIFBvc3RNZXNz
YWdlKHRpbWVyV2luZG93SGFuZGxlLCB0aW1lckZpcmVkTWVzc2FnZSwgMCwgMCk7Cit9CisKK3Zv
aWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFs
KQoreworICAgIEFTU0VSVChtX2ZpcmVkRnVuY3Rpb24pOworCisgICAgdW5zaWduZWQgaW50ZXJ2
YWxJbk1TOworICAgIGludGVydmFsICo9IDEwMDA7CisgICAgaWYgKGludGVydmFsID4gVVNFUl9U
SU1FUl9NQVhJTVVNKQorICAgICAgICBpbnRlcnZhbEluTVMgPSBVU0VSX1RJTUVSX01BWElNVU07
CisgICAgZWxzZQorICAgICAgICBpbnRlcnZhbEluTVMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aW50ZXJ2YWwpOworCisgICAgaW5pdGlhbGl6ZU9mZlNjcmVlblRpbWVyV2luZG93KCk7CisgICAg
Ym9vbCB0aW1lclNldCA9IGZhbHNlOworCisgICAgaWYgKFNldHRpbmdzOjpzaG91bGRVc2VIaWdo
UmVzb2x1dGlvblRpbWVycygpKSB7CisgICAgICAgIGlmIChpbnRlcnZhbCA8IGhpZ2hSZXNvbHV0
aW9uVGhyZXNob2xkTXNlYykgeworICAgICAgICAgICAgaWYgKCFoaWdoUmVzVGltZXJBY3RpdmUp
IHsKKyAgICAgICAgICAgICAgICBoaWdoUmVzVGltZXJBY3RpdmUgPSB0cnVlOworICAgICAgICAg
ICAgICAgIHRpbWVCZWdpblBlcmlvZCh0aW1lclJlc29sdXRpb24pOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgU2V0VGltZXIodGltZXJXaW5kb3dIYW5kbGUsIGVuZEhpZ2hSZXNUaW1lcklE
LCBzdG9wSGlnaFJlc1RpbWVySW5Nc2VjLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIERXT1JE
IHF1ZXVlU3RhdHVzID0gTE9XT1JEKEdldFF1ZXVlU3RhdHVzKFFTX1BBSU5UIHwgUVNfTU9VU0VC
VVRUT04gfCBRU19LRVkgfCBRU19SQVdJTlBVVCkpOworCisgICAgICAgIC8vIFdpbjMyIGhhcyBh
IHRyaS1sZXZlbCBxdWV1ZSB3aXRoIGFwcGxpY2F0aW9uIG1lc3NhZ2VzID4gdXNlciBpbnB1dCA+
IFdNX1BBSU5UL1dNX1RJTUVSLgorCisgICAgICAgIC8vIElmIHRoZSBxdWV1ZSBkb2Vzbid0IGNv
bnRhaW5zIGlucHV0IGV2ZW50cywgd2UgdXNlIGEgaGlnaGVyIHByaW9ydHkgdGltZXIgZXZlbnQg
cG9zdGluZyBtZWNoYW5pc20uCisgICAgICAgIGlmICghKHF1ZXVlU3RhdHVzICYgKFFTX01PVVNF
QlVUVE9OIHwgUVNfS0VZIHwgUVNfUkFXSU5QVVQpKSkgeworICAgICAgICAgICAgaWYgKGludGVy
dmFsSW5NUyA8IFVTRVJfVElNRVJfTUlOSU1VTSAmJiAhcHJvY2Vzc2luZ0N1c3RvbVRpbWVyTWVz
c2FnZSAmJiAhKHF1ZXVlU3RhdHVzICYgUVNfUEFJTlQpKSB7CisgICAgICAgICAgICAgICAgLy8g
Q2FsbCBQb3N0TWVzc2FnZSBpbW1lZGlhdGVseSBpZiB0aGUgdGltZXIgaXMgYWxyZWFkeSBleHBp
cmVkLCB1bmxlc3MgYSBwYWludCBpcyBwZW5kaW5nLgorICAgICAgICAgICAgICAgIC8vICh3ZSBw
cmlvcml0aXplIHBhaW50cyBvdmVyIHRpbWVycykKKyAgICAgICAgICAgICAgICBpZiAoSW50ZXJs
b2NrZWRJbmNyZW1lbnQoJnBlbmRpbmdUaW1lcnMpID09IDEpCisgICAgICAgICAgICAgICAgICAg
IFBvc3RNZXNzYWdlKHRpbWVyV2luZG93SGFuZGxlLCB0aW1lckZpcmVkTWVzc2FnZSwgMCwgMCk7
CisgICAgICAgICAgICAgICAgdGltZXJTZXQgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGRlbGF5IHRoZSBQb3N0TWVzc2FnZSB2aWEg
YSBDcmVhdGVUaW1lclF1ZXVlVGltZXIKKyAgICAgICAgICAgICAgICBpZiAoIXRpbWVyUXVldWUp
CisgICAgICAgICAgICAgICAgICAgIHRpbWVyUXVldWUgPSBDcmVhdGVUaW1lclF1ZXVlKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKHRpbWVyKQorICAgICAgICAgICAgICAgICAgICBEZWxldGVUaW1l
clF1ZXVlVGltZXIodGltZXJRdWV1ZSwgdGltZXIsIDApOworICAgICAgICAgICAgICAgIHRpbWVy
U2V0ID0gQ3JlYXRlVGltZXJRdWV1ZVRpbWVyKCZ0aW1lciwgdGltZXJRdWV1ZSwgcXVldWVUaW1l
clByb2MsIDAsIGludGVydmFsSW5NUywgMCwgV1RfRVhFQ1VURUlOVElNRVJUSFJFQUQgfCBXVF9F
WEVDVVRFT05MWU9OQ0UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKHRpbWVyU2V0KSB7CisgICAgICAgIGlmICh0aW1lcklEKSB7CisgICAgICAgICAgICBLaWxs
VGltZXIodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVySUQpOworICAgICAgICAgICAgdGltZXJJRCA9
IDA7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB0aW1lcklEID0gU2V0VGltZXIo
dGltZXJXaW5kb3dIYW5kbGUsIHNoYXJlZFRpbWVySUQsIGludGVydmFsSW5NUywgMCk7CisgICAg
ICAgIHRpbWVyID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpz
dG9wKCkKK3sKKyAgICBpZiAodGltZXJRdWV1ZSAmJiB0aW1lcikgeworICAgICAgICBEZWxldGVU
aW1lclF1ZXVlVGltZXIodGltZXJRdWV1ZSwgdGltZXIsIDApOworICAgICAgICB0aW1lciA9IDA7
CisgICAgfQorCisgICAgaWYgKHRpbWVySUQpIHsKKyAgICAgICAgS2lsbFRpbWVyKHRpbWVyV2lu
ZG93SGFuZGxlLCB0aW1lcklEKTsKKyAgICAgICAgdGltZXJJRCA9IDA7CisgICAgfQorfQorCit2
b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6aW52YWxpZGF0ZSgpCit7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzZDAyYjE5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZFRpbWVyLmgiCi0KLSNpbmNsdWRl
ICJQYWdlLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJXZWJDb3JlSW5zdGFu
Y2VIYW5kbGUuaCIKLSNpbmNsdWRlICJXaWRnZXQuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9XaW5kb3dz
RXh0cmFzLmg+Ci0KLSNpbmNsdWRlIDxtbXN5c3RlbS5oPgotCi0vLyBUaGVzZSBhcmVuJ3QgaW4g
d2ludXNlci5oIHdpdGggdGhlIE1TVlMgMjAwMyBQbGF0Zm9ybSBTREssIAotLy8gc28gdXNlIGRl
ZmF1bHQgdmFsdWVzIGluIHRoYXQgY2FzZS4KLSNpZm5kZWYgVVNFUl9USU1FUl9NSU5JTVVNCi0j
ZGVmaW5lIFVTRVJfVElNRVJfTUlOSU1VTSAweDAwMDAwMDBBCi0jZW5kaWYKLQotI2lmbmRlZiBV
U0VSX1RJTUVSX01BWElNVU0KLSNkZWZpbmUgVVNFUl9USU1FUl9NQVhJTVVNIDB4N0ZGRkZGRkYK
LSNlbmRpZgotCi0jaWZuZGVmIFFTX1JBV0lOUFVUCi0jZGVmaW5lIFFTX1JBV0lOUFVUICAgICAg
ICAgMHgwNDAwCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgVUlOVCB0
aW1lcklEOwotc3RhdGljIHZvaWQgKCpzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pKCk7Ci0KLXN0
YXRpYyBIQU5ETEUgdGltZXI7Ci1zdGF0aWMgSFdORCB0aW1lcldpbmRvd0hhbmRsZSA9IDA7Ci1j
b25zdCBMUENXU1RSIGtUaW1lcldpbmRvd0NsYXNzTmFtZSA9IEwiVGltZXJXaW5kb3dDbGFzcyI7
Ci0KLXN0YXRpYyBVSU5UIHRpbWVyRmlyZWRNZXNzYWdlID0gMDsKLXN0YXRpYyBIQU5ETEUgdGlt
ZXJRdWV1ZTsKLXN0YXRpYyBib29sIGhpZ2hSZXNUaW1lckFjdGl2ZTsKLXN0YXRpYyBib29sIHBy
b2Nlc3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgPSBmYWxzZTsKLXN0YXRpYyBMT05HIHBlbmRpbmdU
aW1lcnM7Ci0KLWNvbnN0IGludCB0aW1lclJlc29sdXRpb24gPSAxOyAvLyBUbyBpbXByb3ZlIHRp
bWVyIHJlc29sdXRpb24sIHdlIGNhbGwgdGltZUJlZ2luUGVyaW9kL3RpbWVFbmRQZXJpb2Qgd2l0
aCB0aGlzIHZhbHVlIHRvIGluY3JlYXNlIHRpbWVyIHJlc29sdXRpb24gdG8gMW1zLgotY29uc3Qg
aW50IGhpZ2hSZXNvbHV0aW9uVGhyZXNob2xkTXNlYyA9IDE2OyAvLyBPbmx5IGFjdGl2YXRlIGhp
Z2gtcmVzIHRpbWVyIGZvciBzdWItMTZtcyB0aW1lcnMgKFdpbmRvd3MgY2FuIGZpcmUgdGltZXJz
IGF0IDE2bXMgaW50ZXJ2YWxzIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHN5c3RlbSByZXNvbHV0aW9u
KS4KLWNvbnN0IGludCBzdG9wSGlnaFJlc1RpbWVySW5Nc2VjID0gMzAwOyAvLyBTdG9wIGhpZ2gt
cmVzIHRpbWVyIGFmdGVyIDAuMyBzZWNvbmRzIHRvIGxlc3NlbiBwb3dlciBjb25zdW1wdGlvbiAo
d2UgZG9uJ3QgdXNlIGEgc21hbGxlciB0aW1lIHNpbmNlIG9zY2lsbGF0aW5nIGJldHdlZW4gaGln
aCBhbmQgbG93IHJlc29sdXRpb24gYnJlYWtzIHRpbWVyIGFjY3VyYWN5IG9uIFhQKS4KLQotZW51
bSB7Ci0gICAgc2hhcmVkVGltZXJJRCA9IDEwMDAsCi0gICAgZW5kSGlnaFJlc1RpbWVySUQgPSAx
MDAxLAotfTsKLQotTFJFU1VMVCBDQUxMQkFDSyBUaW1lcldpbmRvd1duZFByb2MoSFdORCBoV25k
LCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCi17Ci0gICAgaWYg
KG1lc3NhZ2UgPT0gV01fVElNRVIpIHsKLSAgICAgICAgaWYgKHdQYXJhbSA9PSBzaGFyZWRUaW1l
cklEKSB7Ci0gICAgICAgICAgICBLaWxsVGltZXIodGltZXJXaW5kb3dIYW5kbGUsIHNoYXJlZFRp
bWVySUQpOwotICAgICAgICAgICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKCk7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZSBpZiAod1BhcmFtID09IGVuZEhpZ2hSZXNUaW1lcklEKSB7Ci0gICAg
ICAgICAgICBLaWxsVGltZXIodGltZXJXaW5kb3dIYW5kbGUsIGVuZEhpZ2hSZXNUaW1lcklEKTsK
LSAgICAgICAgICAgIGhpZ2hSZXNUaW1lckFjdGl2ZSA9IGZhbHNlOwotICAgICAgICAgICAgdGlt
ZUVuZFBlcmlvZCh0aW1lclJlc29sdXRpb24pOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICht
ZXNzYWdlID09IHRpbWVyRmlyZWRNZXNzYWdlKSB7Ci0gICAgICAgIEludGVybG9ja2VkRXhjaGFu
Z2UoJnBlbmRpbmdUaW1lcnMsIDApOwotICAgICAgICBwcm9jZXNzaW5nQ3VzdG9tVGltZXJNZXNz
YWdlID0gdHJ1ZTsKLSAgICAgICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKCk7Ci0gICAgICAg
IHByb2Nlc3NpbmdDdXN0b21UaW1lck1lc3NhZ2UgPSBmYWxzZTsKLSAgICB9IGVsc2UKLSAgICAg
ICAgcmV0dXJuIERlZldpbmRvd1Byb2MoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwot
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkIGluaXRpYWxpemVPZmZTY3JlZW5UaW1l
cldpbmRvdygpCi17Ci0gICAgaWYgKHRpbWVyV2luZG93SGFuZGxlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBXTkRDTEFTU0VYIHdjZXg7Ci0gICAgbWVtc2V0KCZ3Y2V4LCAwLCBzaXplb2YoV05E
Q0xBU1NFWCkpOwotICAgIHdjZXguY2JTaXplID0gc2l6ZW9mKFdORENMQVNTRVgpOwotCi0gICAg
d2NleC5scGZuV25kUHJvYyAgICA9IFRpbWVyV2luZG93V25kUHJvYzsKLSAgICB3Y2V4LmhJbnN0
YW5jZSAgICAgID0gV2ViQ29yZTo6aW5zdGFuY2VIYW5kbGUoKTsKLSAgICB3Y2V4Lmxwc3pDbGFz
c05hbWUgID0ga1RpbWVyV2luZG93Q2xhc3NOYW1lOwotICAgIFJlZ2lzdGVyQ2xhc3NFeCgmd2Nl
eCk7Ci0KLSAgICB0aW1lcldpbmRvd0hhbmRsZSA9IENyZWF0ZVdpbmRvdyhrVGltZXJXaW5kb3dD
bGFzc05hbWUsIDAsIDAsCi0gICAgICAgQ1dfVVNFREVGQVVMVCwgMCwgQ1dfVVNFREVGQVVMVCwg
MCwgSFdORF9NRVNTQUdFLCAwLCBXZWJDb3JlOjppbnN0YW5jZUhhbmRsZSgpLCAwKTsKLQotICAg
IHRpbWVyRmlyZWRNZXNzYWdlID0gUmVnaXN0ZXJXaW5kb3dNZXNzYWdlKEwiY29tLmFwcGxlLldl
YktpdC5UaW1lckZpcmVkIik7Ci19Ci0KLXZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9u
KHZvaWQgKCpmKSgpKQotewotICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiA9IGY7Ci19Ci0K
LXN0YXRpYyB2b2lkIE5UQVBJIHF1ZXVlVGltZXJQcm9jKFBWT0lELCBCT09MRUFOKQotewotICAg
IGlmIChJbnRlcmxvY2tlZEluY3JlbWVudCgmcGVuZGluZ1RpbWVycykgPT0gMSkKLSAgICAgICAg
UG9zdE1lc3NhZ2UodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVyRmlyZWRNZXNzYWdlLCAwLCAwKTsK
LX0KLQotdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCi17
Ci0gICAgQVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7Ci0KLSAgICB1bnNpZ25lZCBp
bnRlcnZhbEluTVM7Ci0gICAgaW50ZXJ2YWwgKj0gMTAwMDsKLSAgICBpZiAoaW50ZXJ2YWwgPiBV
U0VSX1RJTUVSX01BWElNVU0pCi0gICAgICAgIGludGVydmFsSW5NUyA9IFVTRVJfVElNRVJfTUFY
SU1VTTsKLSAgICBlbHNlCi0gICAgICAgIGludGVydmFsSW5NUyA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpbnRlcnZhbCk7Ci0KLSAgICBpbml0aWFsaXplT2ZmU2NyZWVuVGltZXJXaW5kb3coKTsK
LSAgICBib29sIHRpbWVyU2V0ID0gZmFsc2U7Ci0KLSAgICBpZiAoU2V0dGluZ3M6OnNob3VsZFVz
ZUhpZ2hSZXNvbHV0aW9uVGltZXJzKCkpIHsKLSAgICAgICAgaWYgKGludGVydmFsIDwgaGlnaFJl
c29sdXRpb25UaHJlc2hvbGRNc2VjKSB7Ci0gICAgICAgICAgICBpZiAoIWhpZ2hSZXNUaW1lckFj
dGl2ZSkgewotICAgICAgICAgICAgICAgIGhpZ2hSZXNUaW1lckFjdGl2ZSA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgdGltZUJlZ2luUGVyaW9kKHRpbWVyUmVzb2x1dGlvbik7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBTZXRUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgZW5kSGlnaFJlc1Rp
bWVySUQsIHN0b3BIaWdoUmVzVGltZXJJbk1zZWMsIDApOwotICAgICAgICB9Ci0KLSAgICAgICAg
RFdPUkQgcXVldWVTdGF0dXMgPSBMT1dPUkQoR2V0UXVldWVTdGF0dXMoUVNfUEFJTlQgfCBRU19N
T1VTRUJVVFRPTiB8IFFTX0tFWSB8IFFTX1JBV0lOUFVUKSk7Ci0KLSAgICAgICAgLy8gV2luMzIg
aGFzIGEgdHJpLWxldmVsIHF1ZXVlIHdpdGggYXBwbGljYXRpb24gbWVzc2FnZXMgPiB1c2VyIGlu
cHV0ID4gV01fUEFJTlQvV01fVElNRVIuCi0KLSAgICAgICAgLy8gSWYgdGhlIHF1ZXVlIGRvZXNu
J3QgY29udGFpbnMgaW5wdXQgZXZlbnRzLCB3ZSB1c2UgYSBoaWdoZXIgcHJpb3J0eSB0aW1lciBl
dmVudCBwb3N0aW5nIG1lY2hhbmlzbS4KLSAgICAgICAgaWYgKCEocXVldWVTdGF0dXMgJiAoUVNf
TU9VU0VCVVRUT04gfCBRU19LRVkgfCBRU19SQVdJTlBVVCkpKSB7Ci0gICAgICAgICAgICBpZiAo
aW50ZXJ2YWxJbk1TIDwgVVNFUl9USU1FUl9NSU5JTVVNICYmICFwcm9jZXNzaW5nQ3VzdG9tVGlt
ZXJNZXNzYWdlICYmICEocXVldWVTdGF0dXMgJiBRU19QQUlOVCkpIHsKLSAgICAgICAgICAgICAg
ICAvLyBDYWxsIFBvc3RNZXNzYWdlIGltbWVkaWF0ZWx5IGlmIHRoZSB0aW1lciBpcyBhbHJlYWR5
IGV4cGlyZWQsIHVubGVzcyBhIHBhaW50IGlzIHBlbmRpbmcuCi0gICAgICAgICAgICAgICAgLy8g
KHdlIHByaW9yaXRpemUgcGFpbnRzIG92ZXIgdGltZXJzKQotICAgICAgICAgICAgICAgIGlmIChJ
bnRlcmxvY2tlZEluY3JlbWVudCgmcGVuZGluZ1RpbWVycykgPT0gMSkKLSAgICAgICAgICAgICAg
ICAgICAgUG9zdE1lc3NhZ2UodGltZXJXaW5kb3dIYW5kbGUsIHRpbWVyRmlyZWRNZXNzYWdlLCAw
LCAwKTsKLSAgICAgICAgICAgICAgICB0aW1lclNldCA9IHRydWU7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgZGVsYXkgdGhlIFBvc3RNZXNzYWdl
IHZpYSBhIENyZWF0ZVRpbWVyUXVldWVUaW1lcgotICAgICAgICAgICAgICAgIGlmICghdGltZXJR
dWV1ZSkKLSAgICAgICAgICAgICAgICAgICAgdGltZXJRdWV1ZSA9IENyZWF0ZVRpbWVyUXVldWUo
KTsKLSAgICAgICAgICAgICAgICBpZiAodGltZXIpCi0gICAgICAgICAgICAgICAgICAgIERlbGV0
ZVRpbWVyUXVldWVUaW1lcih0aW1lclF1ZXVlLCB0aW1lciwgMCk7Ci0gICAgICAgICAgICAgICAg
dGltZXJTZXQgPSBDcmVhdGVUaW1lclF1ZXVlVGltZXIoJnRpbWVyLCB0aW1lclF1ZXVlLCBxdWV1
ZVRpbWVyUHJvYywgMCwgaW50ZXJ2YWxJbk1TLCAwLCBXVF9FWEVDVVRFSU5USU1FUlRIUkVBRCB8
IFdUX0VYRUNVVEVPTkxZT05DRSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAodGltZXJTZXQpIHsKLSAgICAgICAgaWYgKHRpbWVySUQpIHsKLSAgICAgICAgICAg
IEtpbGxUaW1lcih0aW1lcldpbmRvd0hhbmRsZSwgdGltZXJJRCk7Ci0gICAgICAgICAgICB0aW1l
cklEID0gMDsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRpbWVySUQgPSBTZXRU
aW1lcih0aW1lcldpbmRvd0hhbmRsZSwgc2hhcmVkVGltZXJJRCwgaW50ZXJ2YWxJbk1TLCAwKTsK
LSAgICAgICAgdGltZXIgPSAwOwotICAgIH0KLX0KLQotdm9pZCBzdG9wU2hhcmVkVGltZXIoKQot
ewotICAgIGlmICh0aW1lclF1ZXVlICYmIHRpbWVyKSB7Ci0gICAgICAgIERlbGV0ZVRpbWVyUXVl
dWVUaW1lcih0aW1lclF1ZXVlLCB0aW1lciwgMCk7Ci0gICAgICAgIHRpbWVyID0gMDsKLSAgICB9
Ci0KLSAgICBpZiAodGltZXJJRCkgewotICAgICAgICBLaWxsVGltZXIodGltZXJXaW5kb3dIYW5k
bGUsIHRpbWVySUQpOwotICAgICAgICB0aW1lcklEID0gMDsKLSAgICB9Ci19Ci0KLXZvaWQgaW52
YWxpZGF0ZVNoYXJlZFRpbWVyKCkKLXsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyUnVuTG9vcC5jcHAKaW5kZXggZTgxMjMwOC4uYmNlNjVlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC00MSwyNiArNDEsMjAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBXb3JrZXJTaGFyZWRUaW1lciA6IHB1YmxpYyBTaGFyZWRUaW1l
ciB7CitjbGFzcyBXb3JrZXJTaGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBTaGFyZWRUaW1lciB7
CiBwdWJsaWM6Ci0gICAgV29ya2VyU2hhcmVkVGltZXIoKQotICAgICAgICA6IG1fc2hhcmVkVGlt
ZXJGdW5jdGlvbigwKQotICAgICAgICAsIG1fbmV4dEZpcmVUaW1lKDApCi0gICAgewotICAgIH0K
LQogICAgIC8vIFNoYXJlZFRpbWVyIGludGVyZmFjZS4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Rmly
ZWRGdW5jdGlvbih2b2lkICgqZnVuY3Rpb24pKCkpIHsgbV9zaGFyZWRUaW1lckZ1bmN0aW9uID0g
ZnVuY3Rpb247IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlyZUludGVydmFsKGRvdWJsZSBpbnRl
cnZhbCkgeyBtX25leHRGaXJlVGltZSA9IGludGVydmFsICsgY3VycmVudFRpbWUoKTsgfQotICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCkgeyBtX25leHRGaXJlVGltZSA9IDA7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikg
b3ZlcnJpZGUgeyBtX3NoYXJlZFRpbWVyRnVuY3Rpb24gPSBXVEY6Om1vdmUoZnVuY3Rpb24pOyB9
CisgICAgdmlydHVhbCB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpIG92ZXJy
aWRlIHsgbV9uZXh0RmlyZVRpbWUgPSBpbnRlcnZhbCArIGN1cnJlbnRUaW1lKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpIG92ZXJyaWRlIHsgbV9uZXh0RmlyZVRpbWUgPSAwOyB9CiAKICAg
ICBib29sIGlzQWN0aXZlKCkgeyByZXR1cm4gbV9zaGFyZWRUaW1lckZ1bmN0aW9uICYmIG1fbmV4
dEZpcmVUaW1lOyB9CiAgICAgZG91YmxlIGZpcmVUaW1lKCkgeyByZXR1cm4gbV9uZXh0RmlyZVRp
bWU7IH0KICAgICB2b2lkIGZpcmUoKSB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbigpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCAoKm1fc2hhcmVkVGltZXJGdW5jdGlvbikoKTsKLSAgICBkb3VibGUg
bV9uZXh0RmlyZVRpbWU7CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fc2hhcmVkVGltZXJG
dW5jdGlvbiB7IG51bGxwdHIgfTsKKyAgICBkb3VibGUgbV9uZXh0RmlyZVRpbWUgeyAwIH07CiB9
OwogCiBjbGFzcyBNb2RlUHJlZGljYXRlIHsK
</data>
<flag name="review"
          id="289342"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>