<?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>114044</bug_id>
          
          <creation_ts>2013-04-05 10:51:46 -0700</creation_ts>
          <short_desc>[GStreamer] cannot seek after video finished</short_desc>
          <delta_ts>2013-05-14 06:24:56 -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>Media</component>
          <version>528+ (Nightly 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="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Balazs Kelemen">kbalazs</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>hausmann</cc>
    
    <cc>jer.noble</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>869871</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-04-05 10:51:46 -0700</bug_when>
    <thetext>I&apos;m seeing this in EFL&apos;s MiniBrowser. After the video finished further seeking is ignored, even after restarting it. I will check whether it is EFL only (I guess it is not). Furthermore, when the video is finishing the last frame is not showed as it should be but either background or just a part of the last frame is showed. Probably we go into a bad state when the video finishes. (Btw, I&apos;m totally new in GStreamer and web media so I&apos;m just guessing.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869900</commentid>
    <comment_count>1</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-04-05 11:23:53 -0700</bug_when>
    <thetext>The same is happening with Qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869921</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-04-05 11:52:10 -0700</bug_when>
    <thetext>Part of last frame? Mind attaching a screenshot?
When EOS is reached the pipeline goes to GST_STATE_NULL to release all resources and video/audio devices.

I guess this is a bug anyway, seeking should probably still be allowed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869937</commentid>
    <comment_count>3</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-04-05 12:05:19 -0700</bug_when>
    <thetext>I could not reproduce it now, it just shows controls and background. I&apos;m new to the topic but it seems to me we should only release resources when the page with the video is shutting down. Doing this would also avoid reinitializing if the user wants to replay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869943</commentid>
    <comment_count>4</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2013-04-05 12:14:54 -0700</bug_when>
    <thetext>I have seen this problem when playing certain ogg files, but not others. 
Do you see this happening in e.g. mp4 files?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870293</commentid>
    <comment_count>5</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-04-06 09:04:15 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I have seen this problem when playing certain ogg files, but not others. 
&gt; Do you see this happening in e.g. mp4 files?

Yep, it&apos;s the same with different files and with mp4 files as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877578</commentid>
    <comment_count>6</comment_count>
      <attachid>198632</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-04-17 17:00:26 -0700</bug_when>
    <thetext>Created attachment 198632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877708</commentid>
    <comment_count>7</comment_count>
      <attachid>198632</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-04-17 23:28:52 -0700</bug_when>
    <thetext>Comment on attachment 198632
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Instead of shutting down the pipeline just pause it when we are
&gt; +        at the end of the stream.

Please, no. The pipeline needs to be shut down at EOS to release resources. Can&apos;t we preroll the pipeline again if a seek is requested after EOS occured?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877771</commentid>
    <comment_count>8</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-04-18 02:48:24 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 198632 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=198632&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        Instead of shutting down the pipeline just pause it when we are
&gt; &gt; +        at the end of the stream.
&gt; 
&gt; Please, no. The pipeline needs to be shut down at EOS to release resources. Can&apos;t we preroll the pipeline again if a seek is requested after EOS occured?

Makes sense, but I&apos;m not sure we should optimize for the most trivial use case when the user just play through the media once. Can GStreamer reuse the decoded on-disk buffered data again, if we do this? If not, it is expensive to replay the video, no? Especially on fullscreen mode (mobile), we should find a way to not release the resources until the user exit from fullscreen (which is way beyond this patch, I&apos;m just wondering what would be the good direction). Opinions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877775</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-04-18 02:58:44 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (From update of attachment 198632 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=198632&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; &gt; +        Instead of shutting down the pipeline just pause it when we are
&gt; &gt; &gt; +        at the end of the stream.
&gt; &gt; 
&gt; &gt; Please, no. The pipeline needs to be shut down at EOS to release resources. Can&apos;t we preroll the pipeline again if a seek is requested after EOS occured?
&gt; 
&gt; Makes sense, but I&apos;m not sure we should optimize for the most trivial use case when the user just play through the media once. 

What do you mean?

&gt; Can GStreamer reuse the decoded on-disk buffered data again, if we do this?

Not by default. The on-disk buffer is temporary, stored in /tmp, and that&apos;s only for video over HTTP with preload on.

&gt; If not, it is expensive to replay the video, no?

Shouldn&apos;t be. Switch the pipeline to PAUSED. Probably even in READY it would work, not sure.

&gt; Especially on fullscreen mode (mobile), we should find a way to not release the resources until the user exit from fullscreen (which is way beyond this patch, I&apos;m just wondering what would be the good direction). Opinions?

What does fullscreen mode has to do with this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879566</commentid>
    <comment_count>10</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2013-04-22 19:56:46 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; (From update of attachment 198632 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=198632&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; &gt; &gt; +        Instead of shutting down the pipeline just pause it when we are
&gt; &gt; &gt; &gt; +        at the end of the stream.
&gt; &gt; &gt; 

&gt; &gt; Especially on fullscreen mode (mobile), we should find a way to not release the resources until the user exit from fullscreen (which is way beyond this patch, I&apos;m just wondering what would be the good direction). Opinions?
&gt; 
&gt; What does fullscreen mode has to do with this bug?

Essentially the engine should try to predict the next action and act based on that prediction. Releasing the pipeline is likely the best possible action if the prediction is that the pipeline will not be needed any more.  However if it is a reasonable to predict that the pipeline will be needed (e.g. full screen video with a big replay button) than it might make sense to delay the destruction of the pipeline until it is reasonable again to predict that the pipeline is not needed (e.g. exiting full screen video playback).

I realize that this might not be in the scope for this patch, but I can see some merit in the idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883143</commentid>
    <comment_count>11</comment_count>
      <attachid>200128</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-04-30 10:27:11 -0700</bug_when>
    <thetext>Created attachment 200128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883145</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-30 10:30:19 -0700</bug_when>
    <thetext>Attachment 200128 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/media/video-seek-after-end-expected.txt&apos;, u&apos;LayoutTests/media/video-seek-after-end.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:523:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1247:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 6 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>884213</commentid>
    <comment_count>13</comment_count>
      <attachid>200128</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-05-03 10:31:14 -0700</bug_when>
    <thetext>Comment on attachment 200128
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        Seeks are not the only operations executed asynchronously, changing the pipeling state is

But ASYNC_DONE is not about seeks at all, AFAIK. It&apos;s only about state changes.

&gt; Source/WebCore/ChangeLog:24
&gt; +        seek has been compleeted.

typo: compleeted

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:144
&gt; +    // Extract the integer part of the time (seconds) and the fractional part (microseconds). Attempt to
&gt; +    // round the microseconds so no floating point precision is lost and we can perform an accurate seek.

FYI I&apos;m reworking this in bug 90734

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:788
&gt; +        if (messageSourceIsPlaybin)
&gt; +            durationChanged();

Why this change? AFAIK duration messages can be sent by source elements too, for example.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1073
&gt; +            // XXX comment

Left over?

&gt; LayoutTests/media/video-seek-after-end.html:19
&gt; +                        testExpected(&apos;video.currentTime.toFixed(2)&apos;, (video.duration / 2).toFixed(2), &apos;==&apos;);

This might need relaxing. The new position depends on which media file was selected, which may not be the same across all ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884337</commentid>
    <comment_count>14</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-05-03 14:45:54 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 200128 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200128&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:18
&gt; &gt; +        Seeks are not the only operations executed asynchronously, changing the pipeling state is
&gt; 
&gt; But ASYNC_DONE is not about seeks at all, AFAIK. It&apos;s only about state changes.

Seeks are triggering state changes and notification about them is done via GST_MESSAGE_STATE_CHANGE, and in the case of flushing seeks (we only do this kind) also via GST_MESSAGE_ASYNC_DONE. The fact that they make a GST_MESSAGE_STATE_CHANGE emitted is the reason why the current code is working more or less.
I think it&apos;s better to think about a state as a pair of the current and the pending states. Keeping that in mind even a seek in paused state triggers an exact state transition, i.e. this:

(paused, none) -- seek --&gt; (paused, paused) -- seek done --&gt; (paused, none)

In order to correctly keep track of when does a seek finish I think it&apos;s necessary to handle ASYNC_DONE (well, I guess this is the reason why it exists).

Note the documentation of gst_element_seek:
&quot;Returns : TRUE if the event was handled. Flushing seeks will trigger a preroll, which will emit GST_MESSAGE_ASYNC_DONE&quot;

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:788
&gt; &gt; +        if (messageSourceIsPlaybin)
&gt; &gt; +            durationChanged();
&gt; 
&gt; Why this change? AFAIK duration messages can be sent by source elements too, for example.

Yes, but I am assuming it is forwarded to the playbin2 as well as GST_MESSAGE_STATE_CHANGE, so it seems unnecessary to handle if the source is not the playbin.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1073
&gt; &gt; +            // XXX comment
&gt; 
&gt; Left over?

Sure it is, but that part really deserves a comment :)

&gt; 
&gt; &gt; LayoutTests/media/video-seek-after-end.html:19
&gt; &gt; +                        testExpected(&apos;video.currentTime.toFixed(2)&apos;, (video.duration / 2).toFixed(2), &apos;==&apos;);
&gt; 
&gt; This might need relaxing. The new position depends on which media file was selected, which may not be the same across all ports.

That&apos;s right, it could make the test output platform dependent. I will just use a hard coded seek target than.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884406</commentid>
    <comment_count>15</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-05-03 15:16:32 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (From update of attachment 200128 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200128&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:18
&gt; &gt; &gt; +        Seeks are not the only operations executed asynchronously, changing the pipeling state is
&gt; &gt; 
&gt; &gt; But ASYNC_DONE is not about seeks at all, AFAIK. It&apos;s only about state changes.
&gt; 
&gt; Seeks are triggering state changes and notification about them is done via GST_MESSAGE_STATE_CHANGE, and in the case of flushing seeks (we only do this kind) also via GST_MESSAGE_ASYNC_DONE. The fact that they make a GST_MESSAGE_STATE_CHANGE emitted is the reason why the current code is working more or less.
&gt; I think it&apos;s better to think about a state as a pair of the current and the pending states. Keeping that in mind even a seek in paused state triggers an exact state transition, i.e. this:
&gt; 
&gt; (paused, none) -- seek --&gt; (paused, paused) -- seek done --&gt; (paused, none)
&gt; 
&gt; In order to correctly keep track of when does a seek finish I think it&apos;s necessary to handle ASYNC_DONE (well, I guess this is the reason why it exists).
&gt; 
&gt; Note the documentation of gst_element_seek:
&gt; &quot;Returns : TRUE if the event was handled. Flushing seeks will trigger a preroll, which will emit GST_MESSAGE_ASYNC_DONE&quot;
&gt; 

Oh I didn&apos;t remember about that. The documentation of the message type itself only mentions state changes.

&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:788
&gt; &gt; &gt; +        if (messageSourceIsPlaybin)
&gt; &gt; &gt; +            durationChanged();
&gt; &gt; 
&gt; &gt; Why this change? AFAIK duration messages can be sent by source elements too, for example.
&gt; 
&gt; Yes, but I am assuming it is forwarded to the playbin2 as well as GST_MESSAGE_STATE_CHANGE, so it seems unnecessary to handle if the source is not the playbin.
&gt; 

Ok that makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884879</commentid>
    <comment_count>16</comment_count>
      <attachid>200649</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-05-06 02:36:52 -0700</bug_when>
    <thetext>Created attachment 200649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884880</commentid>
    <comment_count>17</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-05-06 02:38:23 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Created an attachment (id=200649) [details]
&gt; Patch

Fixed the left-behind comment, typo in changelog, and the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884881</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-06 02:39:28 -0700</bug_when>
    <thetext>Attachment 200649 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/media/video-seek-after-end-expected.txt&apos;, u&apos;LayoutTests/media/video-seek-after-end.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:523:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1248:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 6 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>884888</commentid>
    <comment_count>19</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-05-06 02:50:48 -0700</bug_when>
    <thetext>&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

The style issues are intentional, I filed https://bugs.webkit.org/show_bug.cgi?id=115629</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885655</commentid>
    <comment_count>20</comment_count>
      <attachid>200886</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-05-07 03:29:35 -0700</bug_when>
    <thetext>Created attachment 200886
Patch

just typos in comment and changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885657</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 03:32:31 -0700</bug_when>
    <thetext>Attachment 200886 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/media/video-seek-after-end-expected.txt&apos;, u&apos;LayoutTests/media/video-seek-after-end.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:523:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1248:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 6 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>887348</commentid>
    <comment_count>22</comment_count>
      <attachid>201346</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-05-10 08:18:01 -0700</bug_when>
    <thetext>Created attachment 201346
style fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888135</commentid>
    <comment_count>23</comment_count>
      <attachid>201346</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-05-13 00:58:01 -0700</bug_when>
    <thetext>Comment on attachment 201346
style fixed

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

Looks good, only a little nit to fix before landing. Thanks!

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:513
&gt; +    if (getStateResult == GST_STATE_CHANGE_ASYNC || (state != GST_STATE_PAUSED &amp;&amp; state != GST_STATE_PLAYING) || m_isEndReached) {

the state test can be simplified to state &lt; GST_STATE_PAUSED I think</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888385</commentid>
    <comment_count>24</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-05-13 11:37:43 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 201346 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=201346&amp;action=review
&gt; 
&gt; Looks good, only a little nit to fix before landing. Thanks!
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:513
&gt; &gt; +    if (getStateResult == GST_STATE_CHANGE_ASYNC || (state != GST_STATE_PAUSED &amp;&amp; state != GST_STATE_PLAYING) || m_isEndReached) {
&gt; 
&gt; the state test can be simplified to state &lt; GST_STATE_PAUSED I think

Fixed, thanks!

Landed in http://trac.webkit.org/changeset/150022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888469</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-05-13 12:35:51 -0700</bug_when>
    <thetext>Reverted r150022 for reason:

Causes assertions in media tests

Committed r150031: &lt;http://trac.webkit.org/changeset/150031&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888474</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-05-13 12:36:59 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Reverted r150022 for reason:
&gt; 
&gt; Causes assertions in media tests
&gt; 
&gt; Committed r150031: &lt;http://trac.webkit.org/changeset/150031&gt;

See:
http://build.webkit.org/results/EFL%20Linux%2064-bit%20Debug%20WK2/r150022%20(12199)/media/video-played-collapse-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888811</commentid>
    <comment_count>27</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-05-14 06:24:56 -0700</bug_when>
    <thetext>Relanded in https://trac.webkit.org/r150066 ...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198632</attachid>
            <date>2013-04-17 17:00:26 -0700</date>
            <delta_ts>2013-04-30 10:27:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114044-20130418015957.patch</filename>
            <type>text/plain</type>
            <size>5699</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE3N2NiZDA3MDg4MmUy
OTQwYWMyMDE3YmIxMDAzODk1NjY2NTA3Mi4uMmQzY2IwYzBiYTgzZDU0Y2I3Y2QyOGUwYzg2OGJk
MzRhMWI0ZGUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA0LTE3ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1N0cmVhbWVyXSBj
YW5ub3Qgc2VlayBhZnRlciB2aWRlbyBmaW5pc2hlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQu
aHRtbAorCisgICAgICAgIEluc3RlYWQgb2Ygc2h1dHRpbmcgZG93biB0aGUgcGlwZWxpbmUganVz
dCBwYXVzZSBpdCB3aGVuIHdlIGFyZQorICAgICAgICBhdCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0u
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6c2Vlayk6IERvbid0IHByZXRlbmQgdGhhdAorICAgICAgICB3ZSBhcmUgYXQgdGhl
IGVuZCBvZiB0aGUgc3RyZWFtIGlmIGEgc2VlayBpcyBnb2luZyBvbiB0byBhbm90aGVyCisgICAg
ICAgIHBvc2l0aW9uLiBJdCBpcyBuZWNlc3NhcnkgdG8gbWFrZSBjdXJyZW50VGltZSgpIHJlcG9y
dCB0aGUgY29ycmVudAorICAgICAgICB2YWx1ZSBzbyBIVE1MTWVkaWFFbGVtZW50IHdpbGwgbm90
IHJlc3RhcnQgcGxheWJhY2sgZnJvbSB0aGUgYmVnaW5uaW5nLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRFbmQpOgorCiAyMDEzLTA0LTEyICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbR1N0cmVhbWVyXSBN
ZWRpYSBhdHRyaWJ1dGUgcHJlbG9hZD0ibm9uZSIgaXMgbm90IGhvbm9yZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggZDRmODM1M2Q1MDdl
ODRlOWY2ZTgxODQyZGUxNTJhMmQyZWEzZmFhMS4uOTI2NDhmZjE0NzVkZDUzZjNhYWE5NmE0NTU5
ZWJjYTkxZmI1NjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKQEAgLTQ5OSwxMiArNDk5LDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpzZWVrKGZsb2F0IHRpbWUpCiAgICAgICAgICAgICBHU1RfRk9STUFUX1RJTUUs
CiAgICAgICAgICAgICAoR3N0U2Vla0ZsYWdzKShHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NF
RUtfRkxBR19BQ0NVUkFURSksCiAgICAgICAgICAgICBHU1RfU0VFS19UWVBFX1NFVCwgY2xvY2tU
aW1lLAotICAgICAgICAgICAgR1NUX1NFRUtfVFlQRV9OT05FLCBHU1RfQ0xPQ0tfVElNRV9OT05F
KSkKKyAgICAgICAgICAgIEdTVF9TRUVLX1RZUEVfTk9ORSwgR1NUX0NMT0NLX1RJTUVfTk9ORSkp
IHsKICAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIlNlZWsgdG8gJWYgZmFpbGVkIiwgdGltZSk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fc2Vla2luZyA9IHRydWU7Ci0gICAgICAgIG1fc2Vla1Rp
bWUgPSB0aW1lOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgbV9zZWVraW5nID0gdHJ1
ZTsKKyAgICBtX3NlZWtUaW1lID0gdGltZTsKKyAgICBpZiAobV9zZWVrVGltZSAhPSBtX21lZGlh
RHVyYXRpb24pCisgICAgICAgIG1faXNFbmRSZWFjaGVkID0gZmFsc2U7CiB9CiAKIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZWQoKSBjb25zdApAQCAtMTM0OCw3ICsxMzUx
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRpZEVuZCgpCiAKICAgICBp
ZiAoIW1fcGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllcklzTG9vcGluZygp
KSB7CiAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0
YXRlKG1fcGxheUJpbi5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworICAgICAgICBnc3RfZWxlbWVu
dF9zZXRfc3RhdGUobV9wbGF5QmluLmdldCgpLCBHU1RfU1RBVEVfUEFVU0VEKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAxNTlkYjQ5Zjk1MjEyNTQxMTI1MTcwZTFjMTFmNjA1ODY4MGIwNWJiLi4zYTM5
ZjgwMjk0MWQ4MmE4YjYwNzdlMmRjMDQ4MmY1MjBiY2QyOTJkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMDQtMTcgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisg
ICAgICAgIFtHU3RyZWFtZXJdIGNhbm5vdCBzZWVrIGFmdGVyIHZpZGVvIGZpbmlzaGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQwNDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL3ZpZGVv
LXNlZWstYWZ0ZXItZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlk
ZW8tc2Vlay1hZnRlci1lbmQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDQtMTIgIEJhbGF6cyBLZWxl
bWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIE1lZGlhIGF0
dHJpYnV0ZSBwcmVsb2FkPSJub25lIiBpcyBub3QgaG9ub3JlZApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0
NjQ5MDUxNzEzMTc2OTQxYTZmYjFkMWNjNWY4N2U3MGM4NmQ2Y2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLWFmdGVyLWVuZC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4IEBACitUZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE0MDQ0IFtHU3RyZWFtZXJdIGNhbm5vdCBzZWVrIGFmdGVyIHZpZGVvIGZpbmlzaGVk
LiBUaGlzIHRlc3QgY2hlY2tzIGlmIHdlIGNhbiBzZWVrIGFuZCBwbGF5IGZyb20gdGhlIHNlZWtl
ZCBwb3NpdGlvbiBhZnRlciB0aGUgdmlkZW8gcmVhY2hlZCB0aGUgZW5kLgorCitFVkVOVChwbGF5
aW5nKQorRVZFTlQoZW5kZWQpCitFVkVOVChzZWVrZWQpCitURVNUKHRydWUpIE9LCitFTkQgT0Yg
VEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLWFmdGVyLWVu
ZC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNjVlOTAyMGZmMGYwZmU3NTZmZGY5NzNjMjE5M2IyYTE4ZmQyYTdiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQuaHRtbApA
QCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAg
ICAgZnVuY3Rpb24gc3RhcnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciB0
aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGxvZ1Jlc3VsdCgiRmFpbCIpOyB9LCA1MDAp
OworCisgICAgICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworICAgICAgICAgICAgICAg
IHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpOworICAg
ICAgICAgICAgICAgIHZpZGVvLnBsYXkoKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnRP
bmNlKCdwbGF5aW5nJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFNlZWsg
bmVhciB0byB0aGUgZW5kLgorICAgICAgICAgICAgICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9
IHZpZGVvLmR1cmF0aW9uIC0gMC4xOworICAgICAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQo
J2VuZGVkJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWVrIGJh
Y2sgaW4gdGhlIG1pZGRsZSBhbmQgcmVzdGFydCBwbGF5aW5nLgorICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHNlZWtUaW1lID0gdmlkZW8uZHVyYXRpb24gLyAyOworICAgICAgICAgICAgICAg
ICAgICAgICAgdmlkZW8uY3VycmVudFRpbWUgPSBzZWVrVGltZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHZpZGVvLnBsYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVu
dEFuZEVuZCgnc2Vla2VkJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gV2UgdG9sYXJhdGUgc29tZSBkZWxheSBpbiBmaXJlaW5nIHRoZSAnc2Vla2VkJyBldmVu
dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0KE1hdGguYWJzKHZpZGVvLmN1cnJl
bnRUaW1lIC0gc2Vla1RpbWUpIDwgMC4yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGVhclRpbWVvdXQodGltZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCki
PgorICAgICAgICA8cD5UZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE0MDQ0IFtHU3RyZWFtZXJdIGNhbm5vdCBzZWVrIGFmdGVyIHZpZGVvIGZpbmlzaGVk
LgorICAgICAgICBUaGlzIHRlc3QgY2hlY2tzIGlmIHdlIGNhbiBzZWVrIGFuZCBwbGF5IGZyb20g
dGhlIHNlZWtlZCBwb3NpdGlvbiBhZnRlciB0aGUgdmlkZW8gcmVhY2hlZCB0aGUgZW5kLjwvcD4K
KyAgICAgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200128</attachid>
            <date>2013-04-30 10:27:11 -0700</date>
            <delta_ts>2013-05-06 02:36:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114044-20130430192625.patch</filename>
            <type>text/plain</type>
            <size>25632</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmEyN2ZmNjMyODgzMDUz
NmYxMzIyMDQ1MjhjMGExNWRiNzQ3ODg0ZC4uY2Y5YTA4NjQxMmU0Y2I4NDllNmE5Yzk1YjNmNzgy
ZDQ0M2VmODFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTA0LTMwICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1N0cmVhbWVyXSBj
YW5ub3Qgc2VlayBhZnRlciB2aWRlbyBmaW5pc2hlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQu
aHRtbAorCisgICAgICAgIFJld29yayB0aGUgc2Vla2luZyBsb2dpYyB0byBiZSBhYmxlIHRvIHNl
ZWsgYWZ0ZXIgcmVzZXRpbmcgdGhlIHBpcGVsaW5lLgorICAgICAgICBJbiBhZGRpdGlvbiB0byBz
b2x2ZSB0aGUgYWN0dWFsIHByb2JsZW0gdGhpcyBwYXRjaCBzdXBwb3NlZCB0byBtYWtlIHNlZWtp
bmcKKyAgICAgICAgbW9yZSByb2J1c3QgYW5kIGNvcnJlY3QuCisgICAgICAgIFRoZSBwcmV2aW91
cyBpbXBsZW1lbnRhdGlvbiB0cmllZCB0byBoaWRlIHRoZSBjb21wbGV4aXR5IG9mIGFzeW5jaHJv
bm91cyBvcGVyYXRpb25zCisgICAgICAgIG9uIHRoZSBwaXBlbGluZS4gSXQgZGlkIG5vdCBoYW5k
bGUgdGhlIEdTVF9NRVNTQUdFX0FTWU5DX0RPTkUgbWVzc2FnZSBmcm9tIHRoZSBidXMKKyAgICAg
ICAgYnV0IGluc3RlYWQgcmVwb3J0ZWQgdGhlIHNlZWsgYXMgZmluaXNoZWQgd2hlbiBpdCBzYXcg
YW4gYXN5bmNocm9ub3VzIHBlbmRpbmcgc3RhdGUKKyAgICAgICAgKEdTVF9TVEFURV9DSEFOR0Vf
QVNZTkMpIHdoaWNoIGNvdWxkIGhhcHBlbiB3YXkgYmVmb3JlIHRoZSBzZWVrIGlzIHJlYWxseSBk
b25lLgorICAgICAgICBOb3cgd2UgcGF5IGF0dGVudGlvbiB0byB0aGUgR1NUX01FU1NBR0VfQVNZ
TkNfRE9ORSBtZXNzYWdlIHRvIHRyYWNrIHRoZSBzdGF0dXMgb2Ygc2Vla3MuCisgICAgICAgIFNl
ZWtzIGFyZSBub3QgdGhlIG9ubHkgb3BlcmF0aW9ucyBleGVjdXRlZCBhc3luY2hyb25vdXNseSwg
Y2hhbmdpbmcgdGhlIHBpcGVsaW5nIHN0YXRlIGlzCisgICAgICAgIHNpbWlsYXIuIEl0IG1lYW5z
IGEgc2VlayBjYW4gb3ZlcmxhcCB3aXRoIG9ub3RoZXIgb25nb2luZyBhc3luY2hyb25vdXMgb3Bl
cmF0aW9uLgorICAgICAgICBUaGlzIGNoYW5nZSBhZGRyZXNzIHRoaXMgYnkgaW50cm9kdWNpbmcg
YW4gaW52YXJpYW50IGZvciBzZWVrcywgd2hpY2ggaXMgdGhhdCB3ZSBvbmx5IHJlcXVlc3QKKyAg
ICAgICAgYSBzZWVrIGlmIHRoZXJlIGFyZSBubyBvdGhlciBvbmdvaW5nIGFzeW5jaHJvbm91cyBv
cGVyYXRpb25zIGFuZCB0aGUgcGlwZWxpbmUgc3RhdGUgaXMgZWl0aGVyCisgICAgICAgIHBhdXNl
ZCBvciBwbGF5aW5nICh3aGljaCBpcyByZWNvbW1lbmRlZCBhbnl3YXkgYWNjb3JkaW5nIHRvIEdT
dHJlYW1lcidzIGRvY3VtZW50YXRpb24pLgorICAgICAgICBUaGlzIHdheSB3ZSBjYW4gYmUgc3Vy
ZSB0aGF0IHRoZSB0aW1lIHdoZW4gd2UgZ2V0IHRoZSBuZXh0IEdTVF9NRVNTQUdFX0FTWU5DX0RP
TkUgbWVzc2FnZSB0aGUKKyAgICAgICAgc2VlayBoYXMgYmVlbiBjb21wbGVldGVkLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0dzdENsb2NrVGltZSk6IEZhY3RvcmVkIHRp
bWUgY29udmVyc2F0aW9uIGludG8gYSBoZWxwZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcik6CisKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGxheWJhY2tQb3Np
dGlvbik6IFRoZSBwb3NpdGlvbiBtaWdodCBub3QgYmUgYXZhaWxhYmxlCisgICAgICAgIGlmIHRo
ZSBwaXBlbGluZSBzdGlsbCBoYXMgYSBwZW5kaW5nIHN0YXRlLiBBcyBhIHdvcmthcm91bmQsIGlm
IHdlIGFyZSByaWdodCBhZnRlciBhIHNlZWsgd2UgY2FuCisgICAgICAgIHVzZSB0aGUgc2VlayB0
aW1lLiBBdm9pZGluZyB0aGlzIHNpdHVhdGlvbiB3b3VsZCBiZSBwb3NzaWJsZSBieSBub3QgYWxs
b3dpbmcgYW55IGFzeW5jaHJvbm91cworICAgICAgICBvcGVyYXRpb24gdG8gb3ZlcmxhcC4gSSBi
ZWxpZXZlIGl0IHdvdWxkIGFkZCBhIGxvdCBtb3JlIGNvbXBsZXhpdHkgc28gSSBkZWNpZGVkIHRv
IHJhdGhlciBpbnRyb2R1Y2UKKyAgICAgICAgdGhpcyB3b3JrYXJvdW5kLiBPdGhlcndpc2UgdGhv
c2Ugb3ZlcmxhcHBpbmcgb3BlcmF0aW9ucyBhcmUgaGFuZGxlZCBmaW5lIGJ5IEdTdHJlYW1lci4K
KworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcmVwYXJl
VG9QbGF5KTogRG8gbm90IHJlc2V0IGludGVybmFsIHN0YXRlIHZhcmlhYmxlcy4KKyAgICAgICAg
VGhpcyBmdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGVyZSBpcyBhbiBpbnRlbnQgdG8gcmVzdGFydCBw
bGF5YmFjayBidXQgaXQgZG9lcyBub3QgYWN0dWFsbHkgcmVzdGFydCBpdC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3VycmVudFRpbWUpOiBKdXN0IHJl
bW92ZWQgYSBzdGFsaW5nIG5ld2xpbmUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnNlZWspOiBUYWtlIGEgbG9vayB0byB0aGUgcGlwZWxpbmUgc3RhdGUg
YW5kIGFjdCB1cG9uIHRoYXQuCisgICAgICAgIElmIHRoZXJlIGlzIGFuIG9uZ29pbmcgYXN5bmNo
cm9ub3VzIG9wZXJhdGlvbiBtYWtlIHRoZSBzZWVrIHBlbmRpbmcsIG90aGVyd2lzZSBkbyBpdCBu
b3cuCisgICAgICAgIE5vdyB3ZSBoYW5kbGUgb3ZlcmxhcHBpbmcgc2Vla3MgYXMgd2VsbCBiZWNh
dXNlIEkgc2F3IHRoYXQgaXQgY2FuIGhhcHBlbiBpbiBzb21lIHRlc3RzLgorICAgICAgICBBZGRl
ZCBhbiBlYXJseSByZXR1cm4gZm9yIGxpdmUgc3RyZWFtcyBhcyBpdCBkb2Vzbid0IG1ha2VzIHNl
bnNlIHRvIHRyeSBzZWVraW5nIGluIHRoZW0uCisKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6IEhhbmRsZSBHU1RfTUVTU0FHRV9B
U1lOQ19ET05FIGFuZCBzb21lIHJlZmFjdG9yaW5nLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphc3luY1N0YXRlQ2hhbmdlRG9uZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcyk6IE9ubHkg
aGFuZGxlIHNlZWtzIGluIHRoZSBwZW5kaW5nIGNhc2UsIHRoZSByZXN0IGlzCisgICAgICAgIG5v
dyBoYW5kbGVkIGluIGFzeW5jU3RhdGVDaGFuZ2VEb25lLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjYWNoZUR1cmF0aW9uKTogRG8gbm90IHJlc2V0IHRo
ZSBtX21lZGlhRHVyYXRpb25Lbm93biBpZiB0aGUgcGlwZWxpbmUKKyAgICAgICAgaGFzIGFuIGFz
eW5jaHJvbm91cyBwZW5kaW5nIHN0YXRlIGJlY2F1c2UgaXQgd291bGQgZmFpbC4gSXQgZG9lcyBh
Y3R1YWxseSBoYXBwZW4gd2hlbiB3ZSBnZXQgYSBkdXJhdGlvbiBtZXNzYWdlCisgICAgICAgIGFm
dGVyIHJlc3RhcnRpbmcgdGhlIHBpcGVsaW5lIGFuZCBpdCB3b3VsZCByZXN1bHQgaW4gcmVzdGFy
dGluZyBwbGF5YmFjayBmcm9tIHRoZSBzdGFydC4gSXQgc2VlbXMgdG8gYmUgYSBidWcKKyAgICAg
ICAgaW4gR1N0cmVhbWVyIHRoYXQgaXQgc2VuZHMgdGhlIGR1cmF0aW9uIG1lc3NhZ2UgdG9vIGVh
cmx5LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcik6
CisKIDIwMTMtMDQtMzAgIE5vYW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtUZXhtYXBdIFVzZSBmZXdlciBpbnRlcm1lZGlhdGUgc3VyZmFjZXMgd2hlbiBjb21wb3Np
dGluZyBmaWx0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCmluZGV4IDdiMmQ1MWRhM2NkODgzZmEzMzAwOWQ5NDdlYzg1YmQ4OTAwYjlmYWQuLjU1
YjNjMzZjMmVmMmEzMWQ2OTFhYTUyZWJlMDViODQ1MzM3MmM5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMzgsNiArMTM4LDE4IEBA
IHN0YXRpYyB2b2lkIG1lZGlhUGxheWVyUHJpdmF0ZVBsdWdpbkluc3RhbGxlclJlc3VsdEZ1bmN0
aW9uKEdzdEluc3RhbGxQbHVnaW5zUmV0CiAgICAgcGxheWVyLT5oYW5kbGVQbHVnaW5JbnN0YWxs
ZXJSZXN1bHQocmVzdWx0KTsKIH0KIAorc3RhdGljIEdzdENsb2NrVGltZSB0b0dzdENsb2NrVGlt
ZShmbG9hdCB0aW1lKQoreworICAgIC8vIEV4dHJhY3QgdGhlIGludGVnZXIgcGFydCBvZiB0aGUg
dGltZSAoc2Vjb25kcykgYW5kIHRoZSBmcmFjdGlvbmFsIHBhcnQgKG1pY3Jvc2Vjb25kcykuIEF0
dGVtcHQgdG8KKyAgICAvLyByb3VuZCB0aGUgbWljcm9zZWNvbmRzIHNvIG5vIGZsb2F0aW5nIHBv
aW50IHByZWNpc2lvbiBpcyBsb3N0IGFuZCB3ZSBjYW4gcGVyZm9ybSBhbiBhY2N1cmF0ZSBzZWVr
LgorICAgIGZsb2F0IHNlY29uZHM7CisgICAgZmxvYXQgbWljcm9TZWNvbmRzID0gbW9kZih0aW1l
LCAmc2Vjb25kcykgKiAxMDAwMDAwOworICAgIEdUaW1lVmFsIHRpbWVWYWx1ZTsKKyAgICB0aW1l
VmFsdWUudHZfc2VjID0gc3RhdGljX2Nhc3Q8Z2xvbmc+KHNlY29uZHMpOworICAgIHRpbWVWYWx1
ZS50dl91c2VjID0gc3RhdGljX2Nhc3Q8Z2xvbmc+KHJvdW5kZihtaWNyb1NlY29uZHMgLyAxMDAw
MCkgKiAxMDAwMCk7CisgICAgcmV0dXJuIEdTVF9USU1FVkFMX1RPX1RJTUUodGltZVZhbHVlKTsK
K30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldEF1ZGlvU3RyZWFtUHJv
cGVydGllcyhHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYgKGdfc3RyY21wMChHX09CSkVDVF9U
WVBFX05BTUUob2JqZWN0KSwgIkdzdFB1bHNlU2luayIpKQpAQCAtMTk5LDYgKzIxMSw4IEBAIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKE1l
ZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgLCBtX3Jlc2V0UGlwZWxpbmUoZmFsc2UpCiAgICAgLCBt
X3BhdXNlZCh0cnVlKQogICAgICwgbV9zZWVraW5nKGZhbHNlKQorICAgICwgbV9zZWVrSXNQZW5k
aW5nKGZhbHNlKQorICAgICwgbV90aW1lT2ZPdmVybGFwcGluZ1NlZWsoLTEpCiAgICAgLCBtX2J1
ZmZlcmluZyhmYWxzZSkKICAgICAsIG1fcGxheWJhY2tSYXRlKDEpCiAgICAgLCBtX2Vycm9yT2Nj
dXJlZChmYWxzZSkKQEAgLTMzMiwzMCArMzQ2LDI2IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6cGxheWJhY2tQb3NpdGlvbigpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4g
bV9zZWVrVGltZTsKICAgICAgICAgaWYgKG1fbWVkaWFEdXJhdGlvbikKICAgICAgICAgICAgIHJl
dHVybiBtX21lZGlhRHVyYXRpb247CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGZs
b2F0IHJldCA9IDAuMGY7Ci0KLSAgICBHc3RRdWVyeSogcXVlcnkgPSBnc3RfcXVlcnlfbmV3X3Bv
c2l0aW9uKEdTVF9GT1JNQVRfVElNRSk7Ci0gICAgaWYgKCFnc3RfZWxlbWVudF9xdWVyeShtX3Bs
YXlCaW4uZ2V0KCksIHF1ZXJ5KSkgewotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiUG9zaXRp
b24gcXVlcnkgZmFpbGVkLi4uIik7Ci0gICAgICAgIGdzdF9xdWVyeV91bnJlZihxdWVyeSk7Ci0g
ICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotCi0gICAgZ2ludDY0IHBvc2l0aW9uOwotICAgIGdz
dF9xdWVyeV9wYXJzZV9wb3NpdGlvbihxdWVyeSwgMCwgJnBvc2l0aW9uKTsKKyAgICAvLyBQb3Np
dGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBpZiBubyBhc3luYyBzdGF0ZSBjaGFuZ2UgaXMgZ29pbmcg
b24gYW5kIHRoZSBzdGF0ZSBpcyBlaXRoZXIgcGF1c2VkIG9yIHBsYXlpbmcuCisgICAgZ2ludDY0
IHBvc2l0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgICBHc3RRdWVyeSogcXVlcnk9IGdz
dF9xdWVyeV9uZXdfcG9zaXRpb24oR1NUX0ZPUk1BVF9USU1FKTsKKyAgICBpZiAoZ3N0X2VsZW1l
bnRfcXVlcnkobV9wbGF5QmluLmdldCgpLCBxdWVyeSkpCisgICAgICAgIGdzdF9xdWVyeV9wYXJz
ZV9wb3NpdGlvbihxdWVyeSwgMCwgJnBvc2l0aW9uKTsKIAotICAgIC8vIFBvc2l0aW9uIGlzIGF2
YWlsYWJsZSBvbmx5IGlmIHRoZSBwaXBlbGluZSBpcyBub3QgaW4gR1NUX1NUQVRFX05VTEwgb3IK
LSAgICAvLyBHU1RfU1RBVEVfUkVBRFkgc3RhdGUuCi0gICAgaWYgKHBvc2l0aW9uICE9IHN0YXRp
Y19jYXN0PGdpbnQ2ND4oR1NUX0NMT0NLX1RJTUVfTk9ORSkpCi0gICAgICAgIHJldCA9IHN0YXRp
Y19jYXN0PGRvdWJsZT4ocG9zaXRpb24pIC8gR1NUX1NFQ09ORDsKKyAgICBmbG9hdCByZXN1bHQg
PSAwLjBmOworICAgIGlmIChzdGF0aWNfY2FzdDxHc3RDbG9ja1RpbWU+KHBvc2l0aW9uKSAhPSBH
U1RfQ0xPQ0tfVElNRV9OT05FKQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxkb3VibGU+
KHBvc2l0aW9uKSAvIEdTVF9TRUNPTkQ7CisgICAgZWxzZSBpZiAobV9jYW5GYWxsQmFja1RvTGFz
dEZpbmlzaGVkU2Vla1Bvc2l0b24pCisgICAgICAgIHJlc3VsdCA9IG1fc2Vla1RpbWU7CiAKICAg
ICBMT0dfTUVESUFfTUVTU0FHRSgiUG9zaXRpb24gJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElN
RV9BUkdTKHBvc2l0aW9uKSk7CiAKICAgICBnc3RfcXVlcnlfdW5yZWYocXVlcnkpOwogCi0gICAg
cmV0dXJuIHJldDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxpbmVTdGF0ZShHc3RTdGF0ZSBuZXdTdGF0ZSkKQEAg
LTM4Niw5ICszOTYsNiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdl
UGlwZWxpbmVTdGF0ZShHc3RTdGF0ZSBuZXdTdGF0ZSkKIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnByZXBhcmVUb1BsYXkoKQogewotICAgIG1faXNFbmRSZWFjaGVkID0gZmFs
c2U7Ci0gICAgbV9zZWVraW5nID0gZmFsc2U7Ci0KICAgICBpZiAobV9kZWxheWluZ0xvYWQpIHsK
ICAgICAgICAgbV9kZWxheWluZ0xvYWQgPSBmYWxzZTsKICAgICAgICAgY29tbWl0TG9hZCgpOwpA
QCAtNDY2LDcgKzQ3Myw2IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3Vy
cmVudFRpbWUoKSBjb25zdAogICAgICAgICByZXR1cm4gMC4wZjsKIAogICAgIHJldHVybiBwbGF5
YmFja1Bvc2l0aW9uKCk7Ci0KIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnNlZWsoZmxvYXQgdGltZSkKQEAgLTQ3NywzNSArNDgzLDUyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpzZWVrKGZsb2F0IHRpbWUpCiAgICAgaWYgKG1fZXJyb3JPY2N1cmVk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0dfTUVESUFfTUVTU0FHRSgiU2VlayBhdHRlbXB0
IHRvICVmIHNlY3MiLCB0aW1lKTsKKyAgICBMT0dfTUVESUFfTUVTU0FHRSgiW1NlZWtdIHNlZWsg
YXR0ZW1wdCB0byAlZiBzZWNzIiwgdGltZSk7CiAKICAgICAvLyBBdm9pZCB1c2VsZXNzIHNlZWtp
bmcuCiAgICAgaWYgKHRpbWUgPT0gY3VycmVudFRpbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgLy8gRXh0cmFjdCB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZSB0aW1lIChzZWNvbmRzKSBhbmQg
dGhlCi0gICAgLy8gZnJhY3Rpb25hbCBwYXJ0IChtaWNyb3NlY29uZHMpLiBBdHRlbXB0IHRvIHJv
dW5kIHRoZQotICAgIC8vIG1pY3Jvc2Vjb25kcyBzbyBubyBmbG9hdGluZyBwb2ludCBwcmVjaXNp
b24gaXMgbG9zdCBhbmQgd2UgY2FuCi0gICAgLy8gcGVyZm9ybSBhbiBhY2N1cmF0ZSBzZWVrLgot
ICAgIGZsb2F0IHNlY29uZHM7Ci0gICAgZmxvYXQgbWljcm9TZWNvbmRzID0gbW9kZih0aW1lLCAm
c2Vjb25kcykgKiAxMDAwMDAwOwotICAgIEdUaW1lVmFsIHRpbWVWYWx1ZTsKLSAgICB0aW1lVmFs
dWUudHZfc2VjID0gc3RhdGljX2Nhc3Q8Z2xvbmc+KHNlY29uZHMpOwotICAgIHRpbWVWYWx1ZS50
dl91c2VjID0gc3RhdGljX2Nhc3Q8Z2xvbmc+KHJvdW5kZihtaWNyb1NlY29uZHMgLyAxMDAwMCkg
KiAxMDAwMCk7CisgICAgaWYgKGlzTGl2ZVN0cmVhbSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBHc3RDbG9ja1RpbWUgY2xvY2tUaW1lID0gdG9Hc3RDbG9ja1RpbWUodGltZSk7CisgICAgTE9H
X01FRElBX01FU1NBR0UoIltTZWVrXSBzZWVraW5nIHRvICUiIEdTVF9USU1FX0ZPUk1BVCAiICgl
ZikiLCBHU1RfVElNRV9BUkdTKGNsb2NrVGltZSksIHRpbWUpOwogCi0gICAgR3N0Q2xvY2tUaW1l
IGNsb2NrVGltZSA9IEdTVF9USU1FVkFMX1RPX1RJTUUodGltZVZhbHVlKTsKLSAgICBMT0dfTUVE
SUFfTUVTU0FHRSgiU2VlazogJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTKGNsb2Nr
VGltZSkpOwotCi0gICAgaWYgKCFnc3RfZWxlbWVudF9zZWVrKG1fcGxheUJpbi5nZXQoKSwgbV9w
bGF5ZXItPnJhdGUoKSwKLSAgICAgICAgICAgIEdTVF9GT1JNQVRfVElNRSwKLSAgICAgICAgICAg
IChHc3RTZWVrRmxhZ3MpKEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX0FDQ1VS
QVRFKSwKLSAgICAgICAgICAgIEdTVF9TRUVLX1RZUEVfU0VULCBjbG9ja1RpbWUsCi0gICAgICAg
ICAgICBHU1RfU0VFS19UWVBFX05PTkUsIEdTVF9DTE9DS19USU1FX05PTkUpKQotICAgICAgICBM
T0dfTUVESUFfTUVTU0FHRSgiU2VlayB0byAlZiBmYWlsZWQiLCB0aW1lKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgbV9zZWVraW5nID0gdHJ1ZTsKLSAgICAgICAgbV9zZWVrVGltZSA9IHRpbWU7Cisg
ICAgaWYgKG1fc2Vla2luZykgeworICAgICAgICBpZiAobV9zZWVrSXNQZW5kaW5nKSB7CisgICAg
ICAgICAgICBtX3NlZWtUaW1lID0gdGltZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBtX3RpbWVPZk92ZXJsYXBwaW5nU2VlayA9IHRpbWU7CiAgICAgfQorCisgICAg
R3N0U3RhdGUgc3RhdGU7CisgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ2V0U3RhdGVSZXN1bHQg
PSBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9wbGF5QmluLmdldCgpLCAmc3RhdGUsIDAsIDApOwor
ICAgIGlmIChnZXRTdGF0ZVJlc3VsdCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUgfHwgZ2V0
U3RhdGVSZXN1bHQgPT0gR1NUX1NUQVRFX0NIQU5HRV9OT19QUkVST0xMKSB7CisgICAgICAgIExP
R19NRURJQV9NRVNTQUdFKCJbU2Vla10gY2Fubm90IHNlZWssIGN1cnJlbnQgc3RhdGUgY2hhbmdl
IGlzICVzIiwgZ3N0X2VsZW1lbnRfc3RhdGVfY2hhbmdlX3JldHVybl9nZXRfbmFtZShnZXRTdGF0
ZVJlc3VsdCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChnZXRTdGF0ZVJlc3Vs
dCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0FTWU5DIHx8IChzdGF0ZSAhPSBHU1RfU1RBVEVfUEFVU0VE
ICYmIHN0YXRlICE9IEdTVF9TVEFURV9QTEFZSU5HKSB8fCBtX2lzRW5kUmVhY2hlZCkgeworICAg
ICAgICBtX3NlZWtJc1BlbmRpbmcgPSB0cnVlOworICAgICAgICBpZiAobV9pc0VuZFJlYWNoZWQp
IHsKKyAgICAgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJbU2Vla10gcmVzZXQgcGlwZWxpbmUi
KTsKKyAgICAgICAgICAgIEFTU0VSVChzdGF0ZSA9PSBHU1RfU1RBVEVfTlVMTCk7CisgICAgICAg
ICAgICBtX3Jlc2V0UGlwZWxpbmUgPSB0cnVlOworICAgICAgICAgICAgY2hhbmdlUGlwZWxpbmVT
dGF0ZShHU1RfU1RBVEVfUEFVU0VEKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIFdlIGNhbiBzZWVrIG5vdy4KKyAgICAgICAgaWYgKCFnc3RfZWxlbWVudF9zZWVrKG1fcGxh
eUJpbi5nZXQoKSwgbV9wbGF5ZXItPnJhdGUoKSwgR1NUX0ZPUk1BVF9USU1FLCBzdGF0aWNfY2Fz
dDxHc3RTZWVrRmxhZ3M+KEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX0FDQ1VS
QVRFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9TRUVLX1RZUEVfU0VULCBj
bG9ja1RpbWUsIEdTVF9TRUVLX1RZUEVfTk9ORSwgR1NUX0NMT0NLX1RJTUVfTk9ORSkpIHsKKyAg
ICAgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJbU2Vla10gc2Vla2luZyB0byAlZiBmYWlsZWQi
LCB0aW1lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1f
c2Vla2luZyA9IHRydWU7CisgICAgbV9zZWVrVGltZSA9IHRpbWU7CisgICAgbV9pc0VuZFJlYWNo
ZWQgPSBmYWxzZTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhdXNl
ZCgpIGNvbnN0CkBAIC02NzksNiArNzAyLDggQEAgZ2Jvb2xlYW4gTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgY29uc3Qg
R3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfbWVzc2FnZV9nZXRfc3RydWN0dXJlKG1lc3Nh
Z2UpOwogICAgIEdzdFN0YXRlIHJlcXVlc3RlZFN0YXRlLCBjdXJyZW50U3RhdGU7CiAKKyAgICBt
X2NhbkZhbGxCYWNrVG9MYXN0RmluaXNoZWRTZWVrUG9zaXRvbiA9IGZhbHNlOworCiAgICAgaWYg
KHN0cnVjdHVyZSkgewogICAgICAgICBjb25zdCBnY2hhciogbWVzc2FnZVR5cGVOYW1lID0gZ3N0
X3N0cnVjdHVyZV9nZXRfbmFtZShzdHJ1Y3R1cmUpOwogCkBAIC02OTAsNyArNzE1LDEwIEBAIGdi
b29sZWFuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNz
YWdlKiBtZXNzYWdlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgTE9HX01FRElBX01FU1NBR0Uo
Ik1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBlbGVtZW50ICVzIiwgR1NUX01FU1NBR0VfU1JDX05BTUUo
bWVzc2FnZSkpOworICAgIC8vIFdlIGlnbm9yZSBzdGF0ZSBjaGFuZ2VzIGZyb20gaW50ZXJuYWwg
ZWxlbWVudHMuIFRoZXkgYXJlIGZvcndhcmRlZCB0byBwbGF5YmluMiBhbnl3YXkuCisgICAgYm9v
bCBtZXNzYWdlU291cmNlSXNQbGF5YmluID0gR1NUX01FU1NBR0VfU1JDKG1lc3NhZ2UpID09IHJl
aW50ZXJwcmV0X2Nhc3Q8R3N0T2JqZWN0Kj4obV9wbGF5QmluLmdldCgpKTsKKworICAgIExPR19N
RURJQV9NRVNTQUdFKCJNZXNzYWdlICVzIHJlY2VpdmVkIGZyb20gZWxlbWVudCAlcyIsIEdTVF9N
RVNTQUdFX1RZUEVfTkFNRShtZXNzYWdlKSwgR1NUX01FU1NBR0VfU1JDX05BTUUobWVzc2FnZSkp
OwogICAgIHN3aXRjaCAoR1NUX01FU1NBR0VfVFlQRShtZXNzYWdlKSkgewogICAgIGNhc2UgR1NU
X01FU1NBR0VfRVJST1I6CiAgICAgICAgIGlmIChtX3Jlc2V0UGlwZWxpbmUpCkBAIC03MjgsMzMg
Kzc1NiwyNiBAQCBnYm9vbGVhbiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1l
c3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgICAgIGxvYWRpbmdGYWlsZWQoZXJy
b3IpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9NRVNTQUdFX0VPUzoKLSAgICAgICAg
TE9HX01FRElBX01FU1NBR0UoIkVuZCBvZiBTdHJlYW0iKTsKICAgICAgICAgZGlkRW5kKCk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX01FU1NBR0VfU1RBVEVfQ0hBTkdFRDoKLSAgICAg
ICAgLy8gSWdub3JlIHN0YXRlIGNoYW5nZXMgaWYgbG9hZCBpcyBkZWxheWVkIChwcmVsb2FkPW5v
bmUpLiBUaGUKLSAgICAgICAgLy8gcGxheWVyIHN0YXRlIHdpbGwgYmUgdXBkYXRlZCBvbmNlIGNv
bW1pdExvYWQoKSBpcyBjYWxsZWQuCi0gICAgICAgIGlmIChtX2RlbGF5aW5nTG9hZCkgewotICAg
ICAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIk1lZGlhIGxvYWQgaGFzIGJlZW4gZGVsYXllZC4g
SWdub3Jpbmcgc3RhdGUgY2hhbmdlcyBmb3Igbm93Iik7CisgICAgY2FzZSBHU1RfTUVTU0FHRV9B
U1lOQ19ET05FOgorICAgICAgICBpZiAoIW1lc3NhZ2VTb3VyY2VJc1BsYXliaW4gfHwgbV9kZWxh
eWluZ0xvYWQpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEln
bm9yZSBzdGF0ZSBjaGFuZ2VzIGZyb20gaW50ZXJuYWwgZWxlbWVudHMuIFRoZXkgYXJlCi0gICAg
ICAgIC8vIGZvcndhcmRlZCB0byBwbGF5YmluMiBhbnl3YXkuCi0gICAgICAgIGlmIChHU1RfTUVT
U0FHRV9TUkMobWVzc2FnZSkgPT0gcmVpbnRlcnByZXRfY2FzdDxHc3RPYmplY3QqPihtX3BsYXlC
aW4uZ2V0KCkpKSB7Ci0gICAgICAgICAgICB1cGRhdGVTdGF0ZXMoKTsKLQotICAgICAgICAgICAg
Ly8gQ29uc3RydWN0IGEgZmlsZW5hbWUgZm9yIHRoZSBncmFwaHZpeiBkb3QgZmlsZSBvdXRwdXQu
Ci0gICAgICAgICAgICBHc3RTdGF0ZSBuZXdTdGF0ZTsKLSAgICAgICAgICAgIGdzdF9tZXNzYWdl
X3BhcnNlX3N0YXRlX2NoYW5nZWQobWVzc2FnZSwgJmN1cnJlbnRTdGF0ZSwgJm5ld1N0YXRlLCAw
KTsKKyAgICAgICAgYXN5bmNTdGF0ZUNoYW5nZURvbmUoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBHU1RfTUVTU0FHRV9TVEFURV9DSEFOR0VEOiB7CisgICAgICAgIGlmICghbWVzc2FnZVNv
dXJjZUlzUGxheWJpbiB8fCBtX2RlbGF5aW5nTG9hZCkKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB1cGRhdGVTdGF0ZXMoKTsKIAotICAgICAgICAgICAgQ1N0cmluZyBkb3RGaWxlTmFtZSA9
IFN0cmluZzo6Zm9ybWF0KCJ3ZWJraXQtdmlkZW8uJXNfJXMiLAotICAgICAgICAgICAgICAgIGdz
dF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKGN1cnJlbnRTdGF0ZSksCi0gICAgICAgICAgICAgICAg
Z3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUobmV3U3RhdGUpKS51dGY4KCk7CisgICAgICAgIC8v
IENvbnN0cnVjdCBhIGZpbGVuYW1lIGZvciB0aGUgZ3JhcGh2aXogZG90IGZpbGUgb3V0cHV0Lgor
ICAgICAgICBHc3RTdGF0ZSBuZXdTdGF0ZTsKKyAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2Vfc3Rh
dGVfY2hhbmdlZChtZXNzYWdlLCAmY3VycmVudFN0YXRlLCAmbmV3U3RhdGUsIDApOworICAgICAg
ICBDU3RyaW5nIGRvdEZpbGVOYW1lID0gU3RyaW5nOjpmb3JtYXQoIndlYmtpdC12aWRlby4lc18l
cyIsIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKGN1cnJlbnRTdGF0ZSksIGdzdF9lbGVtZW50
X3N0YXRlX2dldF9uYW1lKG5ld1N0YXRlKSkudXRmOCgpOworICAgICAgICBHU1RfREVCVUdfQklO
X1RPX0RPVF9GSUxFX1dJVEhfVFMoR1NUX0JJTihtX3BsYXlCaW4uZ2V0KCkpLCBHU1RfREVCVUdf
R1JBUEhfU0hPV19BTEwsIGRvdEZpbGVOYW1lLmRhdGEoKSk7CiAKLSAgICAgICAgICAgIEdTVF9E
RUJVR19CSU5fVE9fRE9UX0ZJTEVfV0lUSF9UUyhHU1RfQklOKG1fcGxheUJpbi5nZXQoKSksIEdT
VF9ERUJVR19HUkFQSF9TSE9XX0FMTCwgZG90RmlsZU5hbWUuZGF0YSgpKTsKLSAgICAgICAgfQog
ICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9CVUZGRVJJTkc6CiAg
ICAgICAgIHByb2Nlc3NCdWZmZXJpbmdTdGF0cyhtZXNzYWdlKTsKICAgICAgICAgYnJlYWs7CkBA
IC03NjMsOCArNzg0LDggQEAgZ2Jvb2xlYW4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpo
YW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAjZWxzZQogICAgIGNhc2UgR1NUX01F
U1NBR0VfRFVSQVRJT046CiAjZW5kaWYKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIkR1cmF0
aW9uIGNoYW5nZWQiKTsKLSAgICAgICAgZHVyYXRpb25DaGFuZ2VkKCk7CisgICAgICAgIGlmICht
ZXNzYWdlU291cmNlSXNQbGF5YmluKQorICAgICAgICAgICAgZHVyYXRpb25DaGFuZ2VkKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX01FU1NBR0VfUkVRVUVTVF9TVEFURToKICAgICAg
ICAgZ3N0X21lc3NhZ2VfcGFyc2VfcmVxdWVzdF9zdGF0ZShtZXNzYWdlLCAmcmVxdWVzdGVkU3Rh
dGUpOwpAQCAtMTAzMiw2ICsxMDUzLDMxIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjYW5jZWxMb2FkKCkKICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJp
bi5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwogfQogCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6YXN5bmNTdGF0ZUNoYW5nZURvbmUoKQoreworICAgIGlmICghbV9wbGF5QmluIHx8
IG1fZXJyb3JPY2N1cmVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zZWVraW5nKSB7
CisgICAgICAgIGlmIChtX3NlZWtJc1BlbmRpbmcpCisgICAgICAgICAgICB1cGRhdGVTdGF0ZXMo
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiW1NlZWtd
IHNlZWtlZCB0byAlZiIsIG1fc2Vla1RpbWUpOworICAgICAgICAgICAgbV9zZWVraW5nID0gZmFs
c2U7CisgICAgICAgICAgICBpZiAobV90aW1lT2ZPdmVybGFwcGluZ1NlZWsgIT0gLTEpIHsKKyAg
ICAgICAgICAgICAgICBzZWVrKG1fdGltZU9mT3ZlcmxhcHBpbmdTZWVrKTsKKyAgICAgICAgICAg
ICAgICBtX3RpbWVPZk92ZXJsYXBwaW5nU2VlayA9IC0xOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gWFhYIGNvbW1lbnQKKyAgICAgICAg
ICAgIG1fY2FuRmFsbEJhY2tUb0xhc3RGaW5pc2hlZFNlZWtQb3NpdG9uID0gdHJ1ZTsKKyAgICAg
ICAgICAgIHRpbWVDaGFuZ2VkKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgdXBk
YXRlU3RhdGVzKCk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRh
dGVTdGF0ZXMoKQogewogICAgIGlmICghbV9wbGF5QmluKQpAQCAtMTA0NSwxNiArMTA5MSwxMiBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKCkKICAgICBH
c3RTdGF0ZSBzdGF0ZTsKICAgICBHc3RTdGF0ZSBwZW5kaW5nOwogCi0gICAgR3N0U3RhdGVDaGFu
Z2VSZXR1cm4gcmV0ID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGxheUJpbi5nZXQoKSwKLSAg
ICAgICAgJnN0YXRlLCAmcGVuZGluZywgMjUwICogR1NUX05TRUNPTkQpOworICAgIEdzdFN0YXRl
Q2hhbmdlUmV0dXJuIGdldFN0YXRlUmVzdWx0ID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGxh
eUJpbi5nZXQoKSwgJnN0YXRlLCAmcGVuZGluZywgMjUwICogR1NUX05TRUNPTkQpOwogCi0gICAg
Ym9vbCBzaG91bGRVcGRhdGVBZnRlclNlZWsgPSBmYWxzZTsKICAgICBib29sIHNob3VsZFVwZGF0
ZVBsYXliYWNrU3RhdGUgPSBmYWxzZTsKLSAgICBzd2l0Y2ggKHJldCkgeworICAgIHN3aXRjaCAo
Z2V0U3RhdGVSZXN1bHQpIHsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUzoKLSAg
ICAgICAgTE9HX01FRElBX01FU1NBR0UoIlN0YXRlOiAlcywgcGVuZGluZzogJXMiLAotICAgICAg
ICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLAotICAgICAgICAgICAgZ3N0
X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOworICAgICAgICBMT0dfTUVESUFfTUVT
U0FHRSgiU3RhdGU6ICVzLCBwZW5kaW5nOiAlcyIsIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1l
KHN0YXRlKSwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOwogCiAgICAgICAg
IG1fcmVzZXRQaXBlbGluZSA9IHN0YXRlIDw9IEdTVF9TVEFURV9SRUFEWTsKIApAQCAtMTEzMSwx
MSArMTE3Myw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0
ZXMoKQogICAgICAgICAgICAgbV9jaGFuZ2luZ1JhdGUgPSBmYWxzZTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChtX3NlZWtpbmcpIHsKLSAgICAgICAgICAgIHNob3VsZFVwZGF0ZUFmdGVyU2Vl
ayA9IHRydWU7Ci0gICAgICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKLSAgICAgICAgfQotCiAg
ICAgICAgIGlmIChtX3JlcXVlc3RlZFN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQgJiYgc3RhdGUg
PT0gR1NUX1NUQVRFX1BBVVNFRCkgewogICAgICAgICAgICAgc2hvdWxkVXBkYXRlUGxheWJhY2tT
dGF0ZSA9IHRydWU7CiAgICAgICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiUmVxdWVzdGVkIHN0
YXRlIGNoYW5nZSB0byAlcyB3YXMgY29tcGxldGVkIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25h
bWUoc3RhdGUpKTsKQEAgLTExNDMsOSArMTE4MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NU
X1NUQVRFX0NIQU5HRV9BU1lOQzoKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIkFzeW5jOiBT
dGF0ZTogJXMsIHBlbmRpbmc6ICVzIiwKLSAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dl
dF9uYW1lKHN0YXRlKSwKLSAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBl
bmRpbmcpKTsKKyAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIkFzeW5jOiBTdGF0ZTogJXMsIHBl
bmRpbmc6ICVzIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLCBnc3RfZWxlbWVu
dF9zdGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7CiAgICAgICAgIC8vIENoYW5nZSBpbiBwcm9ncmVz
cwogCiAgICAgICAgIC8vIE9uLWRpc2sgYnVmZmVyaW5nIHdhcyBhdHRlbXB0ZWQgYnV0IHRoZSBt
ZWRpYSBpcyBsaXZlLiBUaGlzCkBAIC0xMTYzLDI0ICsxMTk4LDEzIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAgZ3N0X2VsZW1l
bnRfc2V0X3N0YXRlKG1fcGxheUJpbi5nZXQoKSwgR1NUX1NUQVRFX1BMQVlJTkcpOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKCFpc0xpdmVTdHJlYW0oKSAmJiAhbV9idWZmZXJpbmcpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKG1fc2Vla2luZykgewotICAgICAgICAgICAg
c2hvdWxkVXBkYXRlQWZ0ZXJTZWVrID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fc2Vla2luZyA9IGZh
bHNlOwotICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5H
RV9GQUlMVVJFOgotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiRmFpbHVyZTogU3RhdGU6ICVz
LCBwZW5kaW5nOiAlcyIsCi0gICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShz
dGF0ZSksCi0gICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7
CisgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJGYWlsdXJlOiBTdGF0ZTogJXMsIHBlbmRpbmc6
ICVzIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLCBnc3RfZWxlbWVudF9zdGF0
ZV9nZXRfbmFtZShwZW5kaW5nKSk7CiAgICAgICAgIC8vIENoYW5nZSBmYWlsZWQKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9OT19QUkVST0xMOgotICAgICAgICBM
T0dfTUVESUFfTUVTU0FHRSgiTm8gcHJlcm9sbDogU3RhdGU6ICVzLCBwZW5kaW5nOiAlcyIsCi0g
ICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksCi0gICAgICAgICAg
ICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7CisgICAgICAgIExPR19NRURJ
QV9NRVNTQUdFKCJObyBwcmVyb2xsOiBTdGF0ZTogJXMsIHBlbmRpbmc6ICVzIiwgZ3N0X2VsZW1l
bnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShwZW5k
aW5nKSk7CiAKICAgICAgICAgaWYgKHN0YXRlID09IEdTVF9TVEFURV9SRUFEWSkKICAgICAgICAg
ICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKQEAgLTExOTIsNDIg
KzEyMTYsMzggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRl
cygpCiAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT0gR1NUX1NUQVRFX1BMQVlJTkcpCiAgICAg
ICAgICAgICBtX3BhdXNlZCA9IGZhbHNlOwogCi0gICAgICAgIGlmIChtX3NlZWtpbmcpIHsKLSAg
ICAgICAgICAgIHNob3VsZFVwZGF0ZUFmdGVyU2VlayA9IHRydWU7Ci0gICAgICAgICAgICBtX3Nl
ZWtpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmICghbV9wYXVzZWQpCi0gICAgICAgICAgICAg
ICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJpbi5nZXQoKSwgR1NUX1NUQVRFX1BMQVlJ
TkcpOwotICAgICAgICB9IGVsc2UgaWYgKCFtX3BhdXNlZCkKKyAgICAgICAgaWYgKCFtX3BhdXNl
ZCkKICAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4uZ2V0KCksIEdT
VF9TVEFURV9QTEFZSU5HKTsKIAogICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVy
OjpMb2FkaW5nOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBMT0dfTUVE
SUFfTUVTU0FHRSgiRWxzZSA6ICVkIiwgcmV0KTsKKyAgICAgICAgTE9HX01FRElBX01FU1NBR0Uo
IkVsc2UgOiAlZCIsIGdldFN0YXRlUmVzdWx0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAg
ICAgbV9yZXF1ZXN0ZWRTdGF0ZSA9IEdTVF9TVEFURV9WT0lEX1BFTkRJTkc7CiAKLSAgICBpZiAo
c2Vla2luZygpKQotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhp
bmc7Ci0KLSAgICBpZiAoc2hvdWxkVXBkYXRlQWZ0ZXJTZWVrKQotICAgICAgICB0aW1lQ2hhbmdl
ZCgpOwotCiAgICAgaWYgKHNob3VsZFVwZGF0ZVBsYXliYWNrU3RhdGUpCiAgICAgICAgIG1fcGxh
eWVyLT5wbGF5YmFja1N0YXRlQ2hhbmdlZCgpOwogCiAgICAgaWYgKG1fbmV0d29ya1N0YXRlICE9
IG9sZE5ldHdvcmtTdGF0ZSkgewotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiTmV0d29yayBT
dGF0ZSBDaGFuZ2VkIGZyb20gJXUgdG8gJXUiLAotICAgICAgICAgICAgb2xkTmV0d29ya1N0YXRl
LCBtX25ldHdvcmtTdGF0ZSk7CisgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJOZXR3b3JrIFN0
YXRlIENoYW5nZWQgZnJvbSAldSB0byAldSIsIG9sZE5ldHdvcmtTdGF0ZSwgbV9uZXR3b3JrU3Rh
dGUpOwogICAgICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogICAgIH0KICAg
ICBpZiAobV9yZWFkeVN0YXRlICE9IG9sZFJlYWR5U3RhdGUpIHsKLSAgICAgICAgTE9HX01FRElB
X01FU1NBR0UoIlJlYWR5IFN0YXRlIENoYW5nZWQgZnJvbSAldSB0byAldSIsCi0gICAgICAgICAg
ICBvbGRSZWFkeVN0YXRlLCBtX3JlYWR5U3RhdGUpOworICAgICAgICBMT0dfTUVESUFfTUVTU0FH
RSgiUmVhZHkgU3RhdGUgQ2hhbmdlZCBmcm9tICV1IHRvICV1Iiwgb2xkUmVhZHlTdGF0ZSwgbV9y
ZWFkeVN0YXRlKTsKICAgICAgICAgbV9wbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAg
fQorCisgICAgaWYgKG1fc2Vla0lzUGVuZGluZyAmJiBnZXRTdGF0ZVJlc3VsdCA9PSBHU1RfU1RB
VEVfQ0hBTkdFX1NVQ0NFU1MgJiYgKHN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQgfHwgc3RhdGUg
PT0gR1NUX1NUQVRFX1BMQVlJTkcpKSB7CisgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJbU2Vl
a10gY29tbWl0dGluZyBwZW5kaW5nIHNlZWsgdG8gJWYiLCBtX3NlZWtUaW1lKTsKKyAgICAgICAg
bV9zZWVrSXNQZW5kaW5nID0gZmFsc2U7CisgICAgICAgIG1fc2Vla2luZyA9IGdzdF9lbGVtZW50
X3NlZWsobV9wbGF5QmluLmdldCgpLCBtX3BsYXllci0+cmF0ZSgpLCBHU1RfRk9STUFUX1RJTUUs
IEdzdFNlZWtGbGFncyhHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19BQ0NVUkFU
RSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9TRUVLX1RZUEVf
U0VULCB0b0dzdENsb2NrVGltZShtX3NlZWtUaW1lKSwgR1NUX1NFRUtfVFlQRV9OT05FLCBHU1Rf
Q0xPQ0tfVElNRV9OT05FKTsKKyAgICAgICAgaWYgKCFtX3NlZWtpbmcpCisgICAgICAgICAgICBM
T0dfTUVESUFfTUVTU0FHRSgiW1NlZWtdIHNlZWtpbmcgdG8gJWYgZmFpbGVkIiwgbV9zZWVrVGlt
ZSk7CisgICAgfQogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bWVkaWFM
b2NhdGlvbkNoYW5nZWQoR3N0TWVzc2FnZSogbWVzc2FnZSkKQEAgLTEzNjAsMTkgKzEzODAsMTQg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhY2hlRHVyYXRpb24oKQogCiAg
ICAgLy8gQW5kIHJlLWNhY2hlIGl0IGlmIHBvc3NpYmxlLgogICAgIEdzdFN0YXRlIHN0YXRlOwot
ICAgIGdzdF9lbGVtZW50X2dldF9zdGF0ZShtX3BsYXlCaW4uZ2V0KCksICZzdGF0ZSwgMCwgMCk7
CisgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ2V0U3RhdGVSZXN1bHQgPSBnc3RfZWxlbWVudF9n
ZXRfc3RhdGUobV9wbGF5QmluLmdldCgpLCAmc3RhdGUsIDAsIDApOwogICAgIGZsb2F0IG5ld0R1
cmF0aW9uID0gZHVyYXRpb24oKTsKIAotICAgIGlmIChzdGF0ZSA8PSBHU1RfU1RBVEVfUkVBRFkp
IHsKKyAgICBpZiAoc3RhdGUgPiBHU1RfU1RBVEVfUkVBRFkgJiYgZ2V0U3RhdGVSZXN1bHQgPT0g
R1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKSB7CiAgICAgICAgIC8vIERvbid0IHNldCBtX21lZGlh
RHVyYXRpb25Lbm93biB5ZXQgaWYgdGhlIHBpcGVsaW5lIGlzIG5vdAotICAgICAgICAvLyBwYXVz
ZWQuIFRoaXMgYWxsb3dzIGR1cmF0aW9uKCkgcXVlcnkgdG8gZmFpbCBhdCBsZWFzdCBvbmNlCisg
ICAgICAgIC8vIHN0YWJsZS4gVGhpcyBhbGxvd3MgZHVyYXRpb24oKSBxdWVyeSB0byBmYWlsIGF0
IGxlYXN0IG9uY2UKICAgICAgICAgLy8gYmVmb3JlIHBsYXliYWNrIHN0YXJ0cyBhbmQgZHVyYXRp
b24gYmVjb21lcyBrbm93bi4KLSAgICAgICAgaWYgKCFzdGQ6OmlzaW5mKG5ld0R1cmF0aW9uKSkK
LSAgICAgICAgICAgIG1fbWVkaWFEdXJhdGlvbiA9IG5ld0R1cmF0aW9uOwotICAgIH0gZWxzZSB7
CiAgICAgICAgIG1fbWVkaWFEdXJhdGlvbktub3duID0gIXN0ZDo6aXNpbmYobmV3RHVyYXRpb24p
OwotICAgICAgICBpZiAobV9tZWRpYUR1cmF0aW9uS25vd24pCi0gICAgICAgICAgICBtX21lZGlh
RHVyYXRpb24gPSBuZXdEdXJhdGlvbjsKICAgICB9CiAKICAgICBpZiAoIXN0ZDo6aXNpbmYobmV3
RHVyYXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
CmluZGV4IGZjZWMwNDVlOTExNDZkZjA1NTQ2MDdiNjEwM2ViODNmMTg5NGFhYTEuLjUyZWQwNDNh
YTg0MmQxYzEyZDYwNmQ5MTlhYjg5ZmFjZjdjMTRiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBjYWNoZUR1cmF0aW9uKCk7CiAgICAgdm9pZCB1cGRhdGVTdGF0ZXMoKTsKKyAg
ICB2b2lkIGFzeW5jU3RhdGVDaGFuZ2VEb25lKCk7CiAKICAgICB2b2lkIGNyZWF0ZUdTVFBsYXlC
aW4oKTsKICAgICBib29sIGNoYW5nZVBpcGVsaW5lU3RhdGUoR3N0U3RhdGUpOwpAQCAtMTQwLDYg
KzE0MSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Jlc2V0UGlwZWxpbmU7CiAgICAgYm9vbCBt
X3BhdXNlZDsKICAgICBib29sIG1fc2Vla2luZzsKKyAgICBib29sIG1fc2Vla0lzUGVuZGluZzsK
KyAgICBmbG9hdCBtX3RpbWVPZk92ZXJsYXBwaW5nU2VlazsKKyAgICBib29sIG1fY2FuRmFsbEJh
Y2tUb0xhc3RGaW5pc2hlZFNlZWtQb3NpdG9uOwogICAgIGJvb2wgbV9idWZmZXJpbmc7CiAgICAg
ZmxvYXQgbV9wbGF5YmFja1JhdGU7CiAgICAgYm9vbCBtX2Vycm9yT2NjdXJlZDsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAw
ZjMwZTM1MjhiNzYwMDMwMzc1OTk1YTRhN2VlMDAyNzNjYTRhZTlkLi42ZWM4YjhmNzAzMWRkYjg2
ZGRjY2ZkODRkYmZmYjlmZTI5MTI1MDc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDQt
MzAgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtHU3Ry
ZWFtZXJdIGNhbm5vdCBzZWVrIGFmdGVyIHZpZGVvIGZpbmlzaGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQwNDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL3ZpZGVvLXNlZWstYWZ0ZXIt
ZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tc2Vlay1hZnRl
ci1lbmQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDQtMzAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLIGdhcmRlbmluZy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstYWZ0ZXItZW5kLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstYWZ0ZXItZW5kLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMTM0ZTY0YzIzMjRhNjgwODZlMjRlZDM5ZDMzYTFlNzIzNTAwOTVkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdCB0aGF0IHdlIGNhbiBzZWVrIGFmdGVyIHJl
YWNoZWQgdGhlIGVuZCBvZiB0aGUgdmlkZW8uCisKK0VWRU5UKHBsYXlpbmcpCitFVkVOVChlbmRl
ZCkKK0VWRU5UKHNlZWtlZCkKK0VWRU5UKHBsYXlpbmcpCitFWFBFQ1RFRCAodmlkZW8uY3VycmVu
dFRpbWUudG9GaXhlZCgyKSA9PSAnMy4wMScpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLWFmdGVyLWVuZC5odG1sIGIvTGF5b3V0VGVz
dHMvbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDQxYTA4NGM2
YzkwNjVmNzViZDBlYjIxYTkwNWRmYzVhMzhiMTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8
IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz1t
ZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0Lmpz
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnQo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKwor
ICAgICAgICAgICAgICAgIHZhciBjb3VudFBsYXlpbmcgPSAwOworICAgICAgICAgICAgICAgIHdh
aXRGb3JFdmVudCgncGxheWluZycsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoKytjb3VudFBsYXlpbmcgPiAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dSZXN1
bHQoZmFsc2UsICdGQUlMOiBwbGF5aW5nIGZpcmVkIG1vcmUgdGhlbiB0d2ljZS4nKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoY291
bnRQbGF5aW5nID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgn
dmlkZW8uY3VycmVudFRpbWUudG9GaXhlZCgyKScsICh2aWRlby5kdXJhdGlvbiAvIDIpLnRvRml4
ZWQoMiksICc9PScpOworICAgICAgICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZSgnZW5kZWQnLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb24g
LyAyOworICAgICAgICAgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZSgnc2Vla2VkJywg
ZnVuY3Rpb24oKSB7IHZpZGVvLnBsYXkoKTsgfSkKKyAgICAgICAgICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgICAgICAgICAgdmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbiAt
IDAuMjsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9
IGZpbmRNZWRpYUZpbGUoJ3ZpZGVvJywgJ2NvbnRlbnQvdGVzdCcpOworICAgICAgICAgICAgICAg
IHZpZGVvLnBsYXkoKTsKKworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgICAgIGxvZ1Jlc3VsdChmYWxzZSwgJ0ZBSUw6IHRpbWVvdXQnKTsK
KyAgICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgIH0sIDEwMDAp
OworICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8
Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cD5UZXN0IHRoYXQgd2UgY2FuIHNlZWsg
YWZ0ZXIgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSB2aWRlby48L3A+CisgICAgICAgIDx2aWRlbyBj
b250cm9scz48L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200649</attachid>
            <date>2013-05-06 02:36:52 -0700</date>
            <delta_ts>2013-05-07 03:29:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114044-20130506113558.patch</filename>
            <type>text/plain</type>
            <size>25819</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWE0ZGYyMmNkYWY1OTA2
YmJlZDAxYTAzNTRmMWFjNGNhMzEzYzBhYS4uZTljZGY3ZjZjMTk4NGRjZTMyMjg1YjdmNDIyNmJh
OTcxZDAwZjQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTA0LTMwICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1N0cmVhbWVyXSBj
YW5ub3Qgc2VlayBhZnRlciB2aWRlbyBmaW5pc2hlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQu
aHRtbAorCisgICAgICAgIFJld29yayB0aGUgc2Vla2luZyBsb2dpYyB0byBiZSBhYmxlIHRvIHNl
ZWsgYWZ0ZXIgcmVzZXRpbmcgdGhlIHBpcGVsaW5lLgorICAgICAgICBJbiBhZGRpdGlvbiB0byBz
b2x2ZSB0aGUgYWN0dWFsIHByb2JsZW0gdGhpcyBwYXRjaCBzdXBwb3NlZCB0byBtYWtlIHNlZWtp
bmcKKyAgICAgICAgbW9yZSByb2J1c3QgYW5kIGNvcnJlY3QuCisgICAgICAgIFRoZSBwcmV2aW91
cyBpbXBsZW1lbnRhdGlvbiB0cmllZCB0byBoaWRlIHRoZSBjb21wbGV4aXR5IG9mIGFzeW5jaHJv
bm91cyBvcGVyYXRpb25zCisgICAgICAgIG9uIHRoZSBwaXBlbGluZS4gSXQgZGlkIG5vdCBoYW5k
bGUgdGhlIEdTVF9NRVNTQUdFX0FTWU5DX0RPTkUgbWVzc2FnZSBmcm9tIHRoZSBidXMKKyAgICAg
ICAgYnV0IGluc3RlYWQgcmVwb3J0ZWQgdGhlIHNlZWsgYXMgZmluaXNoZWQgd2hlbiBpdCBzYXcg
YW4gYXN5bmNocm9ub3VzIHBlbmRpbmcgc3RhdGUKKyAgICAgICAgKEdTVF9TVEFURV9DSEFOR0Vf
QVNZTkMpIHdoaWNoIGNvdWxkIGhhcHBlbiB3YXkgYmVmb3JlIHRoZSBzZWVrIGlzIHJlYWxseSBk
b25lLgorICAgICAgICBOb3cgd2UgcGF5IGF0dGVudGlvbiB0byB0aGUgR1NUX01FU1NBR0VfQVNZ
TkNfRE9ORSBtZXNzYWdlIHRvIHRyYWNrIHRoZSBzdGF0dXMgb2Ygc2Vla3MuCisgICAgICAgIFNl
ZWtzIGFyZSBub3QgdGhlIG9ubHkgb3BlcmF0aW9ucyBleGVjdXRlZCBhc3luY2hyb25vdXNseSwg
Y2hhbmdpbmcgdGhlIHBpcGVsaW5nIHN0YXRlIGlzCisgICAgICAgIHNpbWlsYXIuIEl0IG1lYW5z
IGEgc2VlayBjYW4gb3ZlcmxhcCB3aXRoIG9ub3RoZXIgb25nb2luZyBhc3luY2hyb25vdXMgb3Bl
cmF0aW9uLgorICAgICAgICBUaGlzIGNoYW5nZSBhZGRyZXNzIHRoaXMgYnkgaW50cm9kdWNpbmcg
YW4gaW52YXJpYW50IGZvciBzZWVrcywgd2hpY2ggaXMgdGhhdCB3ZSBvbmx5IHJlcXVlc3QKKyAg
ICAgICAgYSBzZWVrIGlmIHRoZXJlIGFyZSBubyBvdGhlciBvbmdvaW5nIGFzeW5jaHJvbm91cyBv
cGVyYXRpb25zIGFuZCB0aGUgcGlwZWxpbmUgc3RhdGUgaXMgZWl0aGVyCisgICAgICAgIHBhdXNl
ZCBvciBwbGF5aW5nICh3aGljaCBpcyByZWNvbW1lbmRlZCBhbnl3YXkgYWNjb3JkaW5nIHRvIEdT
dHJlYW1lcidzIGRvY3VtZW50YXRpb24pLgorICAgICAgICBUaGlzIHdheSB3ZSBjYW4gYmUgc3Vy
ZSB0aGF0IHRoZSB0aW1lIHdoZW4gd2UgZ2V0IHRoZSBuZXh0IEdTVF9NRVNTQUdFX0FTWU5DX0RP
TkUgbWVzc2FnZSB0aGUKKyAgICAgICAgc2VlayBoYXMgYmVlbiBjb21wbGV0ZWQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvR3N0Q2xvY2tUaW1lKTogRmFjdG9yZWQgdGlt
ZSBjb252ZXJzYXRpb24gaW50byBhIGhlbHBlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKToKKworICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF5YmFja1Bvc2l0
aW9uKTogVGhlIHBvc2l0aW9uIG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUKKyAgICAgICAgaWYgdGhl
IHBpcGVsaW5lIHN0aWxsIGhhcyBhIHBlbmRpbmcgc3RhdGUuIEFzIGEgd29ya2Fyb3VuZCwgaWYg
d2UgYXJlIHJpZ2h0IGFmdGVyIGEgc2VlayB3ZSBjYW4KKyAgICAgICAgdXNlIHRoZSBzZWVrIHRp
bWUuIEF2b2lkaW5nIHRoaXMgc2l0dWF0aW9uIHdvdWxkIGJlIHBvc3NpYmxlIGJ5IG5vdCBhbGxv
d2luZyBhbnkgYXN5bmNocm9ub3VzCisgICAgICAgIG9wZXJhdGlvbiB0byBvdmVybGFwLiBJIGJl
bGlldmUgaXQgd291bGQgYWRkIGEgbG90IG1vcmUgY29tcGxleGl0eSBzbyBJIGRlY2lkZWQgdG8g
cmF0aGVyIGludHJvZHVjZQorICAgICAgICB0aGlzIHdvcmthcm91bmQuIE90aGVyd2lzZSB0aG9z
ZSBvdmVybGFwcGluZyBvcGVyYXRpb25zIGFyZSBoYW5kbGVkIGZpbmUgYnkgR1N0cmVhbWVyLgor
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByZXBhcmVU
b1BsYXkpOiBEbyBub3QgcmVzZXQgaW50ZXJuYWwgc3RhdGUgdmFyaWFibGVzLgorICAgICAgICBU
aGlzIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZXJlIGlzIGFuIGludGVudCB0byByZXN0YXJ0IHBs
YXliYWNrIGJ1dCBpdCBkb2VzIG5vdCBhY3R1YWxseSByZXN0YXJ0IGl0LgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjdXJyZW50VGltZSk6IEp1c3QgcmVt
b3ZlZCBhIHN0YWxpbmcgbmV3bGluZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6c2Vlayk6IFRha2UgYSBsb29rIHRvIHRoZSBwaXBlbGluZSBzdGF0ZSBh
bmQgYWN0IHVwb24gdGhhdC4KKyAgICAgICAgSWYgdGhlcmUgaXMgYW4gb25nb2luZyBhc3luY2hy
b25vdXMgb3BlcmF0aW9uIG1ha2UgdGhlIHNlZWsgcGVuZGluZywgb3RoZXJ3aXNlIGRvIGl0IG5v
dy4KKyAgICAgICAgTm93IHdlIGhhbmRsZSBvdmVybGFwcGluZyBzZWVrcyBhcyB3ZWxsIGJlY2F1
c2UgSSBzYXcgdGhhdCBpdCBjYW4gaGFwcGVuIGluIHNvbWUgdGVzdHMuCisgICAgICAgIEFkZGVk
IGFuIGVhcmx5IHJldHVybiBmb3IgbGl2ZSBzdHJlYW1zIGFzIGl0IGRvZXNuJ3QgbWFrZXMgc2Vu
c2UgdG8gdHJ5IHNlZWtpbmcgaW4gdGhlbS4KKworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKTogSGFuZGxlIEdTVF9NRVNTQUdFX0FT
WU5DX0RPTkUgYW5kIHNvbWUgcmVmYWN0b3JpbmcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmFzeW5jU3RhdGVDaGFuZ2VEb25lKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKTogT25seSBo
YW5kbGUgc2Vla3MgaW4gdGhlIHBlbmRpbmcgY2FzZSwgdGhlIHJlc3QgaXMKKyAgICAgICAgbm93
IGhhbmRsZWQgaW4gYXN5bmNTdGF0ZUNoYW5nZURvbmUuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhY2hlRHVyYXRpb24pOiBEbyBub3QgcmVzZXQgdGhl
IG1fbWVkaWFEdXJhdGlvbktub3duIGlmIHRoZSBwaXBlbGluZQorICAgICAgICBoYXMgYW4gYXN5
bmNocm9ub3VzIHBlbmRpbmcgc3RhdGUgYmVjYXVzZSBpdCB3b3VsZCBmYWlsLiBJdCBkb2VzIGFj
dHVhbGx5IGhhcHBlbiB3aGVuIHdlIGdldCBhIGR1cmF0aW9uIG1lc3NhZ2UKKyAgICAgICAgYWZ0
ZXIgcmVzdGFydGluZyB0aGUgcGlwZWxpbmUgYW5kIGl0IHdvdWxkIHJlc3VsdCBpbiByZXN0YXJ0
aW5nIHBsYXliYWNrIGZyb20gdGhlIHN0YXJ0LiBJdCBzZWVtcyB0byBiZSBhIGJ1ZworICAgICAg
ICBpbiBHU3RyZWFtZXIgdGhhdCBpdCBzZW5kcyB0aGUgZHVyYXRpb24gbWVzc2FnZSB0b28gZWFy
bHkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKToK
KwogMjAxMy0wNS0wNiAgWm9sdGFuIEFydmFpICA8emFydmFpQGluZi51LXN6ZWdlZC5odT4KIAog
ICAgICAgICBbUXRdW1dpbl0gVW5yZXZpZXdlZCBidWlsZGZpeCBhZnRlciByMTQ5NTc5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3ZjUy
ODA1MDQ4NjE1MTA2ZDM4YjhhMTY2NDFkNzU3ZTVhY2Y4ZmQ4Li4zNTFhMDE1ZDk5NGZkM2VhMzZl
ZTc4NDEyM2U0NjZmMzQ4NDQ5YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTM4LDYgKzEzOCwxOCBAQCBzdGF0aWMgdm9pZCBtZWRp
YVBsYXllclByaXZhdGVQbHVnaW5JbnN0YWxsZXJSZXN1bHRGdW5jdGlvbihHc3RJbnN0YWxsUGx1
Z2luc1JldAogICAgIHBsYXllci0+aGFuZGxlUGx1Z2luSW5zdGFsbGVyUmVzdWx0KHJlc3VsdCk7
CiB9CiAKK3N0YXRpYyBHc3RDbG9ja1RpbWUgdG9Hc3RDbG9ja1RpbWUoZmxvYXQgdGltZSkKK3sK
KyAgICAvLyBFeHRyYWN0IHRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhlIHRpbWUgKHNlY29uZHMpIGFu
ZCB0aGUgZnJhY3Rpb25hbCBwYXJ0IChtaWNyb3NlY29uZHMpLiBBdHRlbXB0IHRvCisgICAgLy8g
cm91bmQgdGhlIG1pY3Jvc2Vjb25kcyBzbyBubyBmbG9hdGluZyBwb2ludCBwcmVjaXNpb24gaXMg
bG9zdCBhbmQgd2UgY2FuIHBlcmZvcm0gYW4gYWNjdXJhdGUgc2Vlay4KKyAgICBmbG9hdCBzZWNv
bmRzOworICAgIGZsb2F0IG1pY3JvU2Vjb25kcyA9IG1vZGYodGltZSwgJnNlY29uZHMpICogMTAw
MDAwMDsKKyAgICBHVGltZVZhbCB0aW1lVmFsdWU7CisgICAgdGltZVZhbHVlLnR2X3NlYyA9IHN0
YXRpY19jYXN0PGdsb25nPihzZWNvbmRzKTsKKyAgICB0aW1lVmFsdWUudHZfdXNlYyA9IHN0YXRp
Y19jYXN0PGdsb25nPihyb3VuZGYobWljcm9TZWNvbmRzIC8gMTAwMDApICogMTAwMDApOworICAg
IHJldHVybiBHU1RfVElNRVZBTF9UT19USU1FKHRpbWVWYWx1ZSk7Cit9CisKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXMoR09iamVjdCog
b2JqZWN0KQogewogICAgIGlmIChnX3N0cmNtcDAoR19PQkpFQ1RfVFlQRV9OQU1FKG9iamVjdCks
ICJHc3RQdWxzZVNpbmsiKSkKQEAgLTE5OSw2ICsyMTEsOCBAQCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciogcGxheWVy
KQogICAgICwgbV9yZXNldFBpcGVsaW5lKGZhbHNlKQogICAgICwgbV9wYXVzZWQodHJ1ZSkKICAg
ICAsIG1fc2Vla2luZyhmYWxzZSkKKyAgICAsIG1fc2Vla0lzUGVuZGluZyhmYWxzZSkKKyAgICAs
IG1fdGltZU9mT3ZlcmxhcHBpbmdTZWVrKC0xKQogICAgICwgbV9idWZmZXJpbmcoZmFsc2UpCiAg
ICAgLCBtX3BsYXliYWNrUmF0ZSgxKQogICAgICwgbV9lcnJvck9jY3VyZWQoZmFsc2UpCkBAIC0z
MzIsMzAgKzM0NiwyNiBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXli
YWNrUG9zaXRpb24oKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIG1fc2Vla1RpbWU7CiAgICAg
ICAgIGlmIChtX21lZGlhRHVyYXRpb24pCiAgICAgICAgICAgICByZXR1cm4gbV9tZWRpYUR1cmF0
aW9uOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBmbG9hdCByZXQgPSAwLjBmOwot
Ci0gICAgR3N0UXVlcnkqIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19wb3NpdGlvbihHU1RfRk9STUFU
X1RJTUUpOwotICAgIGlmICghZ3N0X2VsZW1lbnRfcXVlcnkobV9wbGF5QmluLmdldCgpLCBxdWVy
eSkpIHsKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIlBvc2l0aW9uIHF1ZXJ5IGZhaWxlZC4u
LiIpOwotICAgICAgICBnc3RfcXVlcnlfdW5yZWYocXVlcnkpOwotICAgICAgICByZXR1cm4gcmV0
OwotICAgIH0KLQotICAgIGdpbnQ2NCBwb3NpdGlvbjsKLSAgICBnc3RfcXVlcnlfcGFyc2VfcG9z
aXRpb24ocXVlcnksIDAsICZwb3NpdGlvbik7CisgICAgLy8gUG9zaXRpb24gaXMgb25seSBhdmFp
bGFibGUgaWYgbm8gYXN5bmMgc3RhdGUgY2hhbmdlIGlzIGdvaW5nIG9uIGFuZCB0aGUgc3RhdGUg
aXMgZWl0aGVyIHBhdXNlZCBvciBwbGF5aW5nLgorICAgIGdpbnQ2NCBwb3NpdGlvbiA9IEdTVF9D
TE9DS19USU1FX05PTkU7CisgICAgR3N0UXVlcnkqIHF1ZXJ5PSBnc3RfcXVlcnlfbmV3X3Bvc2l0
aW9uKEdTVF9GT1JNQVRfVElNRSk7CisgICAgaWYgKGdzdF9lbGVtZW50X3F1ZXJ5KG1fcGxheUJp
bi5nZXQoKSwgcXVlcnkpKQorICAgICAgICBnc3RfcXVlcnlfcGFyc2VfcG9zaXRpb24ocXVlcnks
IDAsICZwb3NpdGlvbik7CiAKLSAgICAvLyBQb3NpdGlvbiBpcyBhdmFpbGFibGUgb25seSBpZiB0
aGUgcGlwZWxpbmUgaXMgbm90IGluIEdTVF9TVEFURV9OVUxMIG9yCi0gICAgLy8gR1NUX1NUQVRF
X1JFQURZIHN0YXRlLgotICAgIGlmIChwb3NpdGlvbiAhPSBzdGF0aWNfY2FzdDxnaW50NjQ+KEdT
VF9DTE9DS19USU1FX05PTkUpKQotICAgICAgICByZXQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHBv
c2l0aW9uKSAvIEdTVF9TRUNPTkQ7CisgICAgZmxvYXQgcmVzdWx0ID0gMC4wZjsKKyAgICBpZiAo
c3RhdGljX2Nhc3Q8R3N0Q2xvY2tUaW1lPihwb3NpdGlvbikgIT0gR1NUX0NMT0NLX1RJTUVfTk9O
RSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihwb3NpdGlvbikgLyBHU1Rf
U0VDT05EOworICAgIGVsc2UgaWYgKG1fY2FuRmFsbEJhY2tUb0xhc3RGaW5pc2hlZFNlZWtQb3Np
dG9uKQorICAgICAgICByZXN1bHQgPSBtX3NlZWtUaW1lOwogCiAgICAgTE9HX01FRElBX01FU1NB
R0UoIlBvc2l0aW9uICUiIEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyhwb3NpdGlvbikp
OwogCiAgICAgZ3N0X3F1ZXJ5X3VucmVmKHF1ZXJ5KTsKIAotICAgIHJldHVybiByZXQ7CisgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNo
YW5nZVBpcGVsaW5lU3RhdGUoR3N0U3RhdGUgbmV3U3RhdGUpCkBAIC0zODYsOSArMzk2LDYgQEAg
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNoYW5nZVBpcGVsaW5lU3RhdGUoR3N0
U3RhdGUgbmV3U3RhdGUpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcmVw
YXJlVG9QbGF5KCkKIHsKLSAgICBtX2lzRW5kUmVhY2hlZCA9IGZhbHNlOwotICAgIG1fc2Vla2lu
ZyA9IGZhbHNlOwotCiAgICAgaWYgKG1fZGVsYXlpbmdMb2FkKSB7CiAgICAgICAgIG1fZGVsYXlp
bmdMb2FkID0gZmFsc2U7CiAgICAgICAgIGNvbW1pdExvYWQoKTsKQEAgLTQ2Niw3ICs0NzMsNiBA
QCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmN1cnJlbnRUaW1lKCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIDAuMGY7CiAKICAgICByZXR1cm4gcGxheWJhY2tQb3NpdGlvbigpOwot
CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKGZsb2F0IHRpbWUp
CkBAIC00NzcsMzUgKzQ4Myw1MiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
c2VlayhmbG9hdCB0aW1lKQogICAgIGlmIChtX2Vycm9yT2NjdXJlZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgTE9HX01FRElBX01FU1NBR0UoIlNlZWsgYXR0ZW1wdCB0byAlZiBzZWNzIiwgdGlt
ZSk7CisgICAgTE9HX01FRElBX01FU1NBR0UoIltTZWVrXSBzZWVrIGF0dGVtcHQgdG8gJWYgc2Vj
cyIsIHRpbWUpOwogCiAgICAgLy8gQXZvaWQgdXNlbGVzcyBzZWVraW5nLgogICAgIGlmICh0aW1l
ID09IGN1cnJlbnRUaW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEV4dHJhY3QgdGhl
IGludGVnZXIgcGFydCBvZiB0aGUgdGltZSAoc2Vjb25kcykgYW5kIHRoZQotICAgIC8vIGZyYWN0
aW9uYWwgcGFydCAobWljcm9zZWNvbmRzKS4gQXR0ZW1wdCB0byByb3VuZCB0aGUKLSAgICAvLyBt
aWNyb3NlY29uZHMgc28gbm8gZmxvYXRpbmcgcG9pbnQgcHJlY2lzaW9uIGlzIGxvc3QgYW5kIHdl
IGNhbgotICAgIC8vIHBlcmZvcm0gYW4gYWNjdXJhdGUgc2Vlay4KLSAgICBmbG9hdCBzZWNvbmRz
OwotICAgIGZsb2F0IG1pY3JvU2Vjb25kcyA9IG1vZGYodGltZSwgJnNlY29uZHMpICogMTAwMDAw
MDsKLSAgICBHVGltZVZhbCB0aW1lVmFsdWU7Ci0gICAgdGltZVZhbHVlLnR2X3NlYyA9IHN0YXRp
Y19jYXN0PGdsb25nPihzZWNvbmRzKTsKLSAgICB0aW1lVmFsdWUudHZfdXNlYyA9IHN0YXRpY19j
YXN0PGdsb25nPihyb3VuZGYobWljcm9TZWNvbmRzIC8gMTAwMDApICogMTAwMDApOworICAgIGlm
IChpc0xpdmVTdHJlYW0oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3N0Q2xvY2tUaW1lIGNs
b2NrVGltZSA9IHRvR3N0Q2xvY2tUaW1lKHRpbWUpOworICAgIExPR19NRURJQV9NRVNTQUdFKCJb
U2Vla10gc2Vla2luZyB0byAlIiBHU1RfVElNRV9GT1JNQVQgIiAoJWYpIiwgR1NUX1RJTUVfQVJH
UyhjbG9ja1RpbWUpLCB0aW1lKTsKIAotICAgIEdzdENsb2NrVGltZSBjbG9ja1RpbWUgPSBHU1Rf
VElNRVZBTF9UT19USU1FKHRpbWVWYWx1ZSk7Ci0gICAgTE9HX01FRElBX01FU1NBR0UoIlNlZWs6
ICUiIEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyhjbG9ja1RpbWUpKTsKLQotICAgIGlm
ICghZ3N0X2VsZW1lbnRfc2VlayhtX3BsYXlCaW4uZ2V0KCksIG1fcGxheWVyLT5yYXRlKCksCi0g
ICAgICAgICAgICBHU1RfRk9STUFUX1RJTUUsCi0gICAgICAgICAgICAoR3N0U2Vla0ZsYWdzKShH
U1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19BQ0NVUkFURSksCi0gICAgICAgICAg
ICBHU1RfU0VFS19UWVBFX1NFVCwgY2xvY2tUaW1lLAotICAgICAgICAgICAgR1NUX1NFRUtfVFlQ
RV9OT05FLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSkKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0Uo
IlNlZWsgdG8gJWYgZmFpbGVkIiwgdGltZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fc2Vla2lu
ZyA9IHRydWU7Ci0gICAgICAgIG1fc2Vla1RpbWUgPSB0aW1lOworICAgIGlmIChtX3NlZWtpbmcp
IHsKKyAgICAgICAgaWYgKG1fc2Vla0lzUGVuZGluZykgeworICAgICAgICAgICAgbV9zZWVrVGlt
ZSA9IHRpbWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV90aW1l
T2ZPdmVybGFwcGluZ1NlZWsgPSB0aW1lOwogICAgIH0KKworICAgIEdzdFN0YXRlIHN0YXRlOwor
ICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIGdldFN0YXRlUmVzdWx0ID0gZ3N0X2VsZW1lbnRfZ2V0
X3N0YXRlKG1fcGxheUJpbi5nZXQoKSwgJnN0YXRlLCAwLCAwKTsKKyAgICBpZiAoZ2V0U3RhdGVS
ZXN1bHQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFIHx8IGdldFN0YXRlUmVzdWx0ID09IEdT
VF9TVEFURV9DSEFOR0VfTk9fUFJFUk9MTCkgeworICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgi
W1NlZWtdIGNhbm5vdCBzZWVrLCBjdXJyZW50IHN0YXRlIGNoYW5nZSBpcyAlcyIsIGdzdF9lbGVt
ZW50X3N0YXRlX2NoYW5nZV9yZXR1cm5fZ2V0X25hbWUoZ2V0U3RhdGVSZXN1bHQpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZ2V0U3RhdGVSZXN1bHQgPT0gR1NUX1NUQVRFX0NI
QU5HRV9BU1lOQyB8fCAoc3RhdGUgIT0gR1NUX1NUQVRFX1BBVVNFRCAmJiBzdGF0ZSAhPSBHU1Rf
U1RBVEVfUExBWUlORykgfHwgbV9pc0VuZFJlYWNoZWQpIHsKKyAgICAgICAgbV9zZWVrSXNQZW5k
aW5nID0gdHJ1ZTsKKyAgICAgICAgaWYgKG1faXNFbmRSZWFjaGVkKSB7CisgICAgICAgICAgICBM
T0dfTUVESUFfTUVTU0FHRSgiW1NlZWtdIHJlc2V0IHBpcGVsaW5lIik7CisgICAgICAgICAgICBB
U1NFUlQoc3RhdGUgPT0gR1NUX1NUQVRFX05VTEwpOworICAgICAgICAgICAgbV9yZXNldFBpcGVs
aW5lID0gdHJ1ZTsKKyAgICAgICAgICAgIGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BB
VVNFRCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBXZSBjYW4gc2VlayBu
b3cuCisgICAgICAgIGlmICghZ3N0X2VsZW1lbnRfc2VlayhtX3BsYXlCaW4uZ2V0KCksIG1fcGxh
eWVyLT5yYXRlKCksIEdTVF9GT1JNQVRfVElNRSwgc3RhdGljX2Nhc3Q8R3N0U2Vla0ZsYWdzPihH
U1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19BQ0NVUkFURSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHU1RfU0VFS19UWVBFX1NFVCwgY2xvY2tUaW1lLCBHU1RfU0VF
S19UWVBFX05PTkUsIEdTVF9DTE9DS19USU1FX05PTkUpKSB7CisgICAgICAgICAgICBMT0dfTUVE
SUFfTUVTU0FHRSgiW1NlZWtdIHNlZWtpbmcgdG8gJWYgZmFpbGVkIiwgdGltZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3NlZWtpbmcgPSB0cnVlOwor
ICAgIG1fc2Vla1RpbWUgPSB0aW1lOworICAgIG1faXNFbmRSZWFjaGVkID0gZmFsc2U7CiB9CiAK
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZWQoKSBjb25zdApAQCAtNjc5
LDYgKzcwMiw4IEBAIGdib29sZWFuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxl
TWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgIGNvbnN0IEdzdFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gZ3N0X21lc3NhZ2VfZ2V0X3N0cnVjdHVyZShtZXNzYWdlKTsKICAgICBHc3RTdGF0
ZSByZXF1ZXN0ZWRTdGF0ZSwgY3VycmVudFN0YXRlOwogCisgICAgbV9jYW5GYWxsQmFja1RvTGFz
dEZpbmlzaGVkU2Vla1Bvc2l0b24gPSBmYWxzZTsKKwogICAgIGlmIChzdHJ1Y3R1cmUpIHsKICAg
ICAgICAgY29uc3QgZ2NoYXIqIG1lc3NhZ2VUeXBlTmFtZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25h
bWUoc3RydWN0dXJlKTsKIApAQCAtNjkwLDcgKzcxNSwxMCBAQCBnYm9vbGVhbiBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgfQogICAgIH0KIAotICAgIExPR19NRURJQV9NRVNTQUdFKCJNZXNzYWdlIHJlY2VpdmVk
IGZyb20gZWxlbWVudCAlcyIsIEdTVF9NRVNTQUdFX1NSQ19OQU1FKG1lc3NhZ2UpKTsKKyAgICAv
LyBXZSBpZ25vcmUgc3RhdGUgY2hhbmdlcyBmcm9tIGludGVybmFsIGVsZW1lbnRzLiBUaGV5IGFy
ZSBmb3J3YXJkZWQgdG8gcGxheWJpbjIgYW55d2F5LgorICAgIGJvb2wgbWVzc2FnZVNvdXJjZUlz
UGxheWJpbiA9IEdTVF9NRVNTQUdFX1NSQyhtZXNzYWdlKSA9PSByZWludGVycHJldF9jYXN0PEdz
dE9iamVjdCo+KG1fcGxheUJpbi5nZXQoKSk7CisKKyAgICBMT0dfTUVESUFfTUVTU0FHRSgiTWVz
c2FnZSAlcyByZWNlaXZlZCBmcm9tIGVsZW1lbnQgJXMiLCBHU1RfTUVTU0FHRV9UWVBFX05BTUUo
bWVzc2FnZSksIEdTVF9NRVNTQUdFX1NSQ19OQU1FKG1lc3NhZ2UpKTsKICAgICBzd2l0Y2ggKEdT
VF9NRVNTQUdFX1RZUEUobWVzc2FnZSkpIHsKICAgICBjYXNlIEdTVF9NRVNTQUdFX0VSUk9SOgog
ICAgICAgICBpZiAobV9yZXNldFBpcGVsaW5lKQpAQCAtNzI4LDMzICs3NTYsMjYgQEAgZ2Jvb2xl
YW4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2Uq
IG1lc3NhZ2UpCiAgICAgICAgICAgICBsb2FkaW5nRmFpbGVkKGVycm9yKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FT1M6Ci0gICAgICAgIExPR19NRURJQV9NRVNTQUdF
KCJFbmQgb2YgU3RyZWFtIik7CiAgICAgICAgIGRpZEVuZCgpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEdTVF9NRVNTQUdFX1NUQVRFX0NIQU5HRUQ6Ci0gICAgICAgIC8vIElnbm9yZSBzdGF0
ZSBjaGFuZ2VzIGlmIGxvYWQgaXMgZGVsYXllZCAocHJlbG9hZD1ub25lKS4gVGhlCi0gICAgICAg
IC8vIHBsYXllciBzdGF0ZSB3aWxsIGJlIHVwZGF0ZWQgb25jZSBjb21taXRMb2FkKCkgaXMgY2Fs
bGVkLgotICAgICAgICBpZiAobV9kZWxheWluZ0xvYWQpIHsKLSAgICAgICAgICAgIExPR19NRURJ
QV9NRVNTQUdFKCJNZWRpYSBsb2FkIGhhcyBiZWVuIGRlbGF5ZWQuIElnbm9yaW5nIHN0YXRlIGNo
YW5nZXMgZm9yIG5vdyIpOworICAgIGNhc2UgR1NUX01FU1NBR0VfQVNZTkNfRE9ORToKKyAgICAg
ICAgaWYgKCFtZXNzYWdlU291cmNlSXNQbGF5YmluIHx8IG1fZGVsYXlpbmdMb2FkKQogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZ25vcmUgc3RhdGUgY2hhbmdl
cyBmcm9tIGludGVybmFsIGVsZW1lbnRzLiBUaGV5IGFyZQotICAgICAgICAvLyBmb3J3YXJkZWQg
dG8gcGxheWJpbjIgYW55d2F5LgotICAgICAgICBpZiAoR1NUX01FU1NBR0VfU1JDKG1lc3NhZ2Up
ID09IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0T2JqZWN0Kj4obV9wbGF5QmluLmdldCgpKSkgewotICAg
ICAgICAgICAgdXBkYXRlU3RhdGVzKCk7Ci0KLSAgICAgICAgICAgIC8vIENvbnN0cnVjdCBhIGZp
bGVuYW1lIGZvciB0aGUgZ3JhcGh2aXogZG90IGZpbGUgb3V0cHV0LgotICAgICAgICAgICAgR3N0
U3RhdGUgbmV3U3RhdGU7Ci0gICAgICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9zdGF0ZV9jaGFu
Z2VkKG1lc3NhZ2UsICZjdXJyZW50U3RhdGUsICZuZXdTdGF0ZSwgMCk7CisgICAgICAgIGFzeW5j
U3RhdGVDaGFuZ2VEb25lKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX01FU1NBR0Vf
U1RBVEVfQ0hBTkdFRDogeworICAgICAgICBpZiAoIW1lc3NhZ2VTb3VyY2VJc1BsYXliaW4gfHwg
bV9kZWxheWluZ0xvYWQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdXBkYXRlU3RhdGVz
KCk7CiAKLSAgICAgICAgICAgIENTdHJpbmcgZG90RmlsZU5hbWUgPSBTdHJpbmc6OmZvcm1hdCgi
d2Via2l0LXZpZGVvLiVzXyVzIiwKLSAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9n
ZXRfbmFtZShjdXJyZW50U3RhdGUpLAotICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRl
X2dldF9uYW1lKG5ld1N0YXRlKSkudXRmOCgpOworICAgICAgICAvLyBDb25zdHJ1Y3QgYSBmaWxl
bmFtZSBmb3IgdGhlIGdyYXBodml6IGRvdCBmaWxlIG91dHB1dC4KKyAgICAgICAgR3N0U3RhdGUg
bmV3U3RhdGU7CisgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX3N0YXRlX2NoYW5nZWQobWVzc2Fn
ZSwgJmN1cnJlbnRTdGF0ZSwgJm5ld1N0YXRlLCAwKTsKKyAgICAgICAgQ1N0cmluZyBkb3RGaWxl
TmFtZSA9IFN0cmluZzo6Zm9ybWF0KCJ3ZWJraXQtdmlkZW8uJXNfJXMiLCBnc3RfZWxlbWVudF9z
dGF0ZV9nZXRfbmFtZShjdXJyZW50U3RhdGUpLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShu
ZXdTdGF0ZSkpLnV0ZjgoKTsKKyAgICAgICAgR1NUX0RFQlVHX0JJTl9UT19ET1RfRklMRV9XSVRI
X1RTKEdTVF9CSU4obV9wbGF5QmluLmdldCgpKSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMLCBk
b3RGaWxlTmFtZS5kYXRhKCkpOwogCi0gICAgICAgICAgICBHU1RfREVCVUdfQklOX1RPX0RPVF9G
SUxFX1dJVEhfVFMoR1NUX0JJTihtX3BsYXlCaW4uZ2V0KCkpLCBHU1RfREVCVUdfR1JBUEhfU0hP
V19BTEwsIGRvdEZpbGVOYW1lLmRhdGEoKSk7Ci0gICAgICAgIH0KICAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgIGNhc2UgR1NUX01FU1NBR0VfQlVGRkVSSU5HOgogICAgICAgICBwcm9jZXNzQnVm
ZmVyaW5nU3RhdHMobWVzc2FnZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzYzLDggKzc4NCw4IEBA
IGdib29sZWFuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RN
ZXNzYWdlKiBtZXNzYWdlKQogI2Vsc2UKICAgICBjYXNlIEdTVF9NRVNTQUdFX0RVUkFUSU9OOgog
I2VuZGlmCi0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJEdXJhdGlvbiBjaGFuZ2VkIik7Ci0g
ICAgICAgIGR1cmF0aW9uQ2hhbmdlZCgpOworICAgICAgICBpZiAobWVzc2FnZVNvdXJjZUlzUGxh
eWJpbikKKyAgICAgICAgICAgIGR1cmF0aW9uQ2hhbmdlZCgpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEdTVF9NRVNTQUdFX1JFUVVFU1RfU1RBVEU6CiAgICAgICAgIGdzdF9tZXNzYWdlX3Bh
cnNlX3JlcXVlc3Rfc3RhdGUobWVzc2FnZSwgJnJlcXVlc3RlZFN0YXRlKTsKQEAgLTEwMzIsNiAr
MTA1MywzMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2FuY2VsTG9hZCgp
CiAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4uZ2V0KCksIEdTVF9TVEFU
RV9OVUxMKTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmFzeW5jU3Rh
dGVDaGFuZ2VEb25lKCkKK3sKKyAgICBpZiAoIW1fcGxheUJpbiB8fCBtX2Vycm9yT2NjdXJlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc2Vla2luZykgeworICAgICAgICBpZiAobV9z
ZWVrSXNQZW5kaW5nKQorICAgICAgICAgICAgdXBkYXRlU3RhdGVzKCk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIltTZWVrXSBzZWVrZWQgdG8gJWYiLCBt
X3NlZWtUaW1lKTsKKyAgICAgICAgICAgIG1fc2Vla2luZyA9IGZhbHNlOworICAgICAgICAgICAg
aWYgKG1fdGltZU9mT3ZlcmxhcHBpbmdTZWVrICE9IC0xKSB7CisgICAgICAgICAgICAgICAgc2Vl
ayhtX3RpbWVPZk92ZXJsYXBwaW5nU2Vlayk7CisgICAgICAgICAgICAgICAgbV90aW1lT2ZPdmVy
bGFwcGluZ1NlZWsgPSAtMTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBwaXBlbGluZSBjYW4gc3RpbGwgaGF2ZSBhIHBlbmRpbmcg
c3RhdGUgY2hhbmdlLiBJbiB0aGlzIGNhbiBub3QgcXVlcnkKKyAgICAgICAgICAgIC8vIHRoZSBw
b3NpdGlvbi4gUmlnaHQgbm93IHdlIGNhbiB1c2UgbV9zZWVrVGltZSBhcyBhIGZhbGxiYWNrLgor
ICAgICAgICAgICAgbV9jYW5GYWxsQmFja1RvTGFzdEZpbmlzaGVkU2Vla1Bvc2l0b24gPSB0cnVl
OworICAgICAgICAgICAgdGltZUNoYW5nZWQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAg
ICAgICB1cGRhdGVTdGF0ZXMoKTsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnVwZGF0ZVN0YXRlcygpCiB7CiAgICAgaWYgKCFtX3BsYXlCaW4pCkBAIC0xMDQ1LDE2ICsx
MDkyLDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMo
KQogICAgIEdzdFN0YXRlIHN0YXRlOwogICAgIEdzdFN0YXRlIHBlbmRpbmc7CiAKLSAgICBHc3RT
dGF0ZUNoYW5nZVJldHVybiByZXQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9wbGF5QmluLmdl
dCgpLAotICAgICAgICAmc3RhdGUsICZwZW5kaW5nLCAyNTAgKiBHU1RfTlNFQ09ORCk7CisgICAg
R3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ2V0U3RhdGVSZXN1bHQgPSBnc3RfZWxlbWVudF9nZXRfc3Rh
dGUobV9wbGF5QmluLmdldCgpLCAmc3RhdGUsICZwZW5kaW5nLCAyNTAgKiBHU1RfTlNFQ09ORCk7
CiAKLSAgICBib29sIHNob3VsZFVwZGF0ZUFmdGVyU2VlayA9IGZhbHNlOwogICAgIGJvb2wgc2hv
dWxkVXBkYXRlUGxheWJhY2tTdGF0ZSA9IGZhbHNlOwotICAgIHN3aXRjaCAocmV0KSB7CisgICAg
c3dpdGNoIChnZXRTdGF0ZVJlc3VsdCkgewogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9TVUND
RVNTOgotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiU3RhdGU6ICVzLCBwZW5kaW5nOiAlcyIs
Ci0gICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksCi0gICAgICAg
ICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7CisgICAgICAgIExPR19N
RURJQV9NRVNTQUdFKCJTdGF0ZTogJXMsIHBlbmRpbmc6ICVzIiwgZ3N0X2VsZW1lbnRfc3RhdGVf
Z2V0X25hbWUoc3RhdGUpLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7CiAK
ICAgICAgICAgbV9yZXNldFBpcGVsaW5lID0gc3RhdGUgPD0gR1NUX1NUQVRFX1JFQURZOwogCkBA
IC0xMTMxLDExICsxMTc0LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVw
ZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICBtX2NoYW5naW5nUmF0ZSA9IGZhbHNlOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKG1fc2Vla2luZykgewotICAgICAgICAgICAgc2hvdWxkVXBkYXRl
QWZ0ZXJTZWVrID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fc2Vla2luZyA9IGZhbHNlOwotICAgICAg
ICB9Ci0KICAgICAgICAgaWYgKG1fcmVxdWVzdGVkU3RhdGUgPT0gR1NUX1NUQVRFX1BBVVNFRCAm
JiBzdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VEKSB7CiAgICAgICAgICAgICBzaG91bGRVcGRhdGVQ
bGF5YmFja1N0YXRlID0gdHJ1ZTsKICAgICAgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJSZXF1
ZXN0ZWQgc3RhdGUgY2hhbmdlIHRvICVzIHdhcyBjb21wbGV0ZWQiLCBnc3RfZWxlbWVudF9zdGF0
ZV9nZXRfbmFtZShzdGF0ZSkpOwpAQCAtMTE0Myw5ICsxMTgxLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBHU1RfU1RBVEVfQ0hBTkdFX0FTWU5DOgotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgi
QXN5bmM6IFN0YXRlOiAlcywgcGVuZGluZzogJXMiLAotICAgICAgICAgICAgZ3N0X2VsZW1lbnRf
c3RhdGVfZ2V0X25hbWUoc3RhdGUpLAotICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0
X25hbWUocGVuZGluZykpOworICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiQXN5bmM6IFN0YXRl
OiAlcywgcGVuZGluZzogJXMiLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksIGdz
dF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKICAgICAgICAgLy8gQ2hhbmdlIGlu
IHByb2dyZXNzCiAKICAgICAgICAgLy8gT24tZGlzayBidWZmZXJpbmcgd2FzIGF0dGVtcHRlZCBi
dXQgdGhlIG1lZGlhIGlzIGxpdmUuIFRoaXMKQEAgLTExNjMsMjQgKzExOTksMTMgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICBn
c3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLmdldCgpLCBHU1RfU1RBVEVfUExBWUlORyk7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWlzTGl2ZVN0cmVhbSgpICYmICFtX2J1ZmZlcmlu
ZykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAobV9zZWVraW5nKSB7Ci0gICAg
ICAgICAgICBzaG91bGRVcGRhdGVBZnRlclNlZWsgPSB0cnVlOwotICAgICAgICAgICAgbV9zZWVr
aW5nID0gZmFsc2U7Ci0gICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfU1RB
VEVfQ0hBTkdFX0ZBSUxVUkU6Ci0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJGYWlsdXJlOiBT
dGF0ZTogJXMsIHBlbmRpbmc6ICVzIiwKLSAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dl
dF9uYW1lKHN0YXRlKSwKLSAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBl
bmRpbmcpKTsKKyAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIkZhaWx1cmU6IFN0YXRlOiAlcywg
cGVuZGluZzogJXMiLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksIGdzdF9lbGVt
ZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKICAgICAgICAgLy8gQ2hhbmdlIGZhaWxlZAog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX05PX1BSRVJPTEw6Ci0g
ICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJObyBwcmVyb2xsOiBTdGF0ZTogJXMsIHBlbmRpbmc6
ICVzIiwKLSAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHN0YXRlKSwKLSAg
ICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKKyAgICAgICAg
TE9HX01FRElBX01FU1NBR0UoIk5vIHByZXJvbGw6IFN0YXRlOiAlcywgcGVuZGluZzogJXMiLCBn
c3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksIGdzdF9lbGVtZW50X3N0YXRlX2dldF9u
YW1lKHBlbmRpbmcpKTsKIAogICAgICAgICBpZiAoc3RhdGUgPT0gR1NUX1NUQVRFX1JFQURZKQog
ICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOwpAQCAt
MTE5Miw0MiArMTIxNywzOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBk
YXRlU3RhdGVzKCkKICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUExBWUlO
RykKICAgICAgICAgICAgIG1fcGF1c2VkID0gZmFsc2U7CiAKLSAgICAgICAgaWYgKG1fc2Vla2lu
ZykgewotICAgICAgICAgICAgc2hvdWxkVXBkYXRlQWZ0ZXJTZWVrID0gdHJ1ZTsKLSAgICAgICAg
ICAgIG1fc2Vla2luZyA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAg
ICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLmdldCgpLCBHU1RfU1RB
VEVfUExBWUlORyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIW1fcGF1c2VkKQorICAgICAgICBpZiAo
IW1fcGF1c2VkKQogICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJpbi5n
ZXQoKSwgR1NUX1NUQVRFX1BMQVlJTkcpOwogCiAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVk
aWFQbGF5ZXI6OkxvYWRpbmc7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAg
IExPR19NRURJQV9NRVNTQUdFKCJFbHNlIDogJWQiLCByZXQpOworICAgICAgICBMT0dfTUVESUFf
TUVTU0FHRSgiRWxzZSA6ICVkIiwgZ2V0U3RhdGVSZXN1bHQpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKICAgICBtX3JlcXVlc3RlZFN0YXRlID0gR1NUX1NUQVRFX1ZPSURfUEVORElORzsKIAot
ICAgIGlmIChzZWVraW5nKCkpCi0gICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpI
YXZlTm90aGluZzsKLQotICAgIGlmIChzaG91bGRVcGRhdGVBZnRlclNlZWspCi0gICAgICAgIHRp
bWVDaGFuZ2VkKCk7Ci0KICAgICBpZiAoc2hvdWxkVXBkYXRlUGxheWJhY2tTdGF0ZSkKICAgICAg
ICAgbV9wbGF5ZXItPnBsYXliYWNrU3RhdGVDaGFuZ2VkKCk7CiAKICAgICBpZiAobV9uZXR3b3Jr
U3RhdGUgIT0gb2xkTmV0d29ya1N0YXRlKSB7Ci0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJO
ZXR3b3JrIFN0YXRlIENoYW5nZWQgZnJvbSAldSB0byAldSIsCi0gICAgICAgICAgICBvbGROZXR3
b3JrU3RhdGUsIG1fbmV0d29ya1N0YXRlKTsKKyAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIk5l
dHdvcmsgU3RhdGUgQ2hhbmdlZCBmcm9tICV1IHRvICV1Iiwgb2xkTmV0d29ya1N0YXRlLCBtX25l
dHdvcmtTdGF0ZSk7CiAgICAgICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAg
ICAgfQogICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gb2xkUmVhZHlTdGF0ZSkgewotICAgICAgICBM
T0dfTUVESUFfTUVTU0FHRSgiUmVhZHkgU3RhdGUgQ2hhbmdlZCBmcm9tICV1IHRvICV1IiwKLSAg
ICAgICAgICAgIG9sZFJlYWR5U3RhdGUsIG1fcmVhZHlTdGF0ZSk7CisgICAgICAgIExPR19NRURJ
QV9NRVNTQUdFKCJSZWFkeSBTdGF0ZSBDaGFuZ2VkIGZyb20gJXUgdG8gJXUiLCBvbGRSZWFkeVN0
YXRlLCBtX3JlYWR5U3RhdGUpOwogICAgICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQo
KTsKICAgICB9CisKKyAgICBpZiAobV9zZWVrSXNQZW5kaW5nICYmIGdldFN0YXRlUmVzdWx0ID09
IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyAmJiAoc3RhdGUgPT0gR1NUX1NUQVRFX1BBVVNFRCB8
fCBzdGF0ZSA9PSBHU1RfU1RBVEVfUExBWUlORykpIHsKKyAgICAgICAgTE9HX01FRElBX01FU1NB
R0UoIltTZWVrXSBjb21taXR0aW5nIHBlbmRpbmcgc2VlayB0byAlZiIsIG1fc2Vla1RpbWUpOwor
ICAgICAgICBtX3NlZWtJc1BlbmRpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9zZWVraW5nID0gZ3N0
X2VsZW1lbnRfc2VlayhtX3BsYXlCaW4uZ2V0KCksIG1fcGxheWVyLT5yYXRlKCksIEdTVF9GT1JN
QVRfVElNRSwgR3N0U2Vla0ZsYWdzKEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFH
X0FDQ1VSQVRFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NUX1NF
RUtfVFlQRV9TRVQsIHRvR3N0Q2xvY2tUaW1lKG1fc2Vla1RpbWUpLCBHU1RfU0VFS19UWVBFX05P
TkUsIEdTVF9DTE9DS19USU1FX05PTkUpOworICAgICAgICBpZiAoIW1fc2Vla2luZykKKyAgICAg
ICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJbU2Vla10gc2Vla2luZyB0byAlZiBmYWlsZWQiLCBt
X3NlZWtUaW1lKTsKKyAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjptZWRpYUxvY2F0aW9uQ2hhbmdlZChHc3RNZXNzYWdlKiBtZXNzYWdlKQpAQCAtMTM2MCwxOSAr
MTM4MSwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2FjaGVEdXJhdGlv
bigpCiAKICAgICAvLyBBbmQgcmUtY2FjaGUgaXQgaWYgcG9zc2libGUuCiAgICAgR3N0U3RhdGUg
c3RhdGU7Ci0gICAgZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGxheUJpbi5nZXQoKSwgJnN0YXRl
LCAwLCAwKTsKKyAgICBHc3RTdGF0ZUNoYW5nZVJldHVybiBnZXRTdGF0ZVJlc3VsdCA9IGdzdF9l
bGVtZW50X2dldF9zdGF0ZShtX3BsYXlCaW4uZ2V0KCksICZzdGF0ZSwgMCwgMCk7CiAgICAgZmxv
YXQgbmV3RHVyYXRpb24gPSBkdXJhdGlvbigpOwogCi0gICAgaWYgKHN0YXRlIDw9IEdTVF9TVEFU
RV9SRUFEWSkgeworICAgIGlmIChzdGF0ZSA+IEdTVF9TVEFURV9SRUFEWSAmJiBnZXRTdGF0ZVJl
c3VsdCA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpIHsKICAgICAgICAgLy8gRG9uJ3Qgc2V0
IG1fbWVkaWFEdXJhdGlvbktub3duIHlldCBpZiB0aGUgcGlwZWxpbmUgaXMgbm90Ci0gICAgICAg
IC8vIHBhdXNlZC4gVGhpcyBhbGxvd3MgZHVyYXRpb24oKSBxdWVyeSB0byBmYWlsIGF0IGxlYXN0
IG9uY2UKKyAgICAgICAgLy8gc3RhYmxlLiBUaGlzIGFsbG93cyBkdXJhdGlvbigpIHF1ZXJ5IHRv
IGZhaWwgYXQgbGVhc3Qgb25jZQogICAgICAgICAvLyBiZWZvcmUgcGxheWJhY2sgc3RhcnRzIGFu
ZCBkdXJhdGlvbiBiZWNvbWVzIGtub3duLgotICAgICAgICBpZiAoIXN0ZDo6aXNpbmYobmV3RHVy
YXRpb24pKQotICAgICAgICAgICAgbV9tZWRpYUR1cmF0aW9uID0gbmV3RHVyYXRpb247Ci0gICAg
fSBlbHNlIHsKICAgICAgICAgbV9tZWRpYUR1cmF0aW9uS25vd24gPSAhc3RkOjppc2luZihuZXdE
dXJhdGlvbik7Ci0gICAgICAgIGlmIChtX21lZGlhRHVyYXRpb25Lbm93bikKLSAgICAgICAgICAg
IG1fbWVkaWFEdXJhdGlvbiA9IG5ld0R1cmF0aW9uOwogICAgIH0KIAogICAgIGlmICghc3RkOjpp
c2luZihuZXdEdXJhdGlvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmgKaW5kZXggZmNlYzA0NWU5MTE0NmRmMDU1NDYwN2I2MTAzZWI4M2YxODk0YWFhMS4u
NTJlZDA0M2FhODQyZDFjMTJkNjA2ZDkxOWFiODlmYWNmN2MxNGI0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMTE0LDYgKzExNCw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGNhY2hlRHVyYXRpb24oKTsKICAgICB2b2lkIHVwZGF0ZVN0YXRl
cygpOworICAgIHZvaWQgYXN5bmNTdGF0ZUNoYW5nZURvbmUoKTsKIAogICAgIHZvaWQgY3JlYXRl
R1NUUGxheUJpbigpOwogICAgIGJvb2wgY2hhbmdlUGlwZWxpbmVTdGF0ZShHc3RTdGF0ZSk7CkBA
IC0xNDAsNiArMTQxLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcmVzZXRQaXBlbGluZTsKICAg
ICBib29sIG1fcGF1c2VkOwogICAgIGJvb2wgbV9zZWVraW5nOworICAgIGJvb2wgbV9zZWVrSXNQ
ZW5kaW5nOworICAgIGZsb2F0IG1fdGltZU9mT3ZlcmxhcHBpbmdTZWVrOworICAgIGJvb2wgbV9j
YW5GYWxsQmFja1RvTGFzdEZpbmlzaGVkU2Vla1Bvc2l0b247CiAgICAgYm9vbCBtX2J1ZmZlcmlu
ZzsKICAgICBmbG9hdCBtX3BsYXliYWNrUmF0ZTsKICAgICBib29sIG1fZXJyb3JPY2N1cmVkOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDJiY2FmNWVkYTc4N2NmMTRhM2YzNGY3YjZlMmI4MDUzZjU3MmMxZTUuLjViZmUyNTMx
OTczNjI3NGFjMzA3NDZlM2U0ODA3Y2IyZGYwMmY0NzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxMy0wNC0zMCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0dTdHJlYW1lcl0gY2Fubm90IHNlZWsgYWZ0ZXIgdmlkZW8gZmluaXNoZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDA0NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvdmlkZW8tc2Vl
ay1hZnRlci1lbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1z
ZWVrLWFmdGVyLWVuZC5odG1sOiBBZGRlZC4KKwogMjAxMy0wNS0wNiAgUm9iZXJ0IEhvZ2FuICA8
cm9iZXJ0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTQwOTA3KSAtIEJhY2tw
b3J0IGJsaW5rIHIxNDk2MTIgdG8gZml4IHZlcnRpY2FsLWFsaWduIGFuZCByb3dzcGFuIGlzc3Vl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLWFmdGVyLWVuZC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLWFmdGVyLWVuZC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWY3NjJiMzBiNWI3MzFmZmViYjNhZmJjYmVlY2JmMjk5M2FiNTM3
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstYWZ0ZXIt
ZW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3QgdGhhdCB3ZSBjYW4gc2VlayBh
ZnRlciByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHZpZGVvLgorCitFVkVOVChwbGF5aW5nKQorRVZF
TlQoZW5kZWQpCitFVkVOVChzZWVrZWQpCitFVkVOVChwbGF5aW5nKQorRVhQRUNURUQgKHZpZGVv
LmN1cnJlbnRUaW1lLnRvRml4ZWQoMikgPT0gJzMnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQuaHRtbCBiL0xheW91
dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstYWZ0ZXItZW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYzYWEw
M2UwZjVkMjgyNmZjYzFhMjNkZmVkNDI0NzE4NDU5MGY1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstYWZ0ZXItZW5kLmh0bWwKQEAgLTAsMCArMSw0OCBA
QAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBz
cmM9bWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9dmlkZW8tdGVz
dC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0
YXJ0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7
CisKKyAgICAgICAgICAgICAgICB2YXIgY291bnRQbGF5aW5nID0gMDsKKyAgICAgICAgICAgICAg
ICB3YWl0Rm9yRXZlbnQoJ3BsYXlpbmcnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCsrY291bnRQbGF5aW5nID4gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgbG9n
UmVzdWx0KGZhbHNlLCAnRkFJTDogcGxheWluZyBmaXJlZCBtb3JlIHRoZW4gdHdpY2UuJyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdmFy
IHNlZWtUYXJnZXQgPSAzOworICAgICAgICAgICAgICAgICAgICBpZiAoY291bnRQbGF5aW5nID09
IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgndmlkZW8uY3VycmVu
dFRpbWUudG9GaXhlZCgyKScsIHNlZWtUYXJnZXQsICc9PScpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZSgn
ZW5kZWQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvLmN1cnJl
bnRUaW1lID0gc2Vla1RhcmdldDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVu
dE9uY2UoJ3NlZWtlZCcsIGZ1bmN0aW9uKCkgeyB2aWRlby5wbGF5KCk7IH0pCisgICAgICAgICAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgICAgIHZpZGVvLmN1cnJlbnRUaW1lID0g
dmlkZW8uZHVyYXRpb24gLSAwLjI7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
ICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCd2aWRlbycsICdjb250ZW50L3Rlc3QnKTsK
KyAgICAgICAgICAgICAgICB2aWRlby5wbGF5KCk7CisKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBsb2dSZXN1bHQoZmFsc2UsICdG
QUlMOiB0aW1lb3V0Jyk7CisgICAgICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAg
ICAgICAgICB9LCAxMDAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorCisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHA+VGVzdCB0
aGF0IHdlIGNhbiBzZWVrIGFmdGVyIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgdmlkZW8uPC9wPgor
ICAgICAgICA8dmlkZW8gY29udHJvbHM+PC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200886</attachid>
            <date>2013-05-07 03:29:35 -0700</date>
            <delta_ts>2013-05-10 08:17:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114044-20130507122841.patch</filename>
            <type>text/plain</type>
            <size>25877</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWE0ZGYyMmNkYWY1OTA2
YmJlZDAxYTAzNTRmMWFjNGNhMzEzYzBhYS4uYWE4Y2FkODcyY2JhM2U0MzMwY2NiMzA1MzY1YTZk
ZWFkNTc1ZWI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTA0LTMwICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbR1N0cmVhbWVyXSBj
YW5ub3Qgc2VlayBhZnRlciB2aWRlbyBmaW5pc2hlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQu
aHRtbAorCisgICAgICAgIFJld29yayB0aGUgc2Vla2luZyBsb2dpYyB0byBiZSBhYmxlIHRvIHNl
ZWsgYWZ0ZXIgcmVzZXRpbmcgdGhlIHBpcGVsaW5lLgorICAgICAgICBJbiBhZGRpdGlvbiB0byBz
b2x2ZSB0aGUgYWN0dWFsIHByb2JsZW0gdGhpcyBwYXRjaCBzdXBwb3NlZCB0byBtYWtlIHNlZWtp
bmcKKyAgICAgICAgbW9yZSByb2J1c3QgYW5kIGNvcnJlY3QuCisgICAgICAgIFRoZSBwcmV2aW91
cyBpbXBsZW1lbnRhdGlvbiB0cmllZCB0byBoaWRlIHRoZSBjb21wbGV4aXR5IG9mIGFzeW5jaHJv
bm91cyBvcGVyYXRpb25zCisgICAgICAgIG9uIHRoZSBwaXBlbGluZS4gSXQgZGlkIG5vdCBoYW5k
bGUgdGhlIEdTVF9NRVNTQUdFX0FTWU5DX0RPTkUgbWVzc2FnZSBmcm9tIHRoZSBidXMKKyAgICAg
ICAgYnV0IGluc3RlYWQgcmVwb3J0ZWQgdGhlIHNlZWsgYXMgZmluaXNoZWQgd2hlbiBpdCBzYXcg
YW4gYXN5bmNocm9ub3VzIHBlbmRpbmcgc3RhdGUKKyAgICAgICAgKEdTVF9TVEFURV9DSEFOR0Vf
QVNZTkMpIHdoaWNoIGNvdWxkIGhhcHBlbiB3YXkgYmVmb3JlIHRoZSBzZWVrIGlzIHJlYWxseSBk
b25lLgorICAgICAgICBOb3cgd2UgcGF5IGF0dGVudGlvbiB0byB0aGUgR1NUX01FU1NBR0VfQVNZ
TkNfRE9ORSBtZXNzYWdlIHRvIHRyYWNrIHRoZSBzdGF0dXMgb2Ygc2Vla3MuCisgICAgICAgIFNl
ZWtzIGFyZSBub3QgdGhlIG9ubHkgb3BlcmF0aW9ucyBleGVjdXRlZCBhc3luY2hyb25vdXNseSwg
Y2hhbmdpbmcgdGhlIHBpcGVsaW5nIHN0YXRlIGlzCisgICAgICAgIHNpbWlsYXIuIEl0IG1lYW5z
IGEgc2VlayBjYW4gb3ZlcmxhcCB3aXRoIG9ub3RoZXIgb25nb2luZyBhc3luY2hyb25vdXMgb3Bl
cmF0aW9uLgorICAgICAgICBUaGlzIGNoYW5nZSBhZGRyZXNzIHRoaXMgYnkgaW50cm9kdWNpbmcg
YW4gaW52YXJpYW50IGZvciBzZWVrcywgd2hpY2ggaXMgdGhhdCB3ZSBvbmx5IHJlcXVlc3QKKyAg
ICAgICAgYSBzZWVrIGlmIHRoZXJlIGFyZSBubyBvdGhlciBvbmdvaW5nIGFzeW5jaHJvbm91cyBv
cGVyYXRpb25zIGFuZCB0aGUgcGlwZWxpbmUgc3RhdGUgaXMgZWl0aGVyCisgICAgICAgIHBhdXNl
ZCBvciBwbGF5aW5nICh3aGljaCBpcyByZWNvbW1lbmRlZCBhbnl3YXkgYWNjb3JkaW5nIHRvIEdT
dHJlYW1lcidzIGRvY3VtZW50YXRpb24pLgorICAgICAgICBUaGlzIHdheSB3ZSBjYW4gYmUgc3Vy
ZSB0aGF0IHRoZSB0aW1lIHdoZW4gd2UgZ2V0IHRoZSBuZXh0IEdTVF9NRVNTQUdFX0FTWU5DX0RP
TkUgbWVzc2FnZSB0aGUKKyAgICAgICAgc2VlayBoYXMgYmVlbiBjb21wbGV0ZWQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvR3N0Q2xvY2tUaW1lKTogRmFjdG9yZWQgdGlt
ZSBjb252ZXJzYXRpb24gaW50byBhIGhlbHBlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKToKKworICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF5YmFja1Bvc2l0
aW9uKTogVGhlIHBvc2l0aW9uIG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUKKyAgICAgICAgaWYgdGhl
IHBpcGVsaW5lIHN0aWxsIGhhcyBhIHBlbmRpbmcgc3RhdGUuIEFzIGEgd29ya2Fyb3VuZCwgaWYg
d2UgYXJlIHJpZ2h0IGFmdGVyIGEgc2VlayB3ZSBjYW4KKyAgICAgICAgdXNlIHRoZSBzZWVrIHRp
bWUuIEF2b2lkaW5nIHRoaXMgc2l0dWF0aW9uIHdvdWxkIGJlIHBvc3NpYmxlIGJ5IG5vdCBhbGxv
d2luZyBhbnkgYXN5bmNocm9ub3VzCisgICAgICAgIG9wZXJhdGlvbiB0byBvdmVybGFwLiBJIGJl
bGlldmUgaXQgd291bGQgYWRkIGEgbG90IG1vcmUgY29tcGxleGl0eSBzbyBJIGRlY2lkZWQgdG8g
cmF0aGVyIGludHJvZHVjZQorICAgICAgICB0aGlzIHdvcmthcm91bmQuIE90aGVyd2lzZSB0aG9z
ZSBvdmVybGFwcGluZyBvcGVyYXRpb25zIGFyZSBoYW5kbGVkIGZpbmUgYnkgR1N0cmVhbWVyLgor
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByZXBhcmVU
b1BsYXkpOiBEbyBub3QgcmVzZXQgaW50ZXJuYWwgc3RhdGUgdmFyaWFibGVzLgorICAgICAgICBU
aGlzIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZXJlIGlzIGFuIGludGVudCB0byByZXN0YXJ0IHBs
YXliYWNrIGJ1dCBpdCBkb2VzIG5vdCBhY3R1YWxseSByZXN0YXJ0IGl0LgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjdXJyZW50VGltZSk6IEp1c3QgcmVt
b3ZlZCBhIHN0YWxpbmcgbmV3bGluZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6c2Vlayk6IFRha2UgYSBsb29rIHRvIHRoZSBwaXBlbGluZSBzdGF0ZSBh
bmQgYWN0IHVwb24gdGhhdC4KKyAgICAgICAgSWYgdGhlcmUgaXMgYW4gb25nb2luZyBhc3luY2hy
b25vdXMgb3BlcmF0aW9uIG1ha2UgdGhlIHNlZWsgcGVuZGluZywgb3RoZXJ3aXNlIGRvIGl0IG5v
dy4KKyAgICAgICAgTm93IHdlIGhhbmRsZSBvdmVybGFwcGluZyBzZWVrcyBhcyB3ZWxsIGJlY2F1
c2UgSSBzYXcgdGhhdCBpdCBjYW4gaGFwcGVuIGluIHNvbWUgdGVzdHMuCisgICAgICAgIEFkZGVk
IGFuIGVhcmx5IHJldHVybiBmb3IgbGl2ZSBzdHJlYW1zIGFzIGl0IGRvZXNuJ3QgbWFrZXMgc2Vu
c2UgdG8gdHJ5IHNlZWtpbmcgaW4gdGhlbS4KKworICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKTogSGFuZGxlIEdTVF9NRVNTQUdFX0FT
WU5DX0RPTkUgYW5kIHNvbWUgcmVmYWN0b3JpbmcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmFzeW5jU3RhdGVDaGFuZ2VEb25lKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKTogT25seSBo
YW5kbGUgc2Vla3MgaW4gdGhlIHBlbmRpbmcgY2FzZSwgdGhlIHJlc3QgaXMKKyAgICAgICAgbm93
IGhhbmRsZWQgaW4gYXN5bmNTdGF0ZUNoYW5nZURvbmUuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhY2hlRHVyYXRpb24pOiBEbyBub3QgcmVzZXQgdGhl
IG1fbWVkaWFEdXJhdGlvbktub3duIGlmIHRoZSBwaXBlbGluZQorICAgICAgICBoYXMgYW4gYXN5
bmNocm9ub3VzIHBlbmRpbmcgc3RhdGUgYmVjYXVzZSBpdCB3b3VsZCBmYWlsLiBJdCBkb2VzIGFj
dHVhbGx5IGhhcHBlbiB3aGVuIHdlIGdldCBhIGR1cmF0aW9uIG1lc3NhZ2UKKyAgICAgICAgYWZ0
ZXIgcmVzdGFydGluZyB0aGUgcGlwZWxpbmUgYW5kIGl0IHdvdWxkIHJlc3VsdCBpbiByZXN0YXJ0
aW5nIHBsYXliYWNrIGZyb20gdGhlIHN0YXJ0LiBJdCBzZWVtcyB0byBiZSBhIGJ1ZworICAgICAg
ICBpbiBHU3RyZWFtZXIgdGhhdCBpdCBzZW5kcyB0aGUgZHVyYXRpb24gbWVzc2FnZSB0b28gZWFy
bHkuIEFsc28gc2FuaXRpemVkIHRoaXMgZnVuY3Rpb24gYnkgbWVyZ2luZyByZWR1bmRhbnQgYnJh
bmNoZXMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
KToKKwogMjAxMy0wNS0wNiAgWm9sdGFuIEFydmFpICA8emFydmFpQGluZi51LXN6ZWdlZC5odT4K
IAogICAgICAgICBbUXRdW1dpbl0gVW5yZXZpZXdlZCBidWlsZGZpeCBhZnRlciByMTQ5NTc5Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3
ZjUyODA1MDQ4NjE1MTA2ZDM4YjhhMTY2NDFkNzU3ZTVhY2Y4ZmQ4Li5jMzI2OGY4Y2NjOGIxNDAx
NzdhZDk4ZmFhNGRmN2JlNjQ0NDU3M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTM4LDYgKzEzOCwxOCBAQCBzdGF0aWMgdm9pZCBt
ZWRpYVBsYXllclByaXZhdGVQbHVnaW5JbnN0YWxsZXJSZXN1bHRGdW5jdGlvbihHc3RJbnN0YWxs
UGx1Z2luc1JldAogICAgIHBsYXllci0+aGFuZGxlUGx1Z2luSW5zdGFsbGVyUmVzdWx0KHJlc3Vs
dCk7CiB9CiAKK3N0YXRpYyBHc3RDbG9ja1RpbWUgdG9Hc3RDbG9ja1RpbWUoZmxvYXQgdGltZSkK
K3sKKyAgICAvLyBFeHRyYWN0IHRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhlIHRpbWUgKHNlY29uZHMp
IGFuZCB0aGUgZnJhY3Rpb25hbCBwYXJ0IChtaWNyb3NlY29uZHMpLiBBdHRlbXB0IHRvCisgICAg
Ly8gcm91bmQgdGhlIG1pY3Jvc2Vjb25kcyBzbyBubyBmbG9hdGluZyBwb2ludCBwcmVjaXNpb24g
aXMgbG9zdCBhbmQgd2UgY2FuIHBlcmZvcm0gYW4gYWNjdXJhdGUgc2Vlay4KKyAgICBmbG9hdCBz
ZWNvbmRzOworICAgIGZsb2F0IG1pY3JvU2Vjb25kcyA9IG1vZGYodGltZSwgJnNlY29uZHMpICog
MTAwMDAwMDsKKyAgICBHVGltZVZhbCB0aW1lVmFsdWU7CisgICAgdGltZVZhbHVlLnR2X3NlYyA9
IHN0YXRpY19jYXN0PGdsb25nPihzZWNvbmRzKTsKKyAgICB0aW1lVmFsdWUudHZfdXNlYyA9IHN0
YXRpY19jYXN0PGdsb25nPihyb3VuZGYobWljcm9TZWNvbmRzIC8gMTAwMDApICogMTAwMDApOwor
ICAgIHJldHVybiBHU1RfVElNRVZBTF9UT19USU1FKHRpbWVWYWx1ZSk7Cit9CisKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXMoR09iamVj
dCogb2JqZWN0KQogewogICAgIGlmIChnX3N0cmNtcDAoR19PQkpFQ1RfVFlQRV9OQU1FKG9iamVj
dCksICJHc3RQdWxzZVNpbmsiKSkKQEAgLTE5OSw2ICsyMTEsOCBAQCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciogcGxh
eWVyKQogICAgICwgbV9yZXNldFBpcGVsaW5lKGZhbHNlKQogICAgICwgbV9wYXVzZWQodHJ1ZSkK
ICAgICAsIG1fc2Vla2luZyhmYWxzZSkKKyAgICAsIG1fc2Vla0lzUGVuZGluZyhmYWxzZSkKKyAg
ICAsIG1fdGltZU9mT3ZlcmxhcHBpbmdTZWVrKC0xKQogICAgICwgbV9idWZmZXJpbmcoZmFsc2Up
CiAgICAgLCBtX3BsYXliYWNrUmF0ZSgxKQogICAgICwgbV9lcnJvck9jY3VyZWQoZmFsc2UpCkBA
IC0zMzIsMzAgKzM0NiwyNiBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBs
YXliYWNrUG9zaXRpb24oKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIG1fc2Vla1RpbWU7CiAg
ICAgICAgIGlmIChtX21lZGlhRHVyYXRpb24pCiAgICAgICAgICAgICByZXR1cm4gbV9tZWRpYUR1
cmF0aW9uOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBmbG9hdCByZXQgPSAwLjBm
OwotCi0gICAgR3N0UXVlcnkqIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19wb3NpdGlvbihHU1RfRk9S
TUFUX1RJTUUpOwotICAgIGlmICghZ3N0X2VsZW1lbnRfcXVlcnkobV9wbGF5QmluLmdldCgpLCBx
dWVyeSkpIHsKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIlBvc2l0aW9uIHF1ZXJ5IGZhaWxl
ZC4uLiIpOwotICAgICAgICBnc3RfcXVlcnlfdW5yZWYocXVlcnkpOwotICAgICAgICByZXR1cm4g
cmV0OwotICAgIH0KLQotICAgIGdpbnQ2NCBwb3NpdGlvbjsKLSAgICBnc3RfcXVlcnlfcGFyc2Vf
cG9zaXRpb24ocXVlcnksIDAsICZwb3NpdGlvbik7CisgICAgLy8gUG9zaXRpb24gaXMgb25seSBh
dmFpbGFibGUgaWYgbm8gYXN5bmMgc3RhdGUgY2hhbmdlIGlzIGdvaW5nIG9uIGFuZCB0aGUgc3Rh
dGUgaXMgZWl0aGVyIHBhdXNlZCBvciBwbGF5aW5nLgorICAgIGdpbnQ2NCBwb3NpdGlvbiA9IEdT
VF9DTE9DS19USU1FX05PTkU7CisgICAgR3N0UXVlcnkqIHF1ZXJ5PSBnc3RfcXVlcnlfbmV3X3Bv
c2l0aW9uKEdTVF9GT1JNQVRfVElNRSk7CisgICAgaWYgKGdzdF9lbGVtZW50X3F1ZXJ5KG1fcGxh
eUJpbi5nZXQoKSwgcXVlcnkpKQorICAgICAgICBnc3RfcXVlcnlfcGFyc2VfcG9zaXRpb24ocXVl
cnksIDAsICZwb3NpdGlvbik7CiAKLSAgICAvLyBQb3NpdGlvbiBpcyBhdmFpbGFibGUgb25seSBp
ZiB0aGUgcGlwZWxpbmUgaXMgbm90IGluIEdTVF9TVEFURV9OVUxMIG9yCi0gICAgLy8gR1NUX1NU
QVRFX1JFQURZIHN0YXRlLgotICAgIGlmIChwb3NpdGlvbiAhPSBzdGF0aWNfY2FzdDxnaW50NjQ+
KEdTVF9DTE9DS19USU1FX05PTkUpKQotICAgICAgICByZXQgPSBzdGF0aWNfY2FzdDxkb3VibGU+
KHBvc2l0aW9uKSAvIEdTVF9TRUNPTkQ7CisgICAgZmxvYXQgcmVzdWx0ID0gMC4wZjsKKyAgICBp
ZiAoc3RhdGljX2Nhc3Q8R3N0Q2xvY2tUaW1lPihwb3NpdGlvbikgIT0gR1NUX0NMT0NLX1RJTUVf
Tk9ORSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihwb3NpdGlvbikgLyBH
U1RfU0VDT05EOworICAgIGVsc2UgaWYgKG1fY2FuRmFsbEJhY2tUb0xhc3RGaW5pc2hlZFNlZWtQ
b3NpdG9uKQorICAgICAgICByZXN1bHQgPSBtX3NlZWtUaW1lOwogCiAgICAgTE9HX01FRElBX01F
U1NBR0UoIlBvc2l0aW9uICUiIEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyhwb3NpdGlv
bikpOwogCiAgICAgZ3N0X3F1ZXJ5X3VucmVmKHF1ZXJ5KTsKIAotICAgIHJldHVybiByZXQ7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmNoYW5nZVBpcGVsaW5lU3RhdGUoR3N0U3RhdGUgbmV3U3RhdGUpCkBAIC0zODYsOSArMzk2LDYg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNoYW5nZVBpcGVsaW5lU3RhdGUo
R3N0U3RhdGUgbmV3U3RhdGUpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpw
cmVwYXJlVG9QbGF5KCkKIHsKLSAgICBtX2lzRW5kUmVhY2hlZCA9IGZhbHNlOwotICAgIG1fc2Vl
a2luZyA9IGZhbHNlOwotCiAgICAgaWYgKG1fZGVsYXlpbmdMb2FkKSB7CiAgICAgICAgIG1fZGVs
YXlpbmdMb2FkID0gZmFsc2U7CiAgICAgICAgIGNvbW1pdExvYWQoKTsKQEAgLTQ2Niw3ICs0NzMs
NiBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmN1cnJlbnRUaW1lKCkgY29u
c3QKICAgICAgICAgcmV0dXJuIDAuMGY7CiAKICAgICByZXR1cm4gcGxheWJhY2tQb3NpdGlvbigp
OwotCiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKGZsb2F0IHRp
bWUpCkBAIC00NzcsMzUgKzQ4Myw1MiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6c2VlayhmbG9hdCB0aW1lKQogICAgIGlmIChtX2Vycm9yT2NjdXJlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgTE9HX01FRElBX01FU1NBR0UoIlNlZWsgYXR0ZW1wdCB0byAlZiBzZWNzIiwg
dGltZSk7CisgICAgTE9HX01FRElBX01FU1NBR0UoIltTZWVrXSBzZWVrIGF0dGVtcHQgdG8gJWYg
c2VjcyIsIHRpbWUpOwogCiAgICAgLy8gQXZvaWQgdXNlbGVzcyBzZWVraW5nLgogICAgIGlmICh0
aW1lID09IGN1cnJlbnRUaW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEV4dHJhY3Qg
dGhlIGludGVnZXIgcGFydCBvZiB0aGUgdGltZSAoc2Vjb25kcykgYW5kIHRoZQotICAgIC8vIGZy
YWN0aW9uYWwgcGFydCAobWljcm9zZWNvbmRzKS4gQXR0ZW1wdCB0byByb3VuZCB0aGUKLSAgICAv
LyBtaWNyb3NlY29uZHMgc28gbm8gZmxvYXRpbmcgcG9pbnQgcHJlY2lzaW9uIGlzIGxvc3QgYW5k
IHdlIGNhbgotICAgIC8vIHBlcmZvcm0gYW4gYWNjdXJhdGUgc2Vlay4KLSAgICBmbG9hdCBzZWNv
bmRzOwotICAgIGZsb2F0IG1pY3JvU2Vjb25kcyA9IG1vZGYodGltZSwgJnNlY29uZHMpICogMTAw
MDAwMDsKLSAgICBHVGltZVZhbCB0aW1lVmFsdWU7Ci0gICAgdGltZVZhbHVlLnR2X3NlYyA9IHN0
YXRpY19jYXN0PGdsb25nPihzZWNvbmRzKTsKLSAgICB0aW1lVmFsdWUudHZfdXNlYyA9IHN0YXRp
Y19jYXN0PGdsb25nPihyb3VuZGYobWljcm9TZWNvbmRzIC8gMTAwMDApICogMTAwMDApOworICAg
IGlmIChpc0xpdmVTdHJlYW0oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3N0Q2xvY2tUaW1l
IGNsb2NrVGltZSA9IHRvR3N0Q2xvY2tUaW1lKHRpbWUpOworICAgIExPR19NRURJQV9NRVNTQUdF
KCJbU2Vla10gc2Vla2luZyB0byAlIiBHU1RfVElNRV9GT1JNQVQgIiAoJWYpIiwgR1NUX1RJTUVf
QVJHUyhjbG9ja1RpbWUpLCB0aW1lKTsKIAotICAgIEdzdENsb2NrVGltZSBjbG9ja1RpbWUgPSBH
U1RfVElNRVZBTF9UT19USU1FKHRpbWVWYWx1ZSk7Ci0gICAgTE9HX01FRElBX01FU1NBR0UoIlNl
ZWs6ICUiIEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyhjbG9ja1RpbWUpKTsKLQotICAg
IGlmICghZ3N0X2VsZW1lbnRfc2VlayhtX3BsYXlCaW4uZ2V0KCksIG1fcGxheWVyLT5yYXRlKCks
Ci0gICAgICAgICAgICBHU1RfRk9STUFUX1RJTUUsCi0gICAgICAgICAgICAoR3N0U2Vla0ZsYWdz
KShHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19BQ0NVUkFURSksCi0gICAgICAg
ICAgICBHU1RfU0VFS19UWVBFX1NFVCwgY2xvY2tUaW1lLAotICAgICAgICAgICAgR1NUX1NFRUtf
VFlQRV9OT05FLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSkKLSAgICAgICAgTE9HX01FRElBX01FU1NB
R0UoIlNlZWsgdG8gJWYgZmFpbGVkIiwgdGltZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fc2Vl
a2luZyA9IHRydWU7Ci0gICAgICAgIG1fc2Vla1RpbWUgPSB0aW1lOworICAgIGlmIChtX3NlZWtp
bmcpIHsKKyAgICAgICAgaWYgKG1fc2Vla0lzUGVuZGluZykgeworICAgICAgICAgICAgbV9zZWVr
VGltZSA9IHRpbWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV90
aW1lT2ZPdmVybGFwcGluZ1NlZWsgPSB0aW1lOwogICAgIH0KKworICAgIEdzdFN0YXRlIHN0YXRl
OworICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIGdldFN0YXRlUmVzdWx0ID0gZ3N0X2VsZW1lbnRf
Z2V0X3N0YXRlKG1fcGxheUJpbi5nZXQoKSwgJnN0YXRlLCAwLCAwKTsKKyAgICBpZiAoZ2V0U3Rh
dGVSZXN1bHQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFIHx8IGdldFN0YXRlUmVzdWx0ID09
IEdTVF9TVEFURV9DSEFOR0VfTk9fUFJFUk9MTCkgeworICAgICAgICBMT0dfTUVESUFfTUVTU0FH
RSgiW1NlZWtdIGNhbm5vdCBzZWVrLCBjdXJyZW50IHN0YXRlIGNoYW5nZSBpcyAlcyIsIGdzdF9l
bGVtZW50X3N0YXRlX2NoYW5nZV9yZXR1cm5fZ2V0X25hbWUoZ2V0U3RhdGVSZXN1bHQpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZ2V0U3RhdGVSZXN1bHQgPT0gR1NUX1NUQVRF
X0NIQU5HRV9BU1lOQyB8fCAoc3RhdGUgIT0gR1NUX1NUQVRFX1BBVVNFRCAmJiBzdGF0ZSAhPSBH
U1RfU1RBVEVfUExBWUlORykgfHwgbV9pc0VuZFJlYWNoZWQpIHsKKyAgICAgICAgbV9zZWVrSXNQ
ZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgaWYgKG1faXNFbmRSZWFjaGVkKSB7CisgICAgICAgICAg
ICBMT0dfTUVESUFfTUVTU0FHRSgiW1NlZWtdIHJlc2V0IHBpcGVsaW5lIik7CisgICAgICAgICAg
ICBBU1NFUlQoc3RhdGUgPT0gR1NUX1NUQVRFX05VTEwpOworICAgICAgICAgICAgbV9yZXNldFBp
cGVsaW5lID0gdHJ1ZTsKKyAgICAgICAgICAgIGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRF
X1BBVVNFRCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBXZSBjYW4gc2Vl
ayBub3cuCisgICAgICAgIGlmICghZ3N0X2VsZW1lbnRfc2VlayhtX3BsYXlCaW4uZ2V0KCksIG1f
cGxheWVyLT5yYXRlKCksIEdTVF9GT1JNQVRfVElNRSwgc3RhdGljX2Nhc3Q8R3N0U2Vla0ZsYWdz
PihHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19BQ0NVUkFURSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHU1RfU0VFS19UWVBFX1NFVCwgY2xvY2tUaW1lLCBHU1Rf
U0VFS19UWVBFX05PTkUsIEdTVF9DTE9DS19USU1FX05PTkUpKSB7CisgICAgICAgICAgICBMT0df
TUVESUFfTUVTU0FHRSgiW1NlZWtdIHNlZWtpbmcgdG8gJWYgZmFpbGVkIiwgdGltZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3NlZWtpbmcgPSB0cnVl
OworICAgIG1fc2Vla1RpbWUgPSB0aW1lOworICAgIG1faXNFbmRSZWFjaGVkID0gZmFsc2U7CiB9
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZWQoKSBjb25zdApAQCAt
Njc5LDYgKzcwMiw4IEBAIGdib29sZWFuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFu
ZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgIGNvbnN0IEdzdFN0cnVjdHVyZSog
c3RydWN0dXJlID0gZ3N0X21lc3NhZ2VfZ2V0X3N0cnVjdHVyZShtZXNzYWdlKTsKICAgICBHc3RT
dGF0ZSByZXF1ZXN0ZWRTdGF0ZSwgY3VycmVudFN0YXRlOwogCisgICAgbV9jYW5GYWxsQmFja1Rv
TGFzdEZpbmlzaGVkU2Vla1Bvc2l0b24gPSBmYWxzZTsKKwogICAgIGlmIChzdHJ1Y3R1cmUpIHsK
ICAgICAgICAgY29uc3QgZ2NoYXIqIG1lc3NhZ2VUeXBlTmFtZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0
X25hbWUoc3RydWN0dXJlKTsKIApAQCAtNjkwLDcgKzcxNSwxMCBAQCBnYm9vbGVhbiBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkK
ICAgICAgICAgfQogICAgIH0KIAotICAgIExPR19NRURJQV9NRVNTQUdFKCJNZXNzYWdlIHJlY2Vp
dmVkIGZyb20gZWxlbWVudCAlcyIsIEdTVF9NRVNTQUdFX1NSQ19OQU1FKG1lc3NhZ2UpKTsKKyAg
ICAvLyBXZSBpZ25vcmUgc3RhdGUgY2hhbmdlcyBmcm9tIGludGVybmFsIGVsZW1lbnRzLiBUaGV5
IGFyZSBmb3J3YXJkZWQgdG8gcGxheWJpbjIgYW55d2F5LgorICAgIGJvb2wgbWVzc2FnZVNvdXJj
ZUlzUGxheWJpbiA9IEdTVF9NRVNTQUdFX1NSQyhtZXNzYWdlKSA9PSByZWludGVycHJldF9jYXN0
PEdzdE9iamVjdCo+KG1fcGxheUJpbi5nZXQoKSk7CisKKyAgICBMT0dfTUVESUFfTUVTU0FHRSgi
TWVzc2FnZSAlcyByZWNlaXZlZCBmcm9tIGVsZW1lbnQgJXMiLCBHU1RfTUVTU0FHRV9UWVBFX05B
TUUobWVzc2FnZSksIEdTVF9NRVNTQUdFX1NSQ19OQU1FKG1lc3NhZ2UpKTsKICAgICBzd2l0Y2gg
KEdTVF9NRVNTQUdFX1RZUEUobWVzc2FnZSkpIHsKICAgICBjYXNlIEdTVF9NRVNTQUdFX0VSUk9S
OgogICAgICAgICBpZiAobV9yZXNldFBpcGVsaW5lKQpAQCAtNzI4LDMzICs3NTYsMjYgQEAgZ2Jv
b2xlYW4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3Nh
Z2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBsb2FkaW5nRmFpbGVkKGVycm9yKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FT1M6Ci0gICAgICAgIExPR19NRURJQV9NRVNT
QUdFKCJFbmQgb2YgU3RyZWFtIik7CiAgICAgICAgIGRpZEVuZCgpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEdTVF9NRVNTQUdFX1NUQVRFX0NIQU5HRUQ6Ci0gICAgICAgIC8vIElnbm9yZSBz
dGF0ZSBjaGFuZ2VzIGlmIGxvYWQgaXMgZGVsYXllZCAocHJlbG9hZD1ub25lKS4gVGhlCi0gICAg
ICAgIC8vIHBsYXllciBzdGF0ZSB3aWxsIGJlIHVwZGF0ZWQgb25jZSBjb21taXRMb2FkKCkgaXMg
Y2FsbGVkLgotICAgICAgICBpZiAobV9kZWxheWluZ0xvYWQpIHsKLSAgICAgICAgICAgIExPR19N
RURJQV9NRVNTQUdFKCJNZWRpYSBsb2FkIGhhcyBiZWVuIGRlbGF5ZWQuIElnbm9yaW5nIHN0YXRl
IGNoYW5nZXMgZm9yIG5vdyIpOworICAgIGNhc2UgR1NUX01FU1NBR0VfQVNZTkNfRE9ORToKKyAg
ICAgICAgaWYgKCFtZXNzYWdlU291cmNlSXNQbGF5YmluIHx8IG1fZGVsYXlpbmdMb2FkKQogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZ25vcmUgc3RhdGUgY2hh
bmdlcyBmcm9tIGludGVybmFsIGVsZW1lbnRzLiBUaGV5IGFyZQotICAgICAgICAvLyBmb3J3YXJk
ZWQgdG8gcGxheWJpbjIgYW55d2F5LgotICAgICAgICBpZiAoR1NUX01FU1NBR0VfU1JDKG1lc3Nh
Z2UpID09IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0T2JqZWN0Kj4obV9wbGF5QmluLmdldCgpKSkgewot
ICAgICAgICAgICAgdXBkYXRlU3RhdGVzKCk7Ci0KLSAgICAgICAgICAgIC8vIENvbnN0cnVjdCBh
IGZpbGVuYW1lIGZvciB0aGUgZ3JhcGh2aXogZG90IGZpbGUgb3V0cHV0LgotICAgICAgICAgICAg
R3N0U3RhdGUgbmV3U3RhdGU7Ci0gICAgICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9zdGF0ZV9j
aGFuZ2VkKG1lc3NhZ2UsICZjdXJyZW50U3RhdGUsICZuZXdTdGF0ZSwgMCk7CisgICAgICAgIGFz
eW5jU3RhdGVDaGFuZ2VEb25lKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX01FU1NB
R0VfU1RBVEVfQ0hBTkdFRDogeworICAgICAgICBpZiAoIW1lc3NhZ2VTb3VyY2VJc1BsYXliaW4g
fHwgbV9kZWxheWluZ0xvYWQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdXBkYXRlU3Rh
dGVzKCk7CiAKLSAgICAgICAgICAgIENTdHJpbmcgZG90RmlsZU5hbWUgPSBTdHJpbmc6OmZvcm1h
dCgid2Via2l0LXZpZGVvLiVzXyVzIiwKLSAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0
ZV9nZXRfbmFtZShjdXJyZW50U3RhdGUpLAotICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0
YXRlX2dldF9uYW1lKG5ld1N0YXRlKSkudXRmOCgpOworICAgICAgICAvLyBDb25zdHJ1Y3QgYSBm
aWxlbmFtZSBmb3IgdGhlIGdyYXBodml6IGRvdCBmaWxlIG91dHB1dC4KKyAgICAgICAgR3N0U3Rh
dGUgbmV3U3RhdGU7CisgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX3N0YXRlX2NoYW5nZWQobWVz
c2FnZSwgJmN1cnJlbnRTdGF0ZSwgJm5ld1N0YXRlLCAwKTsKKyAgICAgICAgQ1N0cmluZyBkb3RG
aWxlTmFtZSA9IFN0cmluZzo6Zm9ybWF0KCJ3ZWJraXQtdmlkZW8uJXNfJXMiLCBnc3RfZWxlbWVu
dF9zdGF0ZV9nZXRfbmFtZShjdXJyZW50U3RhdGUpLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFt
ZShuZXdTdGF0ZSkpLnV0ZjgoKTsKKyAgICAgICAgR1NUX0RFQlVHX0JJTl9UT19ET1RfRklMRV9X
SVRIX1RTKEdTVF9CSU4obV9wbGF5QmluLmdldCgpKSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxM
LCBkb3RGaWxlTmFtZS5kYXRhKCkpOwogCi0gICAgICAgICAgICBHU1RfREVCVUdfQklOX1RPX0RP
VF9GSUxFX1dJVEhfVFMoR1NUX0JJTihtX3BsYXlCaW4uZ2V0KCkpLCBHU1RfREVCVUdfR1JBUEhf
U0hPV19BTEwsIGRvdEZpbGVOYW1lLmRhdGEoKSk7Ci0gICAgICAgIH0KICAgICAgICAgYnJlYWs7
CisgICAgfQogICAgIGNhc2UgR1NUX01FU1NBR0VfQlVGRkVSSU5HOgogICAgICAgICBwcm9jZXNz
QnVmZmVyaW5nU3RhdHMobWVzc2FnZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzYzLDggKzc4NCw4
IEBAIGdib29sZWFuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShH
c3RNZXNzYWdlKiBtZXNzYWdlKQogI2Vsc2UKICAgICBjYXNlIEdTVF9NRVNTQUdFX0RVUkFUSU9O
OgogI2VuZGlmCi0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJEdXJhdGlvbiBjaGFuZ2VkIik7
Ci0gICAgICAgIGR1cmF0aW9uQ2hhbmdlZCgpOworICAgICAgICBpZiAobWVzc2FnZVNvdXJjZUlz
UGxheWJpbikKKyAgICAgICAgICAgIGR1cmF0aW9uQ2hhbmdlZCgpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEdTVF9NRVNTQUdFX1JFUVVFU1RfU1RBVEU6CiAgICAgICAgIGdzdF9tZXNzYWdl
X3BhcnNlX3JlcXVlc3Rfc3RhdGUobWVzc2FnZSwgJnJlcXVlc3RlZFN0YXRlKTsKQEAgLTEwMzIs
NiArMTA1MywzMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2FuY2VsTG9h
ZCgpCiAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4uZ2V0KCksIEdTVF9T
VEFURV9OVUxMKTsKIH0KIAordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmFzeW5j
U3RhdGVDaGFuZ2VEb25lKCkKK3sKKyAgICBpZiAoIW1fcGxheUJpbiB8fCBtX2Vycm9yT2NjdXJl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc2Vla2luZykgeworICAgICAgICBpZiAo
bV9zZWVrSXNQZW5kaW5nKQorICAgICAgICAgICAgdXBkYXRlU3RhdGVzKCk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIltTZWVrXSBzZWVrZWQgdG8gJWYi
LCBtX3NlZWtUaW1lKTsKKyAgICAgICAgICAgIG1fc2Vla2luZyA9IGZhbHNlOworICAgICAgICAg
ICAgaWYgKG1fdGltZU9mT3ZlcmxhcHBpbmdTZWVrICE9IC0xKSB7CisgICAgICAgICAgICAgICAg
c2VlayhtX3RpbWVPZk92ZXJsYXBwaW5nU2Vlayk7CisgICAgICAgICAgICAgICAgbV90aW1lT2ZP
dmVybGFwcGluZ1NlZWsgPSAtMTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBwaXBlbGluZSBjYW4gc3RpbGwgaGF2ZSBhIHBlbmRp
bmcgc3RhdGUuIEluIHRoaXMgY2FzZSBhIHBvc2l0aW9uIHF1ZXJ5IHdpbGwgZmFpbC4KKyAgICAg
ICAgICAgIC8vIFJpZ2h0IG5vdyB3ZSBjYW4gdXNlIG1fc2Vla1RpbWUgYXMgYSBmYWxsYmFjay4K
KyAgICAgICAgICAgIG1fY2FuRmFsbEJhY2tUb0xhc3RGaW5pc2hlZFNlZWtQb3NpdG9uID0gdHJ1
ZTsKKyAgICAgICAgICAgIHRpbWVDaGFuZ2VkKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAg
ICAgICAgdXBkYXRlU3RhdGVzKCk7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjp1cGRhdGVTdGF0ZXMoKQogewogICAgIGlmICghbV9wbGF5QmluKQpAQCAtMTA0NSwxNiAr
MTA5MiwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVz
KCkKICAgICBHc3RTdGF0ZSBzdGF0ZTsKICAgICBHc3RTdGF0ZSBwZW5kaW5nOwogCi0gICAgR3N0
U3RhdGVDaGFuZ2VSZXR1cm4gcmV0ID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGxheUJpbi5n
ZXQoKSwKLSAgICAgICAgJnN0YXRlLCAmcGVuZGluZywgMjUwICogR1NUX05TRUNPTkQpOworICAg
IEdzdFN0YXRlQ2hhbmdlUmV0dXJuIGdldFN0YXRlUmVzdWx0ID0gZ3N0X2VsZW1lbnRfZ2V0X3N0
YXRlKG1fcGxheUJpbi5nZXQoKSwgJnN0YXRlLCAmcGVuZGluZywgMjUwICogR1NUX05TRUNPTkQp
OwogCi0gICAgYm9vbCBzaG91bGRVcGRhdGVBZnRlclNlZWsgPSBmYWxzZTsKICAgICBib29sIHNo
b3VsZFVwZGF0ZVBsYXliYWNrU3RhdGUgPSBmYWxzZTsKLSAgICBzd2l0Y2ggKHJldCkgeworICAg
IHN3aXRjaCAoZ2V0U3RhdGVSZXN1bHQpIHsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfU1VD
Q0VTUzoKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIlN0YXRlOiAlcywgcGVuZGluZzogJXMi
LAotICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLAotICAgICAg
ICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOworICAgICAgICBMT0df
TUVESUFfTUVTU0FHRSgiU3RhdGU6ICVzLCBwZW5kaW5nOiAlcyIsIGdzdF9lbGVtZW50X3N0YXRl
X2dldF9uYW1lKHN0YXRlKSwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOwog
CiAgICAgICAgIG1fcmVzZXRQaXBlbGluZSA9IHN0YXRlIDw9IEdTVF9TVEFURV9SRUFEWTsKIApA
QCAtMTEzMSwxMSArMTE3NCw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1
cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAgbV9jaGFuZ2luZ1JhdGUgPSBmYWxzZTsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChtX3NlZWtpbmcpIHsKLSAgICAgICAgICAgIHNob3VsZFVwZGF0
ZUFmdGVyU2VlayA9IHRydWU7Ci0gICAgICAgICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKLSAgICAg
ICAgfQotCiAgICAgICAgIGlmIChtX3JlcXVlc3RlZFN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQg
JiYgc3RhdGUgPT0gR1NUX1NUQVRFX1BBVVNFRCkgewogICAgICAgICAgICAgc2hvdWxkVXBkYXRl
UGxheWJhY2tTdGF0ZSA9IHRydWU7CiAgICAgICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiUmVx
dWVzdGVkIHN0YXRlIGNoYW5nZSB0byAlcyB3YXMgY29tcGxldGVkIiwgZ3N0X2VsZW1lbnRfc3Rh
dGVfZ2V0X25hbWUoc3RhdGUpKTsKQEAgLTExNDMsOSArMTE4MSw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogCiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9BU1lOQzoKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0Uo
IkFzeW5jOiBTdGF0ZTogJXMsIHBlbmRpbmc6ICVzIiwKLSAgICAgICAgICAgIGdzdF9lbGVtZW50
X3N0YXRlX2dldF9uYW1lKHN0YXRlKSwKLSAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dl
dF9uYW1lKHBlbmRpbmcpKTsKKyAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIkFzeW5jOiBTdGF0
ZTogJXMsIHBlbmRpbmc6ICVzIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLCBn
c3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7CiAgICAgICAgIC8vIENoYW5nZSBp
biBwcm9ncmVzcwogCiAgICAgICAgIC8vIE9uLWRpc2sgYnVmZmVyaW5nIHdhcyBhdHRlbXB0ZWQg
YnV0IHRoZSBtZWRpYSBpcyBsaXZlLiBUaGlzCkBAIC0xMTYzLDI0ICsxMTk5LDEzIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAg
Z3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJpbi5nZXQoKSwgR1NUX1NUQVRFX1BMQVlJTkcp
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFpc0xpdmVTdHJlYW0oKSAmJiAhbV9idWZmZXJp
bmcpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKG1fc2Vla2luZykgewotICAg
ICAgICAgICAgc2hvdWxkVXBkYXRlQWZ0ZXJTZWVrID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fc2Vl
a2luZyA9IGZhbHNlOwotICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX1NU
QVRFX0NIQU5HRV9GQUlMVVJFOgotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiRmFpbHVyZTog
U3RhdGU6ICVzLCBwZW5kaW5nOiAlcyIsCi0gICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9n
ZXRfbmFtZShzdGF0ZSksCi0gICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShw
ZW5kaW5nKSk7CisgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJGYWlsdXJlOiBTdGF0ZTogJXMs
IHBlbmRpbmc6ICVzIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLCBnc3RfZWxl
bWVudF9zdGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7CiAgICAgICAgIC8vIENoYW5nZSBmYWlsZWQK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9OT19QUkVST0xMOgot
ICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiTm8gcHJlcm9sbDogU3RhdGU6ICVzLCBwZW5kaW5n
OiAlcyIsCi0gICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksCi0g
ICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7CisgICAgICAg
IExPR19NRURJQV9NRVNTQUdFKCJObyBwcmVyb2xsOiBTdGF0ZTogJXMsIHBlbmRpbmc6ICVzIiwg
Z3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRf
bmFtZShwZW5kaW5nKSk7CiAKICAgICAgICAgaWYgKHN0YXRlID09IEdTVF9TVEFURV9SRUFEWSkK
ICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKQEAg
LTExOTIsNDIgKzEyMTcsMzggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVw
ZGF0ZVN0YXRlcygpCiAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT0gR1NUX1NUQVRFX1BMQVlJ
TkcpCiAgICAgICAgICAgICBtX3BhdXNlZCA9IGZhbHNlOwogCi0gICAgICAgIGlmIChtX3NlZWtp
bmcpIHsKLSAgICAgICAgICAgIHNob3VsZFVwZGF0ZUFmdGVyU2VlayA9IHRydWU7Ci0gICAgICAg
ICAgICBtX3NlZWtpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmICghbV9wYXVzZWQpCi0gICAg
ICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJpbi5nZXQoKSwgR1NUX1NU
QVRFX1BMQVlJTkcpOwotICAgICAgICB9IGVsc2UgaWYgKCFtX3BhdXNlZCkKKyAgICAgICAgaWYg
KCFtX3BhdXNlZCkKICAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4u
Z2V0KCksIEdTVF9TVEFURV9QTEFZSU5HKTsKIAogICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpMb2FkaW5nOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAg
ICBMT0dfTUVESUFfTUVTU0FHRSgiRWxzZSA6ICVkIiwgcmV0KTsKKyAgICAgICAgTE9HX01FRElB
X01FU1NBR0UoIkVsc2UgOiAlZCIsIGdldFN0YXRlUmVzdWx0KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCiAgICAgbV9yZXF1ZXN0ZWRTdGF0ZSA9IEdTVF9TVEFURV9WT0lEX1BFTkRJTkc7CiAK
LSAgICBpZiAoc2Vla2luZygpKQotICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6
SGF2ZU5vdGhpbmc7Ci0KLSAgICBpZiAoc2hvdWxkVXBkYXRlQWZ0ZXJTZWVrKQotICAgICAgICB0
aW1lQ2hhbmdlZCgpOwotCiAgICAgaWYgKHNob3VsZFVwZGF0ZVBsYXliYWNrU3RhdGUpCiAgICAg
ICAgIG1fcGxheWVyLT5wbGF5YmFja1N0YXRlQ2hhbmdlZCgpOwogCiAgICAgaWYgKG1fbmV0d29y
a1N0YXRlICE9IG9sZE5ldHdvcmtTdGF0ZSkgewotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgi
TmV0d29yayBTdGF0ZSBDaGFuZ2VkIGZyb20gJXUgdG8gJXUiLAotICAgICAgICAgICAgb2xkTmV0
d29ya1N0YXRlLCBtX25ldHdvcmtTdGF0ZSk7CisgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJO
ZXR3b3JrIFN0YXRlIENoYW5nZWQgZnJvbSAldSB0byAldSIsIG9sZE5ldHdvcmtTdGF0ZSwgbV9u
ZXR3b3JrU3RhdGUpOwogICAgICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwog
ICAgIH0KICAgICBpZiAobV9yZWFkeVN0YXRlICE9IG9sZFJlYWR5U3RhdGUpIHsKLSAgICAgICAg
TE9HX01FRElBX01FU1NBR0UoIlJlYWR5IFN0YXRlIENoYW5nZWQgZnJvbSAldSB0byAldSIsCi0g
ICAgICAgICAgICBvbGRSZWFkeVN0YXRlLCBtX3JlYWR5U3RhdGUpOworICAgICAgICBMT0dfTUVE
SUFfTUVTU0FHRSgiUmVhZHkgU3RhdGUgQ2hhbmdlZCBmcm9tICV1IHRvICV1Iiwgb2xkUmVhZHlT
dGF0ZSwgbV9yZWFkeVN0YXRlKTsKICAgICAgICAgbV9wbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2Vk
KCk7CiAgICAgfQorCisgICAgaWYgKG1fc2Vla0lzUGVuZGluZyAmJiBnZXRTdGF0ZVJlc3VsdCA9
PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MgJiYgKHN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQg
fHwgc3RhdGUgPT0gR1NUX1NUQVRFX1BMQVlJTkcpKSB7CisgICAgICAgIExPR19NRURJQV9NRVNT
QUdFKCJbU2Vla10gY29tbWl0dGluZyBwZW5kaW5nIHNlZWsgdG8gJWYiLCBtX3NlZWtUaW1lKTsK
KyAgICAgICAgbV9zZWVrSXNQZW5kaW5nID0gZmFsc2U7CisgICAgICAgIG1fc2Vla2luZyA9IGdz
dF9lbGVtZW50X3NlZWsobV9wbGF5QmluLmdldCgpLCBtX3BsYXllci0+cmF0ZSgpLCBHU1RfRk9S
TUFUX1RJTUUsIEdzdFNlZWtGbGFncyhHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxB
R19BQ0NVUkFURSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9T
RUVLX1RZUEVfU0VULCB0b0dzdENsb2NrVGltZShtX3NlZWtUaW1lKSwgR1NUX1NFRUtfVFlQRV9O
T05FLCBHU1RfQ0xPQ0tfVElNRV9OT05FKTsKKyAgICAgICAgaWYgKCFtX3NlZWtpbmcpCisgICAg
ICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiW1NlZWtdIHNlZWtpbmcgdG8gJWYgZmFpbGVkIiwg
bV9zZWVrVGltZSk7CisgICAgfQogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bWVkaWFMb2NhdGlvbkNoYW5nZWQoR3N0TWVzc2FnZSogbWVzc2FnZSkKQEAgLTEzNjAsMTkg
KzEzODEsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhY2hlRHVyYXRp
b24oKQogCiAgICAgLy8gQW5kIHJlLWNhY2hlIGl0IGlmIHBvc3NpYmxlLgogICAgIEdzdFN0YXRl
IHN0YXRlOwotICAgIGdzdF9lbGVtZW50X2dldF9zdGF0ZShtX3BsYXlCaW4uZ2V0KCksICZzdGF0
ZSwgMCwgMCk7CisgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ2V0U3RhdGVSZXN1bHQgPSBnc3Rf
ZWxlbWVudF9nZXRfc3RhdGUobV9wbGF5QmluLmdldCgpLCAmc3RhdGUsIDAsIDApOwogICAgIGZs
b2F0IG5ld0R1cmF0aW9uID0gZHVyYXRpb24oKTsKIAotICAgIGlmIChzdGF0ZSA8PSBHU1RfU1RB
VEVfUkVBRFkpIHsKKyAgICBpZiAoc3RhdGUgPiBHU1RfU1RBVEVfUkVBRFkgJiYgZ2V0U3RhdGVS
ZXN1bHQgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKSB7CiAgICAgICAgIC8vIERvbid0IHNl
dCBtX21lZGlhRHVyYXRpb25Lbm93biB5ZXQgaWYgdGhlIHBpcGVsaW5lIGlzIG5vdAotICAgICAg
ICAvLyBwYXVzZWQuIFRoaXMgYWxsb3dzIGR1cmF0aW9uKCkgcXVlcnkgdG8gZmFpbCBhdCBsZWFz
dCBvbmNlCisgICAgICAgIC8vIHN0YWJsZS4gVGhpcyBhbGxvd3MgZHVyYXRpb24oKSBxdWVyeSB0
byBmYWlsIGF0IGxlYXN0IG9uY2UKICAgICAgICAgLy8gYmVmb3JlIHBsYXliYWNrIHN0YXJ0cyBh
bmQgZHVyYXRpb24gYmVjb21lcyBrbm93bi4KLSAgICAgICAgaWYgKCFzdGQ6OmlzaW5mKG5ld0R1
cmF0aW9uKSkKLSAgICAgICAgICAgIG1fbWVkaWFEdXJhdGlvbiA9IG5ld0R1cmF0aW9uOwotICAg
IH0gZWxzZSB7CiAgICAgICAgIG1fbWVkaWFEdXJhdGlvbktub3duID0gIXN0ZDo6aXNpbmYobmV3
RHVyYXRpb24pOwotICAgICAgICBpZiAobV9tZWRpYUR1cmF0aW9uS25vd24pCi0gICAgICAgICAg
ICBtX21lZGlhRHVyYXRpb24gPSBuZXdEdXJhdGlvbjsKICAgICB9CiAKICAgICBpZiAoIXN0ZDo6
aXNpbmYobmV3RHVyYXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCmluZGV4IGZjZWMwNDVlOTExNDZkZjA1NTQ2MDdiNjEwM2ViODNmMTg5NGFhYTEu
LjUyZWQwNDNhYTg0MmQxYzEyZDYwNmQ5MTlhYjg5ZmFjZjdjMTRiNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBjYWNoZUR1cmF0aW9uKCk7CiAgICAgdm9pZCB1cGRhdGVTdGF0
ZXMoKTsKKyAgICB2b2lkIGFzeW5jU3RhdGVDaGFuZ2VEb25lKCk7CiAKICAgICB2b2lkIGNyZWF0
ZUdTVFBsYXlCaW4oKTsKICAgICBib29sIGNoYW5nZVBpcGVsaW5lU3RhdGUoR3N0U3RhdGUpOwpA
QCAtMTQwLDYgKzE0MSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Jlc2V0UGlwZWxpbmU7CiAg
ICAgYm9vbCBtX3BhdXNlZDsKICAgICBib29sIG1fc2Vla2luZzsKKyAgICBib29sIG1fc2Vla0lz
UGVuZGluZzsKKyAgICBmbG9hdCBtX3RpbWVPZk92ZXJsYXBwaW5nU2VlazsKKyAgICBib29sIG1f
Y2FuRmFsbEJhY2tUb0xhc3RGaW5pc2hlZFNlZWtQb3NpdG9uOwogICAgIGJvb2wgbV9idWZmZXJp
bmc7CiAgICAgZmxvYXQgbV9wbGF5YmFja1JhdGU7CiAgICAgYm9vbCBtX2Vycm9yT2NjdXJlZDsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyYmNhZjVlZGE3ODdjZjE0YTNmMzRmN2I2ZTJiODA1M2Y1NzJjMWU1Li41YmZlMjUz
MTk3MzYyNzRhYzMwNzQ2ZTNlNDgwN2NiMmRmMDJmNDc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMDQtMzAgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFtHU3RyZWFtZXJdIGNhbm5vdCBzZWVrIGFmdGVyIHZpZGVvIGZpbmlzaGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQwNDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL3ZpZGVvLXNl
ZWstYWZ0ZXItZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8t
c2Vlay1hZnRlci1lbmQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDUtMDYgIFJvYmVydCBIb2dhbiAg
PHJvYmVydEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE0MDkwNykgLSBCYWNr
cG9ydCBibGluayByMTQ5NjEyIHRvIGZpeCB2ZXJ0aWNhbC1hbGlnbiBhbmQgcm93c3BhbiBpc3N1
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVmNzYyYjMwYjViNzMxZmZlYmIzYWZiY2JlZWNiZjI5OTNhYjUz
NzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLWFmdGVy
LWVuZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0IHRoYXQgd2UgY2FuIHNlZWsg
YWZ0ZXIgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSB2aWRlby4KKworRVZFTlQocGxheWluZykKK0VW
RU5UKGVuZGVkKQorRVZFTlQoc2Vla2VkKQorRVZFTlQocGxheWluZykKK0VYUEVDVEVEICh2aWRl
by5jdXJyZW50VGltZS50b0ZpeGVkKDIpID09ICczJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXNlZWstYWZ0ZXItZW5kLmh0bWwgYi9MYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLWFmdGVyLWVuZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmM2Fh
MDNlMGY1ZDI4MjZmY2MxYTIzZGZlZDQyNDcxODQ1OTBmNWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1zZWVrLWFmdGVyLWVuZC5odG1sCkBAIC0wLDAgKzEsNDgg
QEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQg
c3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRl
c3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBz
dGFydCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgp
OworCisgICAgICAgICAgICAgICAgdmFyIGNvdW50UGxheWluZyA9IDA7CisgICAgICAgICAgICAg
ICAgd2FpdEZvckV2ZW50KCdwbGF5aW5nJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICgrK2NvdW50UGxheWluZyA+IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z1Jlc3VsdChmYWxzZSwgJ0ZBSUw6IHBsYXlpbmcgZmlyZWQgbW9yZSB0aGVuIHR3aWNlLicpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHZh
ciBzZWVrVGFyZ2V0ID0gMzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50UGxheWluZyA9
PSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3ZpZGVvLmN1cnJl
bnRUaW1lLnRvRml4ZWQoMiknLCBzZWVrVGFyZ2V0LCAnPT0nKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2Uo
J2VuZGVkJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2aWRlby5jdXJy
ZW50VGltZSA9IHNlZWtUYXJnZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB3YWl0Rm9yRXZl
bnRPbmNlKCdzZWVrZWQnLCBmdW5jdGlvbigpIHsgdmlkZW8ucGxheSgpOyB9KQorICAgICAgICAg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9
IHZpZGVvLmR1cmF0aW9uIC0gMC4yOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnY29udGVudC90ZXN0Jyk7
CisgICAgICAgICAgICAgICAgdmlkZW8ucGxheSgpOworCisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nUmVzdWx0KGZhbHNlLCAn
RkFJTDogdGltZW91dCcpOworICAgICAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAg
ICAgICAgICAgfSwgMTAwMCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKworICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDxwPlRlc3Qg
dGhhdCB3ZSBjYW4gc2VlayBhZnRlciByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHZpZGVvLjwvcD4K
KyAgICAgICAgPHZpZGVvIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201346</attachid>
            <date>2013-05-10 08:18:01 -0700</date>
            <delta_ts>2013-05-13 11:38:26 -0700</delta_ts>
            <desc>style fixed</desc>
            <filename>bug-114044-20130510171703.patch</filename>
            <type>text/plain</type>
            <size>25797</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5ODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzExMjc2ZjdjMmE0MGE4
NzQ3ZjkxMDk5MmQzMmUxZWVhOTMzMmM1NC4uNzhkZTliZTM5ZjlkNjQ0MWU1NWVkMWJiMGQ1ZTQz
OGVhM2I3ODI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTA0LTMwICBCYWxh
enMgS2VsZW1lbiAgPGIua2VsZW1lbkBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFtHU3Ry
ZWFtZXJdIGNhbm5vdCBzZWVrIGFmdGVyIHZpZGVvIGZpbmlzaGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQwNDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBtZWRpYS92aWRlby1zZWVrLWFm
dGVyLWVuZC5odG1sCisKKyAgICAgICAgUmV3b3JrIHRoZSBzZWVraW5nIGxvZ2ljIHRvIGJlIGFi
bGUgdG8gc2VlayBhZnRlciByZXNldGluZyB0aGUgcGlwZWxpbmUuCisgICAgICAgIEluIGFkZGl0
aW9uIHRvIHNvbHZlIHRoZSBhY3R1YWwgcHJvYmxlbSB0aGlzIHBhdGNoIHN1cHBvc2VkIHRvIG1h
a2Ugc2Vla2luZworICAgICAgICBtb3JlIHJvYnVzdCBhbmQgY29ycmVjdC4KKyAgICAgICAgVGhl
IHByZXZpb3VzIGltcGxlbWVudGF0aW9uIHRyaWVkIHRvIGhpZGUgdGhlIGNvbXBsZXhpdHkgb2Yg
YXN5bmNocm9ub3VzIG9wZXJhdGlvbnMKKyAgICAgICAgb24gdGhlIHBpcGVsaW5lLiBJdCBkaWQg
bm90IGhhbmRsZSB0aGUgR1NUX01FU1NBR0VfQVNZTkNfRE9ORSBtZXNzYWdlIGZyb20gdGhlIGJ1
cworICAgICAgICBidXQgaW5zdGVhZCByZXBvcnRlZCB0aGUgc2VlayBhcyBmaW5pc2hlZCB3aGVu
IGl0IHNhdyBhbiBhc3luY2hyb25vdXMgcGVuZGluZyBzdGF0ZQorICAgICAgICAoR1NUX1NUQVRF
X0NIQU5HRV9BU1lOQykgd2hpY2ggY291bGQgaGFwcGVuIHdheSBiZWZvcmUgdGhlIHNlZWsgaXMg
cmVhbGx5IGRvbmUuCisgICAgICAgIE5vdyB3ZSBwYXkgYXR0ZW50aW9uIHRvIHRoZSBHU1RfTUVT
U0FHRV9BU1lOQ19ET05FIG1lc3NhZ2UgdG8gdHJhY2sgdGhlIHN0YXR1cyBvZiBzZWVrcy4KKyAg
ICAgICAgU2Vla3MgYXJlIG5vdCB0aGUgb25seSBvcGVyYXRpb25zIGV4ZWN1dGVkIGFzeW5jaHJv
bm91c2x5LCBjaGFuZ2luZyB0aGUgcGlwZWxpbmcgc3RhdGUgaXMKKyAgICAgICAgc2ltaWxhci4g
SXQgbWVhbnMgYSBzZWVrIGNhbiBvdmVybGFwIHdpdGggb25vdGhlciBvbmdvaW5nIGFzeW5jaHJv
bm91cyBvcGVyYXRpb24uCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHJlc3MgdGhpcyBieSBpbnRy
b2R1Y2luZyBhbiBpbnZhcmlhbnQgZm9yIHNlZWtzLCB3aGljaCBpcyB0aGF0IHdlIG9ubHkgcmVx
dWVzdAorICAgICAgICBhIHNlZWsgaWYgdGhlcmUgYXJlIG5vIG90aGVyIG9uZ29pbmcgYXN5bmNo
cm9ub3VzIG9wZXJhdGlvbnMgYW5kIHRoZSBwaXBlbGluZSBzdGF0ZSBpcyBlaXRoZXIKKyAgICAg
ICAgcGF1c2VkIG9yIHBsYXlpbmcgKHdoaWNoIGlzIHJlY29tbWVuZGVkIGFueXdheSBhY2NvcmRp
bmcgdG8gR1N0cmVhbWVyJ3MgZG9jdW1lbnRhdGlvbikuCisgICAgICAgIFRoaXMgd2F5IHdlIGNh
biBiZSBzdXJlIHRoYXQgdGhlIHRpbWUgd2hlbiB3ZSBnZXQgdGhlIG5leHQgR1NUX01FU1NBR0Vf
QVNZTkNfRE9ORSBtZXNzYWdlIHRoZQorICAgICAgICBzZWVrIGhhcyBiZWVuIGNvbXBsZXRlZC4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9Hc3RDbG9ja1RpbWUpOiBGYWN0
b3JlZCB0aW1lIGNvbnZlcnNhdGlvbiBpbnRvIGEgaGVscGVyLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIp
OgorCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXli
YWNrUG9zaXRpb24pOiBUaGUgcG9zaXRpb24gbWlnaHQgbm90IGJlIGF2YWlsYWJsZQorICAgICAg
ICBpZiB0aGUgcGlwZWxpbmUgc3RpbGwgaGFzIGEgcGVuZGluZyBzdGF0ZS4gQXMgYSB3b3JrYXJv
dW5kLCBpZiB3ZSBhcmUgcmlnaHQgYWZ0ZXIgYSBzZWVrIHdlIGNhbgorICAgICAgICB1c2UgdGhl
IHNlZWsgdGltZS4gQXZvaWRpbmcgdGhpcyBzaXR1YXRpb24gd291bGQgYmUgcG9zc2libGUgYnkg
bm90IGFsbG93aW5nIGFueSBhc3luY2hyb25vdXMKKyAgICAgICAgb3BlcmF0aW9uIHRvIG92ZXJs
YXAuIEkgYmVsaWV2ZSBpdCB3b3VsZCBhZGQgYSBsb3QgbW9yZSBjb21wbGV4aXR5IHNvIEkgZGVj
aWRlZCB0byByYXRoZXIgaW50cm9kdWNlCisgICAgICAgIHRoaXMgd29ya2Fyb3VuZC4gT3RoZXJ3
aXNlIHRob3NlIG92ZXJsYXBwaW5nIG9wZXJhdGlvbnMgYXJlIGhhbmRsZWQgZmluZSBieSBHU3Ry
ZWFtZXIuCisKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cHJlcGFyZVRvUGxheSk6IERvIG5vdCByZXNldCBpbnRlcm5hbCBzdGF0ZSB2YXJpYWJsZXMuCisg
ICAgICAgIFRoaXMgZnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlcmUgaXMgYW4gaW50ZW50IHRvIHJl
c3RhcnQgcGxheWJhY2sgYnV0IGl0IGRvZXMgbm90IGFjdHVhbGx5IHJlc3RhcnQgaXQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmN1cnJlbnRUaW1lKTog
SnVzdCByZW1vdmVkIGEgc3RhbGluZyBuZXdsaW5lLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKTogVGFrZSBhIGxvb2sgdG8gdGhlIHBpcGVsaW5l
IHN0YXRlIGFuZCBhY3QgdXBvbiB0aGF0LgorICAgICAgICBJZiB0aGVyZSBpcyBhbiBvbmdvaW5n
IGFzeW5jaHJvbm91cyBvcGVyYXRpb24gbWFrZSB0aGUgc2VlayBwZW5kaW5nLCBvdGhlcndpc2Ug
ZG8gaXQgbm93LgorICAgICAgICBOb3cgd2UgaGFuZGxlIG92ZXJsYXBwaW5nIHNlZWtzIGFzIHdl
bGwgYmVjYXVzZSBJIHNhdyB0aGF0IGl0IGNhbiBoYXBwZW4gaW4gc29tZSB0ZXN0cy4KKyAgICAg
ICAgQWRkZWQgYW4gZWFybHkgcmV0dXJuIGZvciBsaXZlIHN0cmVhbXMgYXMgaXQgZG9lc24ndCBt
YWtlcyBzZW5zZSB0byB0cnkgc2Vla2luZyBpbiB0aGVtLgorCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOiBIYW5kbGUgR1NUX01F
U1NBR0VfQVNZTkNfRE9ORSBhbmQgc29tZSByZWZhY3RvcmluZy4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXN5bmNTdGF0ZUNoYW5nZURvbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMp
OiBPbmx5IGhhbmRsZSBzZWVrcyBpbiB0aGUgcGVuZGluZyBjYXNlLCB0aGUgcmVzdCBpcworICAg
ICAgICBub3cgaGFuZGxlZCBpbiBhc3luY1N0YXRlQ2hhbmdlRG9uZS4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2FjaGVEdXJhdGlvbik6IERvIG5vdCBy
ZXNldCB0aGUgbV9tZWRpYUR1cmF0aW9uS25vd24gaWYgdGhlIHBpcGVsaW5lCisgICAgICAgIGhh
cyBhbiBhc3luY2hyb25vdXMgcGVuZGluZyBzdGF0ZSBiZWNhdXNlIGl0IHdvdWxkIGZhaWwuIEl0
IGRvZXMgYWN0dWFsbHkgaGFwcGVuIHdoZW4gd2UgZ2V0IGEgZHVyYXRpb24gbWVzc2FnZQorICAg
ICAgICBhZnRlciByZXN0YXJ0aW5nIHRoZSBwaXBlbGluZSBhbmQgaXQgd291bGQgcmVzdWx0IGlu
IHJlc3RhcnRpbmcgcGxheWJhY2sgZnJvbSB0aGUgc3RhcnQuIEl0IHNlZW1zIHRvIGJlIGEgYnVn
CisgICAgICAgIGluIEdTdHJlYW1lciB0aGF0IGl0IHNlbmRzIHRoZSBkdXJhdGlvbiBtZXNzYWdl
IHRvbyBlYXJseS4gQWxzbyBzYW5pdGl6ZWQgdGhpcyBmdW5jdGlvbiBieSBtZXJnaW5nIHJlZHVu
ZGFudCBicmFuY2hlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgIChNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIpOgorCiAyMDEzLTA1LTEwICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGln
YWxpYS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIGFmdGVyIHIxNDk4NjQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDI0NTNiYTU5ODQ0
NGNkNDA2YjViNTQzM2JmNzcyMzhjODg2ZDJhNmQuLjhkNGY1ZDkzMDc2YjZhOWZiMGM1MjI1ODQ4
Mzg5Nzg5M2E3Y2MzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC0xMzgsNiArMTM4LDE4IEBAIHN0YXRpYyB2b2lkIG1lZGlhUGxheWVy
UHJpdmF0ZVBsdWdpbkluc3RhbGxlclJlc3VsdEZ1bmN0aW9uKEdzdEluc3RhbGxQbHVnaW5zUmV0
CiAgICAgcGxheWVyLT5oYW5kbGVQbHVnaW5JbnN0YWxsZXJSZXN1bHQocmVzdWx0KTsKIH0KIAor
c3RhdGljIEdzdENsb2NrVGltZSB0b0dzdENsb2NrVGltZShmbG9hdCB0aW1lKQoreworICAgIC8v
IEV4dHJhY3QgdGhlIGludGVnZXIgcGFydCBvZiB0aGUgdGltZSAoc2Vjb25kcykgYW5kIHRoZSBm
cmFjdGlvbmFsIHBhcnQgKG1pY3Jvc2Vjb25kcykuIEF0dGVtcHQgdG8KKyAgICAvLyByb3VuZCB0
aGUgbWljcm9zZWNvbmRzIHNvIG5vIGZsb2F0aW5nIHBvaW50IHByZWNpc2lvbiBpcyBsb3N0IGFu
ZCB3ZSBjYW4gcGVyZm9ybSBhbiBhY2N1cmF0ZSBzZWVrLgorICAgIGZsb2F0IHNlY29uZHM7Cisg
ICAgZmxvYXQgbWljcm9TZWNvbmRzID0gbW9kZih0aW1lLCAmc2Vjb25kcykgKiAxMDAwMDAwOwor
ICAgIEdUaW1lVmFsIHRpbWVWYWx1ZTsKKyAgICB0aW1lVmFsdWUudHZfc2VjID0gc3RhdGljX2Nh
c3Q8Z2xvbmc+KHNlY29uZHMpOworICAgIHRpbWVWYWx1ZS50dl91c2VjID0gc3RhdGljX2Nhc3Q8
Z2xvbmc+KHJvdW5kZihtaWNyb1NlY29uZHMgLyAxMDAwMCkgKiAxMDAwMCk7CisgICAgcmV0dXJu
IEdTVF9USU1FVkFMX1RPX1RJTUUodGltZVZhbHVlKTsKK30KKwogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnNldEF1ZGlvU3RyZWFtUHJvcGVydGllcyhHT2JqZWN0KiBvYmplY3Qp
CiB7CiAgICAgaWYgKGdfc3RyY21wMChHX09CSkVDVF9UWVBFX05BTUUob2JqZWN0KSwgIkdzdFB1
bHNlU2luayIpKQpAQCAtMTk5LDYgKzIxMSw4IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAg
LCBtX3Jlc2V0UGlwZWxpbmUoZmFsc2UpCiAgICAgLCBtX3BhdXNlZCh0cnVlKQogICAgICwgbV9z
ZWVraW5nKGZhbHNlKQorICAgICwgbV9zZWVrSXNQZW5kaW5nKGZhbHNlKQorICAgICwgbV90aW1l
T2ZPdmVybGFwcGluZ1NlZWsoLTEpCiAgICAgLCBtX2J1ZmZlcmluZyhmYWxzZSkKICAgICAsIG1f
cGxheWJhY2tSYXRlKDEpCiAgICAgLCBtX2Vycm9yT2NjdXJlZChmYWxzZSkKQEAgLTMzMywzMCAr
MzQ3LDI2IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGxheWJhY2tQb3Np
dGlvbigpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gbV9zZWVrVGltZTsKICAgICAgICAgaWYg
KG1fbWVkaWFEdXJhdGlvbikKICAgICAgICAgICAgIHJldHVybiBtX21lZGlhRHVyYXRpb247Cisg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGZsb2F0IHJldCA9IDAuMGY7Ci0KLSAgICBH
c3RRdWVyeSogcXVlcnkgPSBnc3RfcXVlcnlfbmV3X3Bvc2l0aW9uKEdTVF9GT1JNQVRfVElNRSk7
Ci0gICAgaWYgKCFnc3RfZWxlbWVudF9xdWVyeShtX3BsYXlCaW4uZ2V0KCksIHF1ZXJ5KSkgewot
ICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiUG9zaXRpb24gcXVlcnkgZmFpbGVkLi4uIik7Ci0g
ICAgICAgIGdzdF9xdWVyeV91bnJlZihxdWVyeSk7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAg
fQotCi0gICAgZ2ludDY0IHBvc2l0aW9uOwotICAgIGdzdF9xdWVyeV9wYXJzZV9wb3NpdGlvbihx
dWVyeSwgMCwgJnBvc2l0aW9uKTsKKyAgICAvLyBQb3NpdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBp
ZiBubyBhc3luYyBzdGF0ZSBjaGFuZ2UgaXMgZ29pbmcgb24gYW5kIHRoZSBzdGF0ZSBpcyBlaXRo
ZXIgcGF1c2VkIG9yIHBsYXlpbmcuCisgICAgZ2ludDY0IHBvc2l0aW9uID0gR1NUX0NMT0NLX1RJ
TUVfTk9ORTsKKyAgICBHc3RRdWVyeSogcXVlcnk9IGdzdF9xdWVyeV9uZXdfcG9zaXRpb24oR1NU
X0ZPUk1BVF9USU1FKTsKKyAgICBpZiAoZ3N0X2VsZW1lbnRfcXVlcnkobV9wbGF5QmluLmdldCgp
LCBxdWVyeSkpCisgICAgICAgIGdzdF9xdWVyeV9wYXJzZV9wb3NpdGlvbihxdWVyeSwgMCwgJnBv
c2l0aW9uKTsKIAotICAgIC8vIFBvc2l0aW9uIGlzIGF2YWlsYWJsZSBvbmx5IGlmIHRoZSBwaXBl
bGluZSBpcyBub3QgaW4gR1NUX1NUQVRFX05VTEwgb3IKLSAgICAvLyBHU1RfU1RBVEVfUkVBRFkg
c3RhdGUuCi0gICAgaWYgKHBvc2l0aW9uICE9IHN0YXRpY19jYXN0PGdpbnQ2ND4oR1NUX0NMT0NL
X1RJTUVfTk9ORSkpCi0gICAgICAgIHJldCA9IHN0YXRpY19jYXN0PGRvdWJsZT4ocG9zaXRpb24p
IC8gR1NUX1NFQ09ORDsKKyAgICBmbG9hdCByZXN1bHQgPSAwLjBmOworICAgIGlmIChzdGF0aWNf
Y2FzdDxHc3RDbG9ja1RpbWU+KHBvc2l0aW9uKSAhPSBHU1RfQ0xPQ0tfVElNRV9OT05FKQorICAg
ICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHBvc2l0aW9uKSAvIEdTVF9TRUNPTkQ7
CisgICAgZWxzZSBpZiAobV9jYW5GYWxsQmFja1RvTGFzdEZpbmlzaGVkU2Vla1Bvc2l0b24pCisg
ICAgICAgIHJlc3VsdCA9IG1fc2Vla1RpbWU7CiAKICAgICBMT0dfTUVESUFfTUVTU0FHRSgiUG9z
aXRpb24gJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTKHBvc2l0aW9uKSk7CiAKICAg
ICBnc3RfcXVlcnlfdW5yZWYocXVlcnkpOwogCi0gICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlw
ZWxpbmVTdGF0ZShHc3RTdGF0ZSBuZXdTdGF0ZSkKQEAgLTM4Nyw5ICszOTcsNiBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxpbmVTdGF0ZShHc3RTdGF0ZSBu
ZXdTdGF0ZSkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByZXBhcmVUb1Bs
YXkoKQogewotICAgIG1faXNFbmRSZWFjaGVkID0gZmFsc2U7Ci0gICAgbV9zZWVraW5nID0gZmFs
c2U7Ci0KICAgICBpZiAobV9kZWxheWluZ0xvYWQpIHsKICAgICAgICAgbV9kZWxheWluZ0xvYWQg
PSBmYWxzZTsKICAgICAgICAgY29tbWl0TG9hZCgpOwpAQCAtNDY3LDcgKzQ3NCw2IEBAIGZsb2F0
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3VycmVudFRpbWUoKSBjb25zdAogICAgICAg
ICByZXR1cm4gMC4wZjsKIAogICAgIHJldHVybiBwbGF5YmFja1Bvc2l0aW9uKCk7Ci0KIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNlZWsoZmxvYXQgdGltZSkKQEAgLTQ3
OCwzNSArNDg0LDUyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKGZs
b2F0IHRpbWUpCiAgICAgaWYgKG1fZXJyb3JPY2N1cmVkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMT0dfTUVESUFfTUVTU0FHRSgiU2VlayBhdHRlbXB0IHRvICVmIHNlY3MiLCB0aW1lKTsKKyAg
ICBMT0dfTUVESUFfTUVTU0FHRSgiW1NlZWtdIHNlZWsgYXR0ZW1wdCB0byAlZiBzZWNzIiwgdGlt
ZSk7CiAKICAgICAvLyBBdm9pZCB1c2VsZXNzIHNlZWtpbmcuCiAgICAgaWYgKHRpbWUgPT0gY3Vy
cmVudFRpbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRXh0cmFjdCB0aGUgaW50ZWdl
ciBwYXJ0IG9mIHRoZSB0aW1lIChzZWNvbmRzKSBhbmQgdGhlCi0gICAgLy8gZnJhY3Rpb25hbCBw
YXJ0IChtaWNyb3NlY29uZHMpLiBBdHRlbXB0IHRvIHJvdW5kIHRoZQotICAgIC8vIG1pY3Jvc2Vj
b25kcyBzbyBubyBmbG9hdGluZyBwb2ludCBwcmVjaXNpb24gaXMgbG9zdCBhbmQgd2UgY2FuCi0g
ICAgLy8gcGVyZm9ybSBhbiBhY2N1cmF0ZSBzZWVrLgotICAgIGZsb2F0IHNlY29uZHM7Ci0gICAg
ZmxvYXQgbWljcm9TZWNvbmRzID0gbW9kZih0aW1lLCAmc2Vjb25kcykgKiAxMDAwMDAwOwotICAg
IEdUaW1lVmFsIHRpbWVWYWx1ZTsKLSAgICB0aW1lVmFsdWUudHZfc2VjID0gc3RhdGljX2Nhc3Q8
Z2xvbmc+KHNlY29uZHMpOwotICAgIHRpbWVWYWx1ZS50dl91c2VjID0gc3RhdGljX2Nhc3Q8Z2xv
bmc+KHJvdW5kZihtaWNyb1NlY29uZHMgLyAxMDAwMCkgKiAxMDAwMCk7CisgICAgaWYgKGlzTGl2
ZVN0cmVhbSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBHc3RDbG9ja1RpbWUgY2xvY2tUaW1l
ID0gdG9Hc3RDbG9ja1RpbWUodGltZSk7CisgICAgTE9HX01FRElBX01FU1NBR0UoIltTZWVrXSBz
ZWVraW5nIHRvICUiIEdTVF9USU1FX0ZPUk1BVCAiICglZikiLCBHU1RfVElNRV9BUkdTKGNsb2Nr
VGltZSksIHRpbWUpOwogCi0gICAgR3N0Q2xvY2tUaW1lIGNsb2NrVGltZSA9IEdTVF9USU1FVkFM
X1RPX1RJTUUodGltZVZhbHVlKTsKLSAgICBMT0dfTUVESUFfTUVTU0FHRSgiU2VlazogJSIgR1NU
X1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTKGNsb2NrVGltZSkpOwotCi0gICAgaWYgKCFnc3Rf
ZWxlbWVudF9zZWVrKG1fcGxheUJpbi5nZXQoKSwgbV9wbGF5ZXItPnJhdGUoKSwKLSAgICAgICAg
ICAgIEdTVF9GT1JNQVRfVElNRSwKLSAgICAgICAgICAgIChHc3RTZWVrRmxhZ3MpKEdTVF9TRUVL
X0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX0FDQ1VSQVRFKSwKLSAgICAgICAgICAgIEdTVF9T
RUVLX1RZUEVfU0VULCBjbG9ja1RpbWUsCi0gICAgICAgICAgICBHU1RfU0VFS19UWVBFX05PTkUs
IEdTVF9DTE9DS19USU1FX05PTkUpKQotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiU2VlayB0
byAlZiBmYWlsZWQiLCB0aW1lKTsKLSAgICBlbHNlIHsKLSAgICAgICAgbV9zZWVraW5nID0gdHJ1
ZTsKLSAgICAgICAgbV9zZWVrVGltZSA9IHRpbWU7CisgICAgaWYgKG1fc2Vla2luZykgeworICAg
ICAgICBpZiAobV9zZWVrSXNQZW5kaW5nKSB7CisgICAgICAgICAgICBtX3NlZWtUaW1lID0gdGlt
ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX3RpbWVPZk92ZXJs
YXBwaW5nU2VlayA9IHRpbWU7CiAgICAgfQorCisgICAgR3N0U3RhdGUgc3RhdGU7CisgICAgR3N0
U3RhdGVDaGFuZ2VSZXR1cm4gZ2V0U3RhdGVSZXN1bHQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGUo
bV9wbGF5QmluLmdldCgpLCAmc3RhdGUsIDAsIDApOworICAgIGlmIChnZXRTdGF0ZVJlc3VsdCA9
PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUgfHwgZ2V0U3RhdGVSZXN1bHQgPT0gR1NUX1NUQVRF
X0NIQU5HRV9OT19QUkVST0xMKSB7CisgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJbU2Vla10g
Y2Fubm90IHNlZWssIGN1cnJlbnQgc3RhdGUgY2hhbmdlIGlzICVzIiwgZ3N0X2VsZW1lbnRfc3Rh
dGVfY2hhbmdlX3JldHVybl9nZXRfbmFtZShnZXRTdGF0ZVJlc3VsdCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChnZXRTdGF0ZVJlc3VsdCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0FT
WU5DIHx8IChzdGF0ZSAhPSBHU1RfU1RBVEVfUEFVU0VEICYmIHN0YXRlICE9IEdTVF9TVEFURV9Q
TEFZSU5HKSB8fCBtX2lzRW5kUmVhY2hlZCkgeworICAgICAgICBtX3NlZWtJc1BlbmRpbmcgPSB0
cnVlOworICAgICAgICBpZiAobV9pc0VuZFJlYWNoZWQpIHsKKyAgICAgICAgICAgIExPR19NRURJ
QV9NRVNTQUdFKCJbU2Vla10gcmVzZXQgcGlwZWxpbmUiKTsKKyAgICAgICAgICAgIEFTU0VSVChz
dGF0ZSA9PSBHU1RfU1RBVEVfTlVMTCk7CisgICAgICAgICAgICBtX3Jlc2V0UGlwZWxpbmUgPSB0
cnVlOworICAgICAgICAgICAgY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUEFVU0VEKTsK
KyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdlIGNhbiBzZWVrIG5vdy4KKyAg
ICAgICAgaWYgKCFnc3RfZWxlbWVudF9zZWVrKG1fcGxheUJpbi5nZXQoKSwgbV9wbGF5ZXItPnJh
dGUoKSwgR1NUX0ZPUk1BVF9USU1FLCBzdGF0aWNfY2FzdDxHc3RTZWVrRmxhZ3M+KEdTVF9TRUVL
X0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX0FDQ1VSQVRFKSwKKyAgICAgICAgICAgIEdTVF9T
RUVLX1RZUEVfU0VULCBjbG9ja1RpbWUsIEdTVF9TRUVLX1RZUEVfTk9ORSwgR1NUX0NMT0NLX1RJ
TUVfTk9ORSkpIHsKKyAgICAgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJbU2Vla10gc2Vla2lu
ZyB0byAlZiBmYWlsZWQiLCB0aW1lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIG1fc2Vla2luZyA9IHRydWU7CisgICAgbV9zZWVrVGltZSA9IHRpbWU7Cisg
ICAgbV9pc0VuZFJlYWNoZWQgPSBmYWxzZTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnBhdXNlZCgpIGNvbnN0CkBAIC02ODAsNiArNzAzLDggQEAgZ2Jvb2xlYW4gTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3Nh
Z2UpCiAgICAgY29uc3QgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfbWVzc2FnZV9nZXRf
c3RydWN0dXJlKG1lc3NhZ2UpOwogICAgIEdzdFN0YXRlIHJlcXVlc3RlZFN0YXRlLCBjdXJyZW50
U3RhdGU7CiAKKyAgICBtX2NhbkZhbGxCYWNrVG9MYXN0RmluaXNoZWRTZWVrUG9zaXRvbiA9IGZh
bHNlOworCiAgICAgaWYgKHN0cnVjdHVyZSkgewogICAgICAgICBjb25zdCBnY2hhciogbWVzc2Fn
ZVR5cGVOYW1lID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZShzdHJ1Y3R1cmUpOwogCkBAIC02OTEs
NyArNzE2LDEwIEBAIGdib29sZWFuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxl
TWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgTE9H
X01FRElBX01FU1NBR0UoIk1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBlbGVtZW50ICVzIiwgR1NUX01F
U1NBR0VfU1JDX05BTUUobWVzc2FnZSkpOworICAgIC8vIFdlIGlnbm9yZSBzdGF0ZSBjaGFuZ2Vz
IGZyb20gaW50ZXJuYWwgZWxlbWVudHMuIFRoZXkgYXJlIGZvcndhcmRlZCB0byBwbGF5YmluMiBh
bnl3YXkuCisgICAgYm9vbCBtZXNzYWdlU291cmNlSXNQbGF5YmluID0gR1NUX01FU1NBR0VfU1JD
KG1lc3NhZ2UpID09IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0T2JqZWN0Kj4obV9wbGF5QmluLmdldCgp
KTsKKworICAgIExPR19NRURJQV9NRVNTQUdFKCJNZXNzYWdlICVzIHJlY2VpdmVkIGZyb20gZWxl
bWVudCAlcyIsIEdTVF9NRVNTQUdFX1RZUEVfTkFNRShtZXNzYWdlKSwgR1NUX01FU1NBR0VfU1JD
X05BTUUobWVzc2FnZSkpOwogICAgIHN3aXRjaCAoR1NUX01FU1NBR0VfVFlQRShtZXNzYWdlKSkg
ewogICAgIGNhc2UgR1NUX01FU1NBR0VfRVJST1I6CiAgICAgICAgIGlmIChtX3Jlc2V0UGlwZWxp
bmUpCkBAIC03MjksMzMgKzc1NywyNiBAQCBnYm9vbGVhbiBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgICAgIGxv
YWRpbmdGYWlsZWQoZXJyb3IpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9NRVNTQUdF
X0VPUzoKLSAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIkVuZCBvZiBTdHJlYW0iKTsKICAgICAg
ICAgZGlkRW5kKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX01FU1NBR0VfU1RBVEVf
Q0hBTkdFRDoKLSAgICAgICAgLy8gSWdub3JlIHN0YXRlIGNoYW5nZXMgaWYgbG9hZCBpcyBkZWxh
eWVkIChwcmVsb2FkPW5vbmUpLiBUaGUKLSAgICAgICAgLy8gcGxheWVyIHN0YXRlIHdpbGwgYmUg
dXBkYXRlZCBvbmNlIGNvbW1pdExvYWQoKSBpcyBjYWxsZWQuCi0gICAgICAgIGlmIChtX2RlbGF5
aW5nTG9hZCkgewotICAgICAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIk1lZGlhIGxvYWQgaGFz
IGJlZW4gZGVsYXllZC4gSWdub3Jpbmcgc3RhdGUgY2hhbmdlcyBmb3Igbm93Iik7CisgICAgY2Fz
ZSBHU1RfTUVTU0FHRV9BU1lOQ19ET05FOgorICAgICAgICBpZiAoIW1lc3NhZ2VTb3VyY2VJc1Bs
YXliaW4gfHwgbV9kZWxheWluZ0xvYWQpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIElnbm9yZSBzdGF0ZSBjaGFuZ2VzIGZyb20gaW50ZXJuYWwgZWxlbWVudHMu
IFRoZXkgYXJlCi0gICAgICAgIC8vIGZvcndhcmRlZCB0byBwbGF5YmluMiBhbnl3YXkuCi0gICAg
ICAgIGlmIChHU1RfTUVTU0FHRV9TUkMobWVzc2FnZSkgPT0gcmVpbnRlcnByZXRfY2FzdDxHc3RP
YmplY3QqPihtX3BsYXlCaW4uZ2V0KCkpKSB7Ci0gICAgICAgICAgICB1cGRhdGVTdGF0ZXMoKTsK
LQotICAgICAgICAgICAgLy8gQ29uc3RydWN0IGEgZmlsZW5hbWUgZm9yIHRoZSBncmFwaHZpeiBk
b3QgZmlsZSBvdXRwdXQuCi0gICAgICAgICAgICBHc3RTdGF0ZSBuZXdTdGF0ZTsKLSAgICAgICAg
ICAgIGdzdF9tZXNzYWdlX3BhcnNlX3N0YXRlX2NoYW5nZWQobWVzc2FnZSwgJmN1cnJlbnRTdGF0
ZSwgJm5ld1N0YXRlLCAwKTsKKyAgICAgICAgYXN5bmNTdGF0ZUNoYW5nZURvbmUoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBHU1RfTUVTU0FHRV9TVEFURV9DSEFOR0VEOiB7CisgICAgICAg
IGlmICghbWVzc2FnZVNvdXJjZUlzUGxheWJpbiB8fCBtX2RlbGF5aW5nTG9hZCkKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB1cGRhdGVTdGF0ZXMoKTsKIAotICAgICAgICAgICAgQ1N0cmlu
ZyBkb3RGaWxlTmFtZSA9IFN0cmluZzo6Zm9ybWF0KCJ3ZWJraXQtdmlkZW8uJXNfJXMiLAotICAg
ICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKGN1cnJlbnRTdGF0ZSksCi0g
ICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUobmV3U3RhdGUpKS51dGY4
KCk7CisgICAgICAgIC8vIENvbnN0cnVjdCBhIGZpbGVuYW1lIGZvciB0aGUgZ3JhcGh2aXogZG90
IGZpbGUgb3V0cHV0LgorICAgICAgICBHc3RTdGF0ZSBuZXdTdGF0ZTsKKyAgICAgICAgZ3N0X21l
c3NhZ2VfcGFyc2Vfc3RhdGVfY2hhbmdlZChtZXNzYWdlLCAmY3VycmVudFN0YXRlLCAmbmV3U3Rh
dGUsIDApOworICAgICAgICBDU3RyaW5nIGRvdEZpbGVOYW1lID0gU3RyaW5nOjpmb3JtYXQoIndl
YmtpdC12aWRlby4lc18lcyIsIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKGN1cnJlbnRTdGF0
ZSksIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKG5ld1N0YXRlKSkudXRmOCgpOworICAgICAg
ICBHU1RfREVCVUdfQklOX1RPX0RPVF9GSUxFX1dJVEhfVFMoR1NUX0JJTihtX3BsYXlCaW4uZ2V0
KCkpLCBHU1RfREVCVUdfR1JBUEhfU0hPV19BTEwsIGRvdEZpbGVOYW1lLmRhdGEoKSk7CiAKLSAg
ICAgICAgICAgIEdTVF9ERUJVR19CSU5fVE9fRE9UX0ZJTEVfV0lUSF9UUyhHU1RfQklOKG1fcGxh
eUJpbi5nZXQoKSksIEdTVF9ERUJVR19HUkFQSF9TSE9XX0FMTCwgZG90RmlsZU5hbWUuZGF0YSgp
KTsKLSAgICAgICAgfQogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBHU1RfTUVTU0FH
RV9CVUZGRVJJTkc6CiAgICAgICAgIHByb2Nlc3NCdWZmZXJpbmdTdGF0cyhtZXNzYWdlKTsKICAg
ICAgICAgYnJlYWs7CkBAIC03NjQsOCArNzg1LDggQEAgZ2Jvb2xlYW4gTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAjZWxzZQog
ICAgIGNhc2UgR1NUX01FU1NBR0VfRFVSQVRJT046CiAjZW5kaWYKLSAgICAgICAgTE9HX01FRElB
X01FU1NBR0UoIkR1cmF0aW9uIGNoYW5nZWQiKTsKLSAgICAgICAgZHVyYXRpb25DaGFuZ2VkKCk7
CisgICAgICAgIGlmIChtZXNzYWdlU291cmNlSXNQbGF5YmluKQorICAgICAgICAgICAgZHVyYXRp
b25DaGFuZ2VkKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX01FU1NBR0VfUkVRVUVT
VF9TVEFURToKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfcmVxdWVzdF9zdGF0ZShtZXNzYWdl
LCAmcmVxdWVzdGVkU3RhdGUpOwpAQCAtMTAzMyw2ICsxMDU0LDMyIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpjYW5jZWxMb2FkKCkKICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKG1fcGxheUJpbi5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwogfQogCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXN5bmNTdGF0ZUNoYW5nZURvbmUoKQoreworICAgIGlm
ICghbV9wbGF5QmluIHx8IG1fZXJyb3JPY2N1cmVkKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAobV9zZWVraW5nKSB7CisgICAgICAgIGlmIChtX3NlZWtJc1BlbmRpbmcpCisgICAgICAgICAg
ICB1cGRhdGVTdGF0ZXMoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBMT0dfTUVESUFf
TUVTU0FHRSgiW1NlZWtdIHNlZWtlZCB0byAlZiIsIG1fc2Vla1RpbWUpOworICAgICAgICAgICAg
bV9zZWVraW5nID0gZmFsc2U7CisgICAgICAgICAgICBpZiAobV90aW1lT2ZPdmVybGFwcGluZ1Nl
ZWsgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICBzZWVrKG1fdGltZU9mT3ZlcmxhcHBpbmdTZWVr
KTsKKyAgICAgICAgICAgICAgICBtX3RpbWVPZk92ZXJsYXBwaW5nU2VlayA9IC0xOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIHBp
cGVsaW5lIGNhbiBzdGlsbCBoYXZlIGEgcGVuZGluZyBzdGF0ZS4gSW4gdGhpcyBjYXNlIGEgcG9z
aXRpb24gcXVlcnkgd2lsbCBmYWlsLgorICAgICAgICAgICAgLy8gUmlnaHQgbm93IHdlIGNhbiB1
c2UgbV9zZWVrVGltZSBhcyBhIGZhbGxiYWNrLgorICAgICAgICAgICAgbV9jYW5GYWxsQmFja1Rv
TGFzdEZpbmlzaGVkU2Vla1Bvc2l0b24gPSB0cnVlOworICAgICAgICAgICAgdGltZUNoYW5nZWQo
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICB1cGRhdGVTdGF0ZXMoKTsKK30KKwog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiB7CiAgICAg
aWYgKCFtX3BsYXlCaW4pCkBAIC0xMDQ2LDE2ICsxMDkzLDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAgIEdzdFN0YXRlIHN0YXRlOwogICAg
IEdzdFN0YXRlIHBlbmRpbmc7CiAKLSAgICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQgPSBnc3Rf
ZWxlbWVudF9nZXRfc3RhdGUobV9wbGF5QmluLmdldCgpLAotICAgICAgICAmc3RhdGUsICZwZW5k
aW5nLCAyNTAgKiBHU1RfTlNFQ09ORCk7CisgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ2V0U3Rh
dGVSZXN1bHQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9wbGF5QmluLmdldCgpLCAmc3RhdGUs
ICZwZW5kaW5nLCAyNTAgKiBHU1RfTlNFQ09ORCk7CiAKLSAgICBib29sIHNob3VsZFVwZGF0ZUFm
dGVyU2VlayA9IGZhbHNlOwogICAgIGJvb2wgc2hvdWxkVXBkYXRlUGxheWJhY2tTdGF0ZSA9IGZh
bHNlOwotICAgIHN3aXRjaCAocmV0KSB7CisgICAgc3dpdGNoIChnZXRTdGF0ZVJlc3VsdCkgewog
ICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTOgotICAgICAgICBMT0dfTUVESUFfTUVT
U0FHRSgiU3RhdGU6ICVzLCBwZW5kaW5nOiAlcyIsCi0gICAgICAgICAgICBnc3RfZWxlbWVudF9z
dGF0ZV9nZXRfbmFtZShzdGF0ZSksCi0gICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRf
bmFtZShwZW5kaW5nKSk7CisgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJTdGF0ZTogJXMsIHBl
bmRpbmc6ICVzIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLCBnc3RfZWxlbWVu
dF9zdGF0ZV9nZXRfbmFtZShwZW5kaW5nKSk7CiAKICAgICAgICAgbV9yZXNldFBpcGVsaW5lID0g
c3RhdGUgPD0gR1NUX1NUQVRFX1JFQURZOwogCkBAIC0xMTMyLDExICsxMTc1LDYgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICBt
X2NoYW5naW5nUmF0ZSA9IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fc2Vla2lu
ZykgewotICAgICAgICAgICAgc2hvdWxkVXBkYXRlQWZ0ZXJTZWVrID0gdHJ1ZTsKLSAgICAgICAg
ICAgIG1fc2Vla2luZyA9IGZhbHNlOwotICAgICAgICB9Ci0KICAgICAgICAgaWYgKG1fcmVxdWVz
dGVkU3RhdGUgPT0gR1NUX1NUQVRFX1BBVVNFRCAmJiBzdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VE
KSB7CiAgICAgICAgICAgICBzaG91bGRVcGRhdGVQbGF5YmFja1N0YXRlID0gdHJ1ZTsKICAgICAg
ICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJSZXF1ZXN0ZWQgc3RhdGUgY2hhbmdlIHRvICVzIHdh
cyBjb21wbGV0ZWQiLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSkpOwpAQCAtMTE0
NCw5ICsxMTgyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0
YXRlcygpCiAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX0FTWU5D
OgotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiQXN5bmM6IFN0YXRlOiAlcywgcGVuZGluZzog
JXMiLAotICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoc3RhdGUpLAotICAg
ICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOworICAgICAgICBM
T0dfTUVESUFfTUVTU0FHRSgiQXN5bmM6IFN0YXRlOiAlcywgcGVuZGluZzogJXMiLCBnc3RfZWxl
bWVudF9zdGF0ZV9nZXRfbmFtZShzdGF0ZSksIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBl
bmRpbmcpKTsKICAgICAgICAgLy8gQ2hhbmdlIGluIHByb2dyZXNzCiAKICAgICAgICAgLy8gT24t
ZGlzayBidWZmZXJpbmcgd2FzIGF0dGVtcHRlZCBidXQgdGhlIG1lZGlhIGlzIGxpdmUuIFRoaXMK
QEAgLTExNjQsMjQgKzEyMDAsMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5
QmluLmdldCgpLCBHU1RfU1RBVEVfUExBWUlORyk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
IWlzTGl2ZVN0cmVhbSgpICYmICFtX2J1ZmZlcmluZykKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBpZiAobV9zZWVraW5nKSB7Ci0gICAgICAgICAgICBzaG91bGRVcGRhdGVBZnRlclNl
ZWsgPSB0cnVlOwotICAgICAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7Ci0gICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU6Ci0gICAgICAg
IExPR19NRURJQV9NRVNTQUdFKCJGYWlsdXJlOiBTdGF0ZTogJXMsIHBlbmRpbmc6ICVzIiwKLSAg
ICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHN0YXRlKSwKLSAgICAgICAgICAg
IGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKKyAgICAgICAgTE9HX01FRElB
X01FU1NBR0UoIkZhaWx1cmU6IFN0YXRlOiAlcywgcGVuZGluZzogJXMiLCBnc3RfZWxlbWVudF9z
dGF0ZV9nZXRfbmFtZShzdGF0ZSksIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcp
KTsKICAgICAgICAgLy8gQ2hhbmdlIGZhaWxlZAogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBH
U1RfU1RBVEVfQ0hBTkdFX05PX1BSRVJPTEw6Ci0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJO
byBwcmVyb2xsOiBTdGF0ZTogJXMsIHBlbmRpbmc6ICVzIiwKLSAgICAgICAgICAgIGdzdF9lbGVt
ZW50X3N0YXRlX2dldF9uYW1lKHN0YXRlKSwKLSAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRl
X2dldF9uYW1lKHBlbmRpbmcpKTsKKyAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIk5vIHByZXJv
bGw6IFN0YXRlOiAlcywgcGVuZGluZzogJXMiLCBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShz
dGF0ZSksIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKIAogICAgICAgICBp
ZiAoc3RhdGUgPT0gR1NUX1NUQVRFX1JFQURZKQogICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0g
TWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOwpAQCAtMTE5Myw0MiArMTIxOCwzOCBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAgfSBlbHNl
IGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUExBWUlORykKICAgICAgICAgICAgIG1fcGF1c2VkID0g
ZmFsc2U7CiAKLSAgICAgICAgaWYgKG1fc2Vla2luZykgewotICAgICAgICAgICAgc2hvdWxkVXBk
YXRlQWZ0ZXJTZWVrID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fc2Vla2luZyA9IGZhbHNlOwotICAg
ICAgICAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRf
c3RhdGUobV9wbGF5QmluLmdldCgpLCBHU1RfU1RBVEVfUExBWUlORyk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoIW1fcGF1c2VkKQorICAgICAgICBpZiAoIW1fcGF1c2VkKQogICAgICAgICAgICAgZ3N0
X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJpbi5nZXQoKSwgR1NUX1NUQVRFX1BMQVlJTkcpOwog
CiAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJFbHNlIDog
JWQiLCByZXQpOworICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiRWxzZSA6ICVkIiwgZ2V0U3Rh
dGVSZXN1bHQpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBtX3JlcXVlc3RlZFN0YXRl
ID0gR1NUX1NUQVRFX1ZPSURfUEVORElORzsKIAotICAgIGlmIChzZWVraW5nKCkpCi0gICAgICAg
IG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKLQotICAgIGlmIChzaG91
bGRVcGRhdGVBZnRlclNlZWspCi0gICAgICAgIHRpbWVDaGFuZ2VkKCk7Ci0KICAgICBpZiAoc2hv
dWxkVXBkYXRlUGxheWJhY2tTdGF0ZSkKICAgICAgICAgbV9wbGF5ZXItPnBsYXliYWNrU3RhdGVD
aGFuZ2VkKCk7CiAKICAgICBpZiAobV9uZXR3b3JrU3RhdGUgIT0gb2xkTmV0d29ya1N0YXRlKSB7
Ci0gICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJOZXR3b3JrIFN0YXRlIENoYW5nZWQgZnJvbSAl
dSB0byAldSIsCi0gICAgICAgICAgICBvbGROZXR3b3JrU3RhdGUsIG1fbmV0d29ya1N0YXRlKTsK
KyAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIk5ldHdvcmsgU3RhdGUgQ2hhbmdlZCBmcm9tICV1
IHRvICV1Iiwgb2xkTmV0d29ya1N0YXRlLCBtX25ldHdvcmtTdGF0ZSk7CiAgICAgICAgIG1fcGxh
eWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAgICAgfQogICAgIGlmIChtX3JlYWR5U3RhdGUg
IT0gb2xkUmVhZHlTdGF0ZSkgewotICAgICAgICBMT0dfTUVESUFfTUVTU0FHRSgiUmVhZHkgU3Rh
dGUgQ2hhbmdlZCBmcm9tICV1IHRvICV1IiwKLSAgICAgICAgICAgIG9sZFJlYWR5U3RhdGUsIG1f
cmVhZHlTdGF0ZSk7CisgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJSZWFkeSBTdGF0ZSBDaGFu
Z2VkIGZyb20gJXUgdG8gJXUiLCBvbGRSZWFkeVN0YXRlLCBtX3JlYWR5U3RhdGUpOwogICAgICAg
ICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB9CisKKyAgICBpZiAobV9zZWVr
SXNQZW5kaW5nICYmIGdldFN0YXRlUmVzdWx0ID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyAm
JiAoc3RhdGUgPT0gR1NUX1NUQVRFX1BBVVNFRCB8fCBzdGF0ZSA9PSBHU1RfU1RBVEVfUExBWUlO
RykpIHsKKyAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIltTZWVrXSBjb21taXR0aW5nIHBlbmRp
bmcgc2VlayB0byAlZiIsIG1fc2Vla1RpbWUpOworICAgICAgICBtX3NlZWtJc1BlbmRpbmcgPSBm
YWxzZTsKKyAgICAgICAgbV9zZWVraW5nID0gZ3N0X2VsZW1lbnRfc2VlayhtX3BsYXlCaW4uZ2V0
KCksIG1fcGxheWVyLT5yYXRlKCksIEdTVF9GT1JNQVRfVElNRSwgc3RhdGljX2Nhc3Q8R3N0U2Vl
a0ZsYWdzPihHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19BQ0NVUkFURSksCisg
ICAgICAgICAgICBHU1RfU0VFS19UWVBFX1NFVCwgdG9Hc3RDbG9ja1RpbWUobV9zZWVrVGltZSks
IEdTVF9TRUVLX1RZUEVfTk9ORSwgR1NUX0NMT0NLX1RJTUVfTk9ORSk7CisgICAgICAgIGlmICgh
bV9zZWVraW5nKQorICAgICAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIltTZWVrXSBzZWVraW5n
IHRvICVmIGZhaWxlZCIsIG1fc2Vla1RpbWUpOworICAgIH0KIH0KIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6Om1lZGlhTG9jYXRpb25DaGFuZ2VkKEdzdE1lc3NhZ2UqIG1lc3Nh
Z2UpCkBAIC0xMzYxLDE5ICsxMzgyLDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjYWNoZUR1cmF0aW9uKCkKIAogICAgIC8vIEFuZCByZS1jYWNoZSBpdCBpZiBwb3NzaWJs
ZS4KICAgICBHc3RTdGF0ZSBzdGF0ZTsKLSAgICBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9wbGF5
QmluLmdldCgpLCAmc3RhdGUsIDAsIDApOworICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIGdldFN0
YXRlUmVzdWx0ID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGxheUJpbi5nZXQoKSwgJnN0YXRl
LCAwLCAwKTsKICAgICBmbG9hdCBuZXdEdXJhdGlvbiA9IGR1cmF0aW9uKCk7CiAKLSAgICBpZiAo
c3RhdGUgPD0gR1NUX1NUQVRFX1JFQURZKSB7CisgICAgaWYgKHN0YXRlID4gR1NUX1NUQVRFX1JF
QURZICYmIGdldFN0YXRlUmVzdWx0ID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUykgewogICAg
ICAgICAvLyBEb24ndCBzZXQgbV9tZWRpYUR1cmF0aW9uS25vd24geWV0IGlmIHRoZSBwaXBlbGlu
ZSBpcyBub3QKLSAgICAgICAgLy8gcGF1c2VkLiBUaGlzIGFsbG93cyBkdXJhdGlvbigpIHF1ZXJ5
IHRvIGZhaWwgYXQgbGVhc3Qgb25jZQorICAgICAgICAvLyBzdGFibGUuIFRoaXMgYWxsb3dzIGR1
cmF0aW9uKCkgcXVlcnkgdG8gZmFpbCBhdCBsZWFzdCBvbmNlCiAgICAgICAgIC8vIGJlZm9yZSBw
bGF5YmFjayBzdGFydHMgYW5kIGR1cmF0aW9uIGJlY29tZXMga25vd24uCi0gICAgICAgIGlmICgh
c3RkOjppc2luZihuZXdEdXJhdGlvbikpCi0gICAgICAgICAgICBtX21lZGlhRHVyYXRpb24gPSBu
ZXdEdXJhdGlvbjsKLSAgICB9IGVsc2UgewogICAgICAgICBtX21lZGlhRHVyYXRpb25Lbm93biA9
ICFzdGQ6OmlzaW5mKG5ld0R1cmF0aW9uKTsKLSAgICAgICAgaWYgKG1fbWVkaWFEdXJhdGlvbktu
b3duKQotICAgICAgICAgICAgbV9tZWRpYUR1cmF0aW9uID0gbmV3RHVyYXRpb247CiAgICAgfQog
CiAgICAgaWYgKCFzdGQ6OmlzaW5mKG5ld0R1cmF0aW9uKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBmY2VjMDQ1ZTkxMTQ2ZGYwNTU0NjA3YjYx
MDNlYjgzZjE4OTRhYWExLi41MmVkMDQzYWE4NDJkMWMxMmQ2MDZkOTE5YWI4OWZhY2Y3YzE0YjQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0x
MTQsNiArMTE0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2FjaGVEdXJhdGlvbigpOwogICAg
IHZvaWQgdXBkYXRlU3RhdGVzKCk7CisgICAgdm9pZCBhc3luY1N0YXRlQ2hhbmdlRG9uZSgpOwog
CiAgICAgdm9pZCBjcmVhdGVHU1RQbGF5QmluKCk7CiAgICAgYm9vbCBjaGFuZ2VQaXBlbGluZVN0
YXRlKEdzdFN0YXRlKTsKQEAgLTE0MCw2ICsxNDEsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9y
ZXNldFBpcGVsaW5lOwogICAgIGJvb2wgbV9wYXVzZWQ7CiAgICAgYm9vbCBtX3NlZWtpbmc7Cisg
ICAgYm9vbCBtX3NlZWtJc1BlbmRpbmc7CisgICAgZmxvYXQgbV90aW1lT2ZPdmVybGFwcGluZ1Nl
ZWs7CisgICAgYm9vbCBtX2NhbkZhbGxCYWNrVG9MYXN0RmluaXNoZWRTZWVrUG9zaXRvbjsKICAg
ICBib29sIG1fYnVmZmVyaW5nOwogICAgIGZsb2F0IG1fcGxheWJhY2tSYXRlOwogICAgIGJvb2wg
bV9lcnJvck9jY3VyZWQ7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmI4M2RiMGNlMjIyMjgyMTVlZmRmZmI0YmJjM2ExMjZl
ZTUzZWIyZS4uOWFjNzA1NWQ4NjZjMWExYmExNmFmZGI3YTEzNTNmZGY1NDJmNDg2NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDEzLTA0LTMwICBCYWxhenMgS2VsZW1lbiAgPGIua2VsZW1lbkBz
aXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIGNhbm5vdCBzZWVrIGFmdGVy
IHZpZGVvIGZpbmlzaGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTQwNDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIG1lZGlhL3ZpZGVvLXNlZWstYWZ0ZXItZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQuaHRtbDogQWRkZWQuCisKIDIw
MTMtMDUtMTAgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgRUZMIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL21lZGlhL3ZpZGVvLXNlZWstYWZ0ZXItZW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLXNlZWstYWZ0ZXItZW5kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Zjc2
MmIzMGI1YjczMWZmZWJiM2FmYmNiZWVjYmYyOTkzYWI1Mzc2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOSBAQAorVGVzdCB0aGF0IHdlIGNhbiBzZWVrIGFmdGVyIHJlYWNoZWQgdGhlIGVuZCBv
ZiB0aGUgdmlkZW8uCisKK0VWRU5UKHBsYXlpbmcpCitFVkVOVChlbmRlZCkKK0VWRU5UKHNlZWtl
ZCkKK0VWRU5UKHBsYXlpbmcpCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUudG9GaXhlZCgy
KSA9PSAnMycpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1zZWVrLWFmdGVyLWVuZC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tc2Vl
ay1hZnRlci1lbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjNhYTAzZTBmNWQyODI2ZmNjMWEyM2RmZWQ0
MjQ3MTg0NTkwZjVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
c2Vlay1hZnRlci1lbmQuaHRtbApAQCAtMCwwICsxLDQ4IEBACis8IURPQ1RZUEUgSFRNTD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz1tZWRpYS1maWxlLmpzPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnQoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICAgICAgICAgIHZh
ciBjb3VudFBsYXlpbmcgPSAwOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgncGxheWlu
ZycsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoKytjb3VudFBsYXlpbmcg
PiAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dSZXN1bHQoZmFsc2UsICdGQUlMOiBw
bGF5aW5nIGZpcmVkIG1vcmUgdGhlbiB0d2ljZS4nKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVuZFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB2YXIgc2Vla1RhcmdldCA9IDM7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChjb3VudFBsYXlpbmcgPT0gMikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCd2aWRlby5jdXJyZW50VGltZS50b0ZpeGVkKDIpJywgc2Vl
a1RhcmdldCwgJz09Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKCdlbmRlZCcsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW8uY3VycmVudFRpbWUgPSBzZWVrVGFyZ2V0Owor
ICAgICAgICAgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZSgnc2Vla2VkJywgZnVuY3Rp
b24oKSB7IHZpZGVvLnBsYXkoKTsgfSkKKyAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgdmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbiAtIDAuMjsK
KyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRN
ZWRpYUZpbGUoJ3ZpZGVvJywgJ2NvbnRlbnQvdGVzdCcpOworICAgICAgICAgICAgICAgIHZpZGVv
LnBsYXkoKTsKKworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgICAgIGxvZ1Jlc3VsdChmYWxzZSwgJ0ZBSUw6IHRpbWVvdXQnKTsKKyAgICAg
ICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgIH0sIDEwMDApOworICAg
ICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBv
bmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cD5UZXN0IHRoYXQgd2UgY2FuIHNlZWsgYWZ0ZXIg
cmVhY2hlZCB0aGUgZW5kIG9mIHRoZSB2aWRlby48L3A+CisgICAgICAgIDx2aWRlbyBjb250cm9s
cz48L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>