<?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>89122</bug_id>
          
          <creation_ts>2012-06-14 13:31:45 -0700</creation_ts>
          <short_desc>[GStreamer] Audio device not closed after playing sound</short_desc>
          <delta_ts>2012-09-13 12:32:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Linux</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="Daniel Drake">dsd</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>crogers</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gustavo</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>649431</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Drake">dsd</who>
    <bug_when>2012-06-14 13:31:45 -0700</bug_when>
    <thetext>After a sound is played within webkit (loaded e.g. with an &lt;a type=&quot;application/log&quot;&gt; hyperlink), the audio device is not closed.

Test case:
1. &quot;cat /proc/asound/card0/pcm*/sub0/status&quot; reads closed
2. Open browser, play ogg vorbis audio
3. &quot;cat /proc/asound/card0/pcm*/sub0/status&quot; reads state: RUNNING
4. state is still RUNNING even minutes after the audio file has stopped playing

Navigating to another page will close the device.

WebKit-1.8.1 reproduced in Epiphany on Fedora 17.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649468</commentid>
    <comment_count>1</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-06-14 14:02:29 -0700</bug_when>
    <thetext>What are your versions of gst-plugins-base and -good?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649472</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Drake">dsd</who>
    <bug_when>2012-06-14 14:04:39 -0700</bug_when>
    <thetext>gst-plugins-base-0.10.36
gst-plugins-good-0.10.31</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649495</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-06-14 14:25:07 -0700</bug_when>
    <thetext>Which audio sink is used? alsasink or pulsesink?
Can you attach a debug log with GST_DEBUG=alsa*:5,pulse:5 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649502</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-06-14 14:30:35 -0700</bug_when>
    <thetext>Actually I think this is because on EOS we pause the gst pipeline. We don&apos;t set it to READY or NULL, this is done in the destructor of the player. That&apos;s why navigating to another page actually closes the device.

Do you really need the device to be closed on EOS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649509</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Drake">dsd</who>
    <bug_when>2012-06-14 14:44:02 -0700</bug_when>
    <thetext>Using alsasink, no pulse on our platform (yet).

The device should be closed on EOS to save power. Not only power to the audio components - our platform (OLPC XO) performs an &quot;idle suspend&quot; on system inactivity (where the CPU gets powered down but the display is left running) saving a lot of power, but having an open audio device inhibits such suspends for obvious reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651043</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-06-17 15:33:57 -0700</bug_when>
    <thetext>I started working on a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673596</commentid>
    <comment_count>7</comment_count>
      <attachid>153280</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-07-19 09:49:09 -0700</bug_when>
    <thetext>Created attachment 153280
Patch

Daniel can you please test this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683243</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-07-31 10:22:58 -0700</bug_when>
    <thetext>Ping, Daniel?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683459</commentid>
    <comment_count>9</comment_count>
      <attachid>155632</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-07-31 14:08:28 -0700</bug_when>
    <thetext>Created attachment 155632
Patch

Rebased against recent ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684167</commentid>
    <comment_count>10</comment_count>
      <attachid>153280</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-01 07:01:49 -0700</bug_when>
    <thetext>Comment on attachment 153280
Patch

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

I think I&apos;ll probably need to talk with you directly about the last change in didEnd, but I have some comments about the rest.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:327
&gt; +    if (m_isEndReached) {
&gt; +        if (m_seeking)
&gt; +            return m_seekTime;
&gt; +        if (m_mediaDuration)
&gt; +            return m_mediaDuration;
&gt; +    }

What happens if m_mediaDuration is 0? What does that mean? Is that an error?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:363
&gt; +    LOG_VERBOSE(Media, &quot;Current state: %s, pending: %s&quot;, gst_element_state_get_name(currentState), gst_element_state_get_name(pending));
&gt; +    if (currentState &gt;= newState || pending &gt;= newState)
&gt; +        return true;

Is it really safe to compare the different GstStates (which, I presume, are enum values) with inequalities?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:367
&gt; +    GstStateChangeReturn ret = gst_element_set_state(m_playBin, newState);

ret -&gt; setStateResult?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:-430
&gt; -    if (m_seeking)
&gt; -        return m_seekTime;
&gt; -

Why this change?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:464
&gt; +    if (m_isEndReached &amp;&amp; !time &amp;&amp; !mediaElementLooping())
&gt; +        return;
&gt; +

A comment might be useful here explaining why you don&apos;t seek in this situation.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:467
&gt; +    if (!m_isEndReached &amp;&amp; (time == playbackPosition()))
&gt;          return;

Why the extra check here? Even if the end is reached, why should we allow seeking to a position that is the same as the current playback position?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1155
&gt; -        if (m_buffering &amp;&amp; state != GST_STATE_READY) {
&gt; +        if (m_buffering &amp;&amp; state &gt; GST_STATE_READY) {

I&apos;m still a little uneasy about inequality usage here.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1193
&gt; +        } else if (!m_isEndReached)
&gt;              m_paused = true;

It&apos;s a bit odd that pause() returns true when m_isReached is true, but m_paused is not true... I&apos;m not sure I understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684183</commentid>
    <comment_count>11</comment_count>
      <attachid>153280</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-08-01 07:40:29 -0700</bug_when>
    <thetext>Comment on attachment 153280
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:327
&gt;&gt; +    }
&gt; 
&gt; What happens if m_mediaDuration is 0? What does that mean? Is that an error?

It means there&apos;s no duration in TIME available, it&apos;s not a case or error though.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:363
&gt;&gt; +        return true;
&gt; 
&gt; Is it really safe to compare the different GstStates (which, I presume, are enum values) with inequalities?

Yes I think so. The GstState enum hasn&apos;t changed since the early gst 0.10 versions AFAIK. In gst 0.11/1.0 it hasn&apos;t changed either. This is one of the basic concepts of the framework.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:367
&gt;&gt; +    GstStateChangeReturn ret = gst_element_set_state(m_playBin, newState);
&gt; 
&gt; ret -&gt; setStateResult?

Ok I&apos;ll change that!

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:-430
&gt;&gt; -
&gt; 
&gt; Why this change?

Hum good question, I need to check this one.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:467
&gt;&gt;          return;
&gt; 
&gt; Why the extra check here? Even if the end is reached, why should we allow seeking to a position that is the same as the current playback position?

Ermm, good point! I guess this change can be removed. I&apos;ll check it again.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1193
&gt;&gt;              m_paused = true;
&gt; 
&gt; It&apos;s a bit odd that pause() returns true when m_isReached is true, but m_paused is not true... I&apos;m not sure I understand.

Right, maybe we can set m_paused on EOS if the media element is not looping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690666</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Drake">dsd</who>
    <bug_when>2012-08-08 13:28:30 -0700</bug_when>
    <thetext>Sorry for not responding earlier. I&apos;m less overloaded now so will be able to test this. But I guess it would be best to wait for a new version addressing the review comments first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695024</commentid>
    <comment_count>13</comment_count>
      <attachid>155632</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-08-14 08:55:43 -0700</bug_when>
    <thetext>Comment on attachment 155632
Patch

Pulling out of review, I started reworking this a bit but still blocked by a regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699392</commentid>
    <comment_count>14</comment_count>
      <attachid>159390</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-08-20 04:12:17 -0700</bug_when>
    <thetext>Created attachment 159390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700334</commentid>
    <comment_count>15</comment_count>
    <who name="Daniel Drake">dsd</who>
    <bug_when>2012-08-20 19:02:07 -0700</bug_when>
    <thetext>Thanks, this is looking better - the sound device gets closed at the end of playback. But there is a small issue:

1. Open the browser
2. Select an audio file
3. Let it play to the end - don&apos;t touch the playback controls
4. At the end of playback, the playback &quot;progress bar&quot; goes white-ish with the progress blob at the rightmost end, and the play/pause button shows the &quot;Play&quot; icon
5. Click play - the progress blob will jump back to the left side, and the normal progress bar colour will be displayed, but the play/pause button will still be in the &quot;Play&quot; icon state and no sound plays
6. Click play again, now the sound plays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700502</commentid>
    <comment_count>16</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-08-20 23:30:39 -0700</bug_when>
    <thetext>Thanks Daniel for the feedback on this. I&apos;ll have a look at the issue you found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700600</commentid>
    <comment_count>17</comment_count>
      <attachid>159648</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-08-21 04:04:49 -0700</bug_when>
    <thetext>Created attachment 159648
Patch

Update! Addressing the issue mentioned by Daniel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700898</commentid>
    <comment_count>18</comment_count>
    <who name="Daniel Drake">dsd</who>
    <bug_when>2012-08-21 10:38:37 -0700</bug_when>
    <thetext>Thanks, tested it and it&apos;s looking good, can&apos;t see any further issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700934</commentid>
    <comment_count>19</comment_count>
      <attachid>159648</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-21 11:07:34 -0700</bug_when>
    <thetext>Comment on attachment 159648
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:337
&gt; +    LOG_MEDIA_MESSAGE(&quot;EOS: %d, seeking: %d, seekTime: %f, duration: %f&quot;, m_isEndReached, m_seeking, m_seekTime, m_mediaDuration);

This doesn&apos;t seem like the sort of message we should keep, since it lacks any sort of informative aspect beyond information dumping. Perhaps remove it to avoid noise in the log?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:343
&gt; +    if (m_isEndReached) {
&gt; +        if (m_seeking)
&gt; +            return m_seekTime;
&gt; +        if (m_mediaDuration)
&gt; +            return m_mediaDuration;
&gt; +    }

I think this change deserves a comment. Something like, &quot;Position queries don&apos;t work on a null pipeline and when we&apos;re at the end of the stream the pipipeline is null.&quot;

This code will fall back to position queries even if the pipeline is in a null state if !m_seeking and !m_mediaDuration. Is that okay? Perhaps you should just return a &quot;safe&quot; value if position queries aren&apos;t allowed on null piplines.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:377
&gt; +    LOG_MEDIA_MESSAGE(&quot;Current state: %s, pending: %s&quot;, gst_element_state_get_name(currentState), gst_element_state_get_name(pending));

Ditto with this comment.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:489
&gt; +    if (m_isEndReached &amp;&amp; !m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerLoop()) {
&gt; +        LOG_MEDIA_MESSAGE(&quot;Seek on EOS, pre-rolling pipeline again.&quot;);
&gt; +        gst_element_set_state(m_playBin, GST_STATE_PAUSED);
&gt; +    }
&gt; +
&gt; +    // Avoid useless seeking.
&gt; +    if (time == playbackPosition())
&gt;          return;

If time == playbackPosition() won&apos;t this re-open the audio device and then do nothing?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:522
&gt; +        LOG_MEDIA_MESSAGE(&quot;Paused on EOS&quot;);

Maybe explain what you&apos;re doing with it? For instance: &quot;Ignoring pause at EOS.&quot;

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1436
&gt; +    if ((now &gt; 0 &amp;&amp; m_playbackRate &lt; 0) || (now &lt;= duration() &amp;&amp; m_playbackRate &gt; 0)) {

What does it mean when didEnd happens when (now &lt;= duration() &amp;&amp; m_playbackRate &gt; 0)?

Perhaps this code should be self documentating:
bool playingInReverse = now &gt; 0 &amp;&amp; m_playbackRate &lt; 0;
bool ??? = now &lt;= duration() &amp;&amp; m_playbackRate &gt; 0;
if (playingInReverse || ???) {
    ...
}

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1443
&gt; +        float previousDuration = m_mediaDuration;
&gt; +        if (now != m_mediaDuration) {
&gt; +            m_mediaDurationKnown = true;
&gt; +            m_mediaDuration = now;
&gt; +        }
&gt; +        if (m_mediaDuration != previousDuration)
&gt; +            m_player-&gt;durationChanged();

I&apos;ve tried to run through this several times in my head and each time that I do it seems that both if statements are the same here. Couldn&apos;t this just be written as:

if (m_mediaDuration != now) {
    m_mediaDurationKnown = true;
    m_mediaDuration = now;
    m_player-&gt;durationChanged();
}

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1451
&gt; +    if (!m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerLoop())
&gt; +        gst_element_set_state(m_playBin, GST_STATE_NULL);

If we are looping, is it still correct to set m_paused to true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702794</commentid>
    <comment_count>20</comment_count>
      <attachid>159648</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-08-23 01:12:49 -0700</bug_when>
    <thetext>Comment on attachment 159648
Patch

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

Thanks for the detailed review, I&apos;ll update the patch.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:337
&gt;&gt; +    LOG_MEDIA_MESSAGE(&quot;EOS: %d, seeking: %d, seekTime: %f, duration: %f&quot;, m_isEndReached, m_seeking, m_seekTime, m_mediaDuration);
&gt; 
&gt; This doesn&apos;t seem like the sort of message we should keep, since it lacks any sort of informative aspect beyond information dumping. Perhaps remove it to avoid noise in the log?

Ah yes I forgot to remove it, sorry.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:343
&gt;&gt; +    }
&gt; 
&gt; I think this change deserves a comment. Something like, &quot;Position queries don&apos;t work on a null pipeline and when we&apos;re at the end of the stream the pipipeline is null.&quot;
&gt; 
&gt; This code will fall back to position queries even if the pipeline is in a null state if !m_seeking and !m_mediaDuration. Is that okay? Perhaps you should just return a &quot;safe&quot; value if position queries aren&apos;t allowed on null piplines.

Ok for the comment.
About the fall back value, supposedly the duration is cached on EOS so it should be returned, I&apos;ll double-check this... About position queries on a NULL-state pipeline, the sinks handle this gracefully already (at least the ones based on gstbasesink).

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:377
&gt;&gt; +    LOG_MEDIA_MESSAGE(&quot;Current state: %s, pending: %s&quot;, gst_element_state_get_name(currentState), gst_element_state_get_name(pending));
&gt; 
&gt; Ditto with this comment.

I think this one is still useful, actually. It allows to see the pipeline state before doing the actual change.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:489
&gt;&gt;          return;
&gt; 
&gt; If time == playbackPosition() won&apos;t this re-open the audio device and then do nothing?

Right, I&apos;ll update this part of the patch!

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:522
&gt;&gt; +        LOG_MEDIA_MESSAGE(&quot;Paused on EOS&quot;);
&gt; 
&gt; Maybe explain what you&apos;re doing with it? For instance: &quot;Ignoring pause at EOS.&quot;

Yes, good idea!

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1436
&gt;&gt; +    if ((now &gt; 0 &amp;&amp; m_playbackRate &lt; 0) || (now &lt;= duration() &amp;&amp; m_playbackRate &gt; 0)) {
&gt; 
&gt; What does it mean when didEnd happens when (now &lt;= duration() &amp;&amp; m_playbackRate &gt; 0)?
&gt; 
&gt; Perhaps this code should be self documentating:
&gt; bool playingInReverse = now &gt; 0 &amp;&amp; m_playbackRate &lt; 0;
&gt; bool ??? = now &lt;= duration() &amp;&amp; m_playbackRate &gt; 0;
&gt; if (playingInReverse || ???) {
&gt;     ...
&gt; }

Actually maybe this test can be simplified to now &gt; 0 &amp;&amp; now &lt;= duration(), eg. position is valid.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1443
&gt;&gt; +            m_player-&gt;durationChanged();
&gt; 
&gt; I&apos;ve tried to run through this several times in my head and each time that I do it seems that both if statements are the same here. Couldn&apos;t this just be written as:
&gt; 
&gt; if (m_mediaDuration != now) {
&gt;     m_mediaDurationKnown = true;
&gt;     m_mediaDuration = now;
&gt;     m_player-&gt;durationChanged();
&gt; }

Yes! This simplification is indeed valid! :)

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1451
&gt;&gt; +        gst_element_set_state(m_playBin, GST_STATE_NULL);
&gt; 
&gt; If we are looping, is it still correct to set m_paused to true?

Hum. Likely not :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702838</commentid>
    <comment_count>21</comment_count>
      <attachid>160122</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-08-23 03:03:51 -0700</bug_when>
    <thetext>Created attachment 160122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703021</commentid>
    <comment_count>22</comment_count>
      <attachid>160122</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-23 08:35:20 -0700</bug_when>
    <thetext>Comment on attachment 160122
Patch

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

This patch looks good to me, though I think that someone like Eric should look at the platform-independent changes.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:343
&gt; +        // Position queries don&apos;t work on a null pipeline and when we&apos;re at the end of the stream the pipeline is null.
&gt; +        if (m_seeking)
&gt; +            return m_seekTime;
&gt; +        if (m_mediaDuration)
&gt; +            return m_mediaDuration;
&gt; +    }

Hrm. I guess if the sync can handle position queries gracefully, then the comment is inaccurate?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:497
&gt; +    bool prerollRequired = m_isEndReached &amp;&amp; !m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerLoop();
&gt; +    if (prerollRequired) {
&gt; +        LOG_MEDIA_MESSAGE(&quot;Seek on EOS, pre-rolling pipeline again.&quot;);
&gt; +        gst_element_set_state(m_playBin, GST_STATE_PAUSED);
&gt; +    }
&gt; +
&gt; +    // Avoid useless seeking.
&gt; +    if (time == playbackPosition()) {
&gt; +        if (prerollRequired)
&gt; +            gst_element_set_state(m_playBin, GST_STATE_NULL);
&gt; +        return;
&gt; +    }
&gt; +

Is it important to go from PAUSED back to NULL for no-op seeks here? If not, why can&apos;t you just do:

// Avoid useless seeking.
if (time == playbackPosition())
    return;


if (m_isEndReached &amp;&amp; !m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerLoop()) {
    LOG_MEDIA_MESSAGE(&quot;Seek on EOS, pre-rolling pipeline again.&quot;);
    gst_element_set_state(m_playBin, GST_STATE_PAUSED);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707239</commentid>
    <comment_count>23</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-08-29 02:35:56 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 160122 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=160122&amp;action=review
&gt; 
&gt; This patch looks good to me, though I think that someone like Eric should look at the platform-independent changes.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:343
&gt; &gt; +        // Position queries don&apos;t work on a null pipeline and when we&apos;re at the end of the stream the pipeline is null.
&gt; &gt; +        if (m_seeking)
&gt; &gt; +            return m_seekTime;
&gt; &gt; +        if (m_mediaDuration)
&gt; &gt; +            return m_mediaDuration;
&gt; &gt; +    }
&gt; 
&gt; Hrm. I guess if the sync can handle position queries gracefully, then the comment is inaccurate?
&gt; 

Yes... I&apos;ll elaborate the comment a bit more.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:497
&gt; &gt; +    bool prerollRequired = m_isEndReached &amp;&amp; !m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerLoop();
&gt; &gt; +    if (prerollRequired) {
&gt; &gt; +        LOG_MEDIA_MESSAGE(&quot;Seek on EOS, pre-rolling pipeline again.&quot;);
&gt; &gt; +        gst_element_set_state(m_playBin, GST_STATE_PAUSED);
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    // Avoid useless seeking.
&gt; &gt; +    if (time == playbackPosition()) {
&gt; &gt; +        if (prerollRequired)
&gt; &gt; +            gst_element_set_state(m_playBin, GST_STATE_NULL);
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +
&gt; 
&gt; Is it important to go from PAUSED back to NULL for no-op seeks here? If not, why can&apos;t you just do:
&gt; 
&gt; // Avoid useless seeking.
&gt; if (time == playbackPosition())
&gt;     return;
&gt; 
&gt; 
&gt; if (m_isEndReached &amp;&amp; !m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerLoop()) {
&gt;     LOG_MEDIA_MESSAGE(&quot;Seek on EOS, pre-rolling pipeline again.&quot;);
&gt;     gst_element_set_state(m_playBin, GST_STATE_PAUSED);
&gt; }


Well, now that I think about again, if pre-roll is required it means EOS was reached so we should use currentTime() directly instead of playbackPosition(). currentTime() gracefully handles the EOS case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707266</commentid>
    <comment_count>24</comment_count>
      <attachid>161170</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-08-29 03:21:57 -0700</bug_when>
    <thetext>Created attachment 161170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711140</commentid>
    <comment_count>25</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-09-04 08:28:49 -0700</bug_when>
    <thetext>Hi Eric,

Can you please have a look at the Media element changes of this patch?

I needed a method in MediaPlayerClient to know if the player is looping over a media.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717156</commentid>
    <comment_count>26</comment_count>
    <who name="Daniel Drake">dsd</who>
    <bug_when>2012-09-11 07:43:51 -0700</bug_when>
    <thetext>Trying to test the latest patch, it doesn&apos;t apply to webkitgtk-1.9.91 and the differences don&apos;t seem trivial. Which version is the patch based on?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717789</commentid>
    <comment_count>27</comment_count>
      <attachid>161170</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-11 18:21:49 -0700</bug_when>
    <thetext>Comment on attachment 161170
Patch

No response from Eric, so I&apos;m guessing he has no strong objections. I&apos;ll r+ this since it&apos;s quite an important fix for our stable branch. Please fix the issues we discussed before landing. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717950</commentid>
    <comment_count>28</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-09-11 23:22:52 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Trying to test the latest patch, it doesn&apos;t apply to webkitgtk-1.9.91 and the differences don&apos;t seem trivial. Which version is the patch based on?

It&apos;s based on ToT (as usual) as of about 2 weeks ago.

Thanks Martin for the r+, I&apos;ll land this patch later today!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718251</commentid>
    <comment_count>29</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-09-12 05:33:31 -0700</bug_when>
    <thetext>Committed r128298: &lt;http://trac.webkit.org/changeset/128298&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719753</commentid>
    <comment_count>30</comment_count>
      <attachid>163927</attachid>
    <who name="Daniel Drake">dsd</who>
    <bug_when>2012-09-13 12:01:36 -0700</bug_when>
    <thetext>Created attachment 163927
Backport for 1.9 branch

Thanks so much Philippe - retested the final version, seems to be working well.

Here&apos;s a backport for the 1.9 branch which I&apos;ll propose for inclusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719784</commentid>
    <comment_count>31</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-09-13 12:22:31 -0700</bug_when>
    <thetext>Thanks Daniel, this was already cherry-picked for next week&apos;s release though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719795</commentid>
    <comment_count>32</comment_count>
    <who name="Daniel Drake">dsd</who>
    <bug_when>2012-09-13 12:32:26 -0700</bug_when>
    <thetext>Great news - you&apos;re one step ahead. Thanks!!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153280</attachid>
            <date>2012-07-19 09:49:09 -0700</date>
            <delta_ts>2012-08-01 07:40:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>9908</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBjNWNkMjU4NjY0OGNlNTUyNDhmOTQ3YmNmYjc4MzhhMWQ2ZGI3ZTE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDE5IEp1bCAyMDEyIDE4OjQ4OjQ0ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDM0ICsrKysrKysrCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAgICAgICB8ICAgODEgKysrKysrKysrKysrKystLS0tLS0KIC4uLi9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggICAgICAgIHwgICAgMiArCiAzIGZpbGVz
IGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBjMWM3YWJjLi5lZDFjZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTItMDct
MTkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
U3RyZWFtZXJdIEF1ZGlvIGRldmljZSBub3QgY2xvc2VkIGFmdGVyIHBsYXlpbmcgc291bmQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MTIyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IHRoZSBHU3Ry
ZWFtZXIgcGlwZWxpbmUgdG8gTlVMTCBpbnN0ZWFkIG9mIFBBVVNFRCBvbiBFT1MuIFRoaXMKKyAg
ICAgICAgYWxsb3dzIHRoZSBhdWRpby1zaW5rIHRvIHJlbGVhc2UgaXRzIGNvbm5lY3Rpb24gdG8g
dGhlIGF1ZGlvCisgICAgICAgIGRldmljZS4gVGhpcyBpcyBkb25lIG9ubHkgaWYgdGhlIE1lZGlh
IGVsZW1lbnQgaXMgbm90CisgICAgICAgIGxvb3BpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGxheWJhY2tQb3NpdGlv
bik6IFJlcG9ydAorICAgICAgICBzZWVrIHRpbWUgb3IgbWVkaWEgZHVyYXRpb24gaWYgRU9TIHdh
cyByZWFjaGVkLiBUaGVzZSBlYXJseQorICAgICAgICByZXR1cm5zIGFyZSBuZWVkZWQgYmVjYXVz
ZSB0aGUgcG9zaXRpb24gcXVlcnkgZG9lc24ndCB3b3JrIG9uIGEKKyAgICAgICAgTlVMTCBwaXBl
bGluZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hh
bmdlUGlwZWxpbmVTdGF0ZSk6CisgICAgICAgIFJlZmFjdG9yZWQgdG8gdXNlIGFuIGVhcmx5IHJl
dHVybi4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJl
cGFyZVRvUGxheSk6IFJlc2V0IHRoZQorICAgICAgICBzZWVraW5nIGZsYWcuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXkpOiBFeGVjdXRlIHBlbmRp
bmcgc2Vlay4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cGF1c2UpOiBEb24ndCBwYXVzZSBvbiBFT1MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2Vlayk6IERvbid0IHNlZWsgdG8gMCBpbgorICAgICAg
ICBub24tbG9vcGluZyBtb2RlLCB0aGlzIHdvdWxkbid0IHdvcmsgb24gYSBOVUxMIHBpcGVsaW5l
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZWQp
OiBGYWtlIHBhdXNlZCBzdGF0ZQorICAgICAgICBvbiBFT1MuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om1lZGlhRWxlbWVudExvb3BpbmcpOiBOZXcKKyAg
ICAgICAgc21hbGwgdXRpbGl0eSBtZXRob2QgdG8gY2hlY2sgaWYgdGhlIEhUTUxNZWRpYUVsZW1l
bnQgaXMgbG9vcGluZyBwbGF5YmFjay4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoK
KyAgICAgICAgKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcik6CisKIDIwMTItMDctMTkgIE1h
cmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
IE1IVE1MIGZpbGVzIG5vdCBiZWluZyBsb2FkZWQgZHVlIHRvIHJlcG9ydGVkIG1pbWUgdHlwZSBu
b3Qgc3VwcG9ydGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCmluZGV4IGZiYTgyNTIuLjU0ZGU0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
R1N0cmVhbWVyVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSW1hZ2VHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtMzE4LDYgKzMxOSwxMyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29tbWl0TG9hZCgpCiAKIGZsb2F0IE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cGxheWJhY2tQb3NpdGlvbigpIGNvbnN0CiB7CisgICAgaWYgKG1faXNF
bmRSZWFjaGVkKSB7CisgICAgICAgIGlmIChtX3NlZWtpbmcpCisgICAgICAgICAgICByZXR1cm4g
bV9zZWVrVGltZTsKKyAgICAgICAgaWYgKG1fbWVkaWFEdXJhdGlvbikKKyAgICAgICAgICAgIHJl
dHVybiBtX21lZGlhRHVyYXRpb247CisgICAgfQorCiAgICAgZmxvYXQgcmV0ID0gMC4wZjsKIAog
ICAgIEdzdFF1ZXJ5KiBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfcG9zaXRpb24oR1NUX0ZPUk1BVF9U
SU1FKTsKQEAgLTM1MCwxMyArMzU4LDE3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjaGFuZ2VQaXBlbGluZVN0YXRlKEdzdFN0YXRlIG5ld1N0YXRlKQogICAgIEdzdFN0YXRl
IHBlbmRpbmc7CiAKICAgICBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9wbGF5QmluLCAmY3VycmVu
dFN0YXRlLCAmcGVuZGluZywgMCk7Ci0gICAgaWYgKGN1cnJlbnRTdGF0ZSAhPSBuZXdTdGF0ZSAm
JiBwZW5kaW5nICE9IG5ld1N0YXRlKSB7Ci0gICAgICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHJl
dCA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIG5ld1N0YXRlKTsKLSAgICAgICAg
R3N0U3RhdGUgcGF1c2VkT3JQbGF5aW5nID0gbmV3U3RhdGUgPT0gR1NUX1NUQVRFX1BMQVlJTkcg
PyBHU1RfU1RBVEVfUEFVU0VEIDogR1NUX1NUQVRFX1BMQVlJTkc7Ci0gICAgICAgIGlmIChjdXJy
ZW50U3RhdGUgIT0gcGF1c2VkT3JQbGF5aW5nICYmIHJldCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZB
SUxVUkUpIHsKLSAgICAgICAgICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkVtcHR5KTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgIExPR19WRVJCT1NFKE1l
ZGlhLCAiQ3VycmVudCBzdGF0ZTogJXMsIHBlbmRpbmc6ICVzIiwgZ3N0X2VsZW1lbnRfc3RhdGVf
Z2V0X25hbWUoY3VycmVudFN0YXRlKSwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGlu
ZykpOworICAgIGlmIChjdXJyZW50U3RhdGUgPj0gbmV3U3RhdGUgfHwgcGVuZGluZyA+PSBuZXdT
dGF0ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUo
bV93ZWJraXRBdWRpb1NpbmsuZ2V0KCksIG5ld1N0YXRlKTsKKworICAgIEdzdFN0YXRlQ2hhbmdl
UmV0dXJuIHJldCA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIG5ld1N0YXRlKTsK
KyAgICBHc3RTdGF0ZSBwYXVzZWRPclBsYXlpbmcgPSBuZXdTdGF0ZSA9PSBHU1RfU1RBVEVfUExB
WUlORyA/IEdTVF9TVEFURV9QQVVTRUQgOiBHU1RfU1RBVEVfUExBWUlORzsKKyAgICBpZiAoY3Vy
cmVudFN0YXRlICE9IHBhdXNlZE9yUGxheWluZyAmJiByZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9G
QUlMVVJFKSB7CisgICAgICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkVtcHR5KTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM2NCw2
ICszNzYsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxp
bmVTdGF0ZShHc3RTdGF0ZSBuZXdTdGF0ZSkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpwcmVwYXJlVG9QbGF5KCkKIHsKICAgICBtX2lzRW5kUmVhY2hlZCA9IGZhbHNlOworICAg
IG1fc2Vla2luZyA9IGZhbHNlOwogCiAgICAgaWYgKG1fZGVsYXlpbmdMb2FkKSB7CiAgICAgICAg
IG1fZGVsYXlpbmdMb2FkID0gZmFsc2U7CkBAIC0zNzMsMTMgKzM4NiwyMCBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJlcGFyZVRvUGxheSgpCiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF5KCkKIHsKLSAgICBpZiAoY2hhbmdlUGlwZWxpbmVTdGF0
ZShHU1RfU1RBVEVfUExBWUlORykpCisgICAgaWYgKGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NU
QVRFX1BMQVlJTkcpKSB7CisgICAgICAgIGlmIChtX2lzRW5kUmVhY2hlZCAmJiBtX3NlZWtpbmcp
IHsKKyAgICAgICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiUGVuZGluZyBzZWVrIHRvICVmIGF0
IHJhdGUgJWYiLCBtX3NlZWtUaW1lLCBtX3BsYXliYWNrUmF0ZSk7CisgICAgICAgICAgICBzZWVr
KG1fc2Vla1RpbWUpOworICAgICAgICB9CisKKyAgICAgICAgbV9pc0VuZFJlYWNoZWQgPSBmYWxz
ZTsKICAgICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJQbGF5Iik7CisgICAgfQogfQogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGF1c2UoKQogewotICAgIGlmIChjaGFuZ2VQ
aXBlbGluZVN0YXRlKEdTVF9TVEFURV9QQVVTRUQpKQorICAgIGlmICghbV9pc0VuZFJlYWNoZWQg
JiYgY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUEFVU0VEKSkKICAgICAgICAgTE9HX1ZF
UkJPU0UoTWVkaWEsICJQYXVzZSIpOwogfQogCkBAIC00MjUsOSArNDQ1LDYgQEAgZmxvYXQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjdXJyZW50VGltZSgpIGNvbnN0CiAgICAgaWYgKG1f
ZXJyb3JPY2N1cmVkKQogICAgICAgICByZXR1cm4gMC4wZjsKIAotICAgIGlmIChtX3NlZWtpbmcp
Ci0gICAgICAgIHJldHVybiBtX3NlZWtUaW1lOwotCiAgICAgLy8gV29ya2Fyb3VuZCBmb3IKICAg
ICAvLyBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM5OTQxIElu
IEdTdHJlYW1lcgogICAgIC8vIDAuMTAuMzUgYmFzZXNpbmsgcmVwb3J0cyB3cm9uZyBkdXJhdGlv
biBpbiBjYXNlIG9mIEVPUyBhbmQKQEAgLTQ0Miw4ICs0NTksMTEgQEAgZmxvYXQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpjdXJyZW50VGltZSgpIGNvbnN0CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKGZsb2F0IHRpbWUpCiB7CisgICAgaWYgKG1faXNFbmRS
ZWFjaGVkICYmICF0aW1lICYmICFtZWRpYUVsZW1lbnRMb29waW5nKCkpCisgICAgICAgIHJldHVy
bjsKKwogICAgIC8vIEF2b2lkIHVzZWxlc3Mgc2Vla2luZy4KLSAgICBpZiAodGltZSA9PSBwbGF5
YmFja1Bvc2l0aW9uKCkpCisgICAgaWYgKCFtX2lzRW5kUmVhY2hlZCAmJiAodGltZSA9PSBwbGF5
YmFja1Bvc2l0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcGxheUJpbikK
QEAgLTQ3OSw2ICs0OTksOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2Vl
ayhmbG9hdCB0aW1lKQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGF1c2Vk
KCkgY29uc3QKIHsKKyAgICBpZiAobV9pc0VuZFJlYWNoZWQpCisgICAgICAgIHJldHVybiB0cnVl
OworCiAgICAgR3N0U3RhdGUgc3RhdGU7CiAgICAgZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGxh
eUJpbiwgJnN0YXRlLCAwLCAwKTsKICAgICByZXR1cm4gc3RhdGUgPT0gR1NUX1NUQVRFX1BBVVNF
RDsKQEAgLTkwMyw2ICs5MjYsMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmZpbGxUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW0KICAgICB1cGRh
dGVTdGF0ZXMoKTsKIH0KIAorYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om1lZGlh
RWxlbWVudExvb3BpbmcoKSBjb25zdAoreworICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBlbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG1fcGxheWVyLT5tZWRpYVBsYXll
ckNsaWVudCgpKSkKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmxvb3AoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bWF4VGltZVNl
ZWthYmxlKCkgY29uc3QKIHsKICAgICBpZiAobV9lcnJvck9jY3VyZWQpCkBAIC0xMTEyLDggKzEx
NDIsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKCkK
ICAgICAgICAgICAgIC8vIENhY2hlIHRoZSBkdXJhdGlvbiB3aXRob3V0IGVtaXRpbmcgdGhlIGR1
cmF0aW9uY2hhbmdlCiAgICAgICAgICAgICAvLyBldmVudCBiZWNhdXNlIGl0J3MgdGFrZW4gY2Fy
ZSBvZiBieSB0aGUgbWVkaWEgZWxlbWVudAogICAgICAgICAgICAgLy8gaW4gdGhpcyBwcmVjaXNl
IGNhc2UuCi0gICAgICAgICAgICBjYWNoZUR1cmF0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
bWF4VGltZUxvYWRlZCgpID09IGR1cmF0aW9uKCkpIHsKKyAgICAgICAgICAgIGlmICghbV9pc0Vu
ZFJlYWNoZWQpCisgICAgICAgICAgICAgICAgY2FjaGVEdXJhdGlvbigpOworICAgICAgICB9IGVs
c2UgaWYgKChzdGF0ZSA9PSBHU1RfU1RBVEVfTlVMTCkgfHwgKG1heFRpbWVMb2FkZWQoKSA9PSBk
dXJhdGlvbigpKSkgewogICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6
TG9hZGVkOwogICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVFbm91
Z2hEYXRhOwogICAgICAgICB9IGVsc2UgewpAQCAtMTEyMSw3ICsxMTUyLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICBtX25l
dHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKG1fYnVmZmVyaW5nICYmIHN0YXRlICE9IEdTVF9TVEFURV9SRUFEWSkgeworICAgICAgICBp
ZiAobV9idWZmZXJpbmcgJiYgc3RhdGUgPiBHU1RfU1RBVEVfUkVBRFkpIHsKICAgICAgICAgICAg
IG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVudERhdGE7CiAgICAgICAgICAg
ICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOwogICAgICAgICB9CkBAIC0x
MTU4LDcgKzExODksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRl
U3RhdGVzKCkKIAogICAgICAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlC
aW4sIEdTVF9TVEFURV9QQVVTRUQpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKKyAg
ICAgICAgfSBlbHNlIGlmICghbV9pc0VuZFJlYWNoZWQpCiAgICAgICAgICAgICBtX3BhdXNlZCA9
IHRydWU7CiAKICAgICAgICAgLy8gSXMgb24tZGlzayBidWZmZXJpbmcgaW4gcHJvZ3Jlc3M/CkBA
IC0xMzY2LDE1ICsxMzk3LDIxIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpk
aWRFbmQoKQogICAgIC8vIHJldmVyc2UgcGxheWJhY2suIFNvIHRvIG5vdCBjb25mdXNlIHRoZSBI
VE1MTWVkaWFFbGVtZW50LCB3ZQogICAgIC8vIHN5bmNocm9uaXplIHBvc2l0aW9uIGFuZCBkdXJh
dGlvbiB2YWx1ZXMuCiAgICAgZmxvYXQgbm93ID0gY3VycmVudFRpbWUoKTsKLSAgICBpZiAobm93
ID4gMCAmJiBtX3BsYXliYWNrUmF0ZSA8IDApIHsKLSAgICAgICAgbV9tZWRpYUR1cmF0aW9uID0g
bm93OwotICAgICAgICBtX21lZGlhRHVyYXRpb25Lbm93biA9IHRydWU7Ci0gICAgICAgIG1fcGxh
eWVyLT5kdXJhdGlvbkNoYW5nZWQoKTsKKyAgICBpZiAoKG5vdyA+IDAgJiYgbV9wbGF5YmFja1Jh
dGUgPCAwKSB8fCAobm93IDw9IGR1cmF0aW9uKCkgJiYgbV9wbGF5YmFja1JhdGUgPiAwKSkgewor
ICAgICAgICBmbG9hdCBwcmV2aW91c0R1cmF0aW9uID0gbV9tZWRpYUR1cmF0aW9uOworICAgICAg
ICBpZiAobm93ICE9IG1fbWVkaWFEdXJhdGlvbikgeworICAgICAgICAgICAgbV9tZWRpYUR1cmF0
aW9uS25vd24gPSB0cnVlOworICAgICAgICAgICAgbV9tZWRpYUR1cmF0aW9uID0gbm93OworICAg
ICAgICB9CisgICAgICAgIGlmIChtX21lZGlhRHVyYXRpb24gIT0gcHJldmlvdXNEdXJhdGlvbikK
KyAgICAgICAgICAgIG1fcGxheWVyLT5kdXJhdGlvbkNoYW5nZWQoKTsKICAgICB9CiAKICAgICBt
X2lzRW5kUmVhY2hlZCA9IHRydWU7Ci0KICAgICB0aW1lQ2hhbmdlZCgpOworCisgICAgaWYgKCFt
ZWRpYUVsZW1lbnRMb29waW5nKCkpCisgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3Bs
YXlCaW4sIEdTVF9TVEFURV9OVUxMKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmNhY2hlRHVyYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5oCmluZGV4IDllMjc3Y2MuLmNiYWRkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTE1MCw2ICsxNTAsOCBAQCBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlIHsKIAogICAgICAgICAgICAgdm9pZCBwcm9jZXNzQnVmZmVyaW5nU3RhdHMoR3N0TWVz
c2FnZSopOwogCisgICAgICAgICAgICBib29sIG1lZGlhRWxlbWVudExvb3BpbmcoKSBjb25zdDsK
KwogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyOwog
ICAgICAgICAgICAgR3N0RWxlbWVudCogbV9wbGF5QmluOwotLSAKMS43LjEwLjQ=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155632</attachid>
            <date>2012-07-31 14:08:28 -0700</date>
            <delta_ts>2012-08-20 04:12:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>9957</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBiMzU0ZGNiY2Q2YzY5MzhkMWVlY2Y1MjllY2NlNzRmMjI0N2U5NDMwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDMxIEp1bCAyMDEyIDIzOjA3OjQwICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDM0ICsrKysrKysrCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAgICAgICB8ICAgODEgKysrKysrKysrKysrKystLS0tLS0KIC4uLi9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggICAgICAgIHwgICAgMiArCiAzIGZpbGVz
IGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA0N2Q2OTc1Li40ZTk0NzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTItMDct
MzEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
U3RyZWFtZXJdIEF1ZGlvIGRldmljZSBub3QgY2xvc2VkIGFmdGVyIHBsYXlpbmcgc291bmQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MTIyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IHRoZSBHU3Ry
ZWFtZXIgcGlwZWxpbmUgdG8gTlVMTCBpbnN0ZWFkIG9mIFBBVVNFRCBvbiBFT1MuIFRoaXMKKyAg
ICAgICAgYWxsb3dzIHRoZSBhdWRpby1zaW5rIHRvIHJlbGVhc2UgaXRzIGNvbm5lY3Rpb24gdG8g
dGhlIGF1ZGlvCisgICAgICAgIGRldmljZS4gVGhpcyBpcyBkb25lIG9ubHkgaWYgdGhlIE1lZGlh
IGVsZW1lbnQgaXMgbm90CisgICAgICAgIGxvb3BpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGxheWJhY2tQb3NpdGlv
bik6IFJlcG9ydAorICAgICAgICBzZWVrIHRpbWUgb3IgbWVkaWEgZHVyYXRpb24gaWYgRU9TIHdh
cyByZWFjaGVkLiBUaGVzZSBlYXJseQorICAgICAgICByZXR1cm5zIGFyZSBuZWVkZWQgYmVjYXVz
ZSB0aGUgcG9zaXRpb24gcXVlcnkgZG9lc24ndCB3b3JrIG9uIGEKKyAgICAgICAgTlVMTCBwaXBl
bGluZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hh
bmdlUGlwZWxpbmVTdGF0ZSk6CisgICAgICAgIFJlZmFjdG9yZWQgdG8gdXNlIGFuIGVhcmx5IHJl
dHVybi4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJl
cGFyZVRvUGxheSk6IFJlc2V0IHRoZQorICAgICAgICBzZWVraW5nIGZsYWcuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXkpOiBFeGVjdXRlIHBlbmRp
bmcgc2Vlay4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cGF1c2UpOiBEb24ndCBwYXVzZSBvbiBFT1MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2Vlayk6IERvbid0IHNlZWsgdG8gMCBpbgorICAgICAg
ICBub24tbG9vcGluZyBtb2RlLCB0aGlzIHdvdWxkbid0IHdvcmsgb24gYSBOVUxMIHBpcGVsaW5l
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZWQp
OiBGYWtlIHBhdXNlZCBzdGF0ZQorICAgICAgICBvbiBFT1MuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om1lZGlhRWxlbWVudExvb3BpbmcpOiBOZXcKKyAg
ICAgICAgc21hbGwgdXRpbGl0eSBtZXRob2QgdG8gY2hlY2sgaWYgdGhlIEhUTUxNZWRpYUVsZW1l
bnQgaXMgbG9vcGluZyBwbGF5YmFjay4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoK
KyAgICAgICAgKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcik6CisKIDIwMTItMDctMDcgIFBo
aWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFt
ZXJdIExpdmUgc3RyZWFtIHN1cHBvcnQgaXMgd2VhawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxOTNmNjY1Li5mNzYyYzc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIkdTdHJlYW1lclZlcnNpb25pbmcuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSAiSFRN
TE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAi
SW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTMyMSw2ICszMjIs
MTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvbW1pdExvYWQoKQogCiBm
bG9hdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24oKSBjb25z
dAogeworICAgIGlmIChtX2lzRW5kUmVhY2hlZCkgeworICAgICAgICBpZiAobV9zZWVraW5nKQor
ICAgICAgICAgICAgcmV0dXJuIG1fc2Vla1RpbWU7CisgICAgICAgIGlmIChtX21lZGlhRHVyYXRp
b24pCisgICAgICAgICAgICByZXR1cm4gbV9tZWRpYUR1cmF0aW9uOworICAgIH0KKwogICAgIGZs
b2F0IHJldCA9IDAuMGY7CiAKICAgICBHc3RRdWVyeSogcXVlcnkgPSBnc3RfcXVlcnlfbmV3X3Bv
c2l0aW9uKEdTVF9GT1JNQVRfVElNRSk7CkBAIC0zNTMsMTMgKzM2MSwxNyBAQCBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxpbmVTdGF0ZShHc3RTdGF0ZSBuZXdT
dGF0ZSkKICAgICBHc3RTdGF0ZSBwZW5kaW5nOwogCiAgICAgZ3N0X2VsZW1lbnRfZ2V0X3N0YXRl
KG1fcGxheUJpbiwgJmN1cnJlbnRTdGF0ZSwgJnBlbmRpbmcsIDApOwotICAgIGlmIChjdXJyZW50
U3RhdGUgIT0gbmV3U3RhdGUgJiYgcGVuZGluZyAhPSBuZXdTdGF0ZSkgewotICAgICAgICBHc3RT
dGF0ZUNoYW5nZVJldHVybiByZXQgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBu
ZXdTdGF0ZSk7Ci0gICAgICAgIEdzdFN0YXRlIHBhdXNlZE9yUGxheWluZyA9IG5ld1N0YXRlID09
IEdTVF9TVEFURV9QTEFZSU5HID8gR1NUX1NUQVRFX1BBVVNFRCA6IEdTVF9TVEFURV9QTEFZSU5H
OwotICAgICAgICBpZiAoY3VycmVudFN0YXRlICE9IHBhdXNlZE9yUGxheWluZyAmJiByZXQgPT0g
R1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSB7Ci0gICAgICAgICAgICBsb2FkaW5nRmFpbGVkKE1l
ZGlhUGxheWVyOjpFbXB0eSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
KyAgICBMT0dfVkVSQk9TRShNZWRpYSwgIkN1cnJlbnQgc3RhdGU6ICVzLCBwZW5kaW5nOiAlcyIs
IGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKGN1cnJlbnRTdGF0ZSksIGdzdF9lbGVtZW50X3N0
YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKKyAgICBpZiAoY3VycmVudFN0YXRlID49IG5ld1N0YXRl
IHx8IHBlbmRpbmcgPj0gbmV3U3RhdGUpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgZ3N0
X2VsZW1lbnRfc2V0X3N0YXRlKG1fd2Via2l0QXVkaW9TaW5rLmdldCgpLCBuZXdTdGF0ZSk7CisK
KyAgICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9w
bGF5QmluLCBuZXdTdGF0ZSk7CisgICAgR3N0U3RhdGUgcGF1c2VkT3JQbGF5aW5nID0gbmV3U3Rh
dGUgPT0gR1NUX1NUQVRFX1BMQVlJTkcgPyBHU1RfU1RBVEVfUEFVU0VEIDogR1NUX1NUQVRFX1BM
QVlJTkc7CisgICAgaWYgKGN1cnJlbnRTdGF0ZSAhPSBwYXVzZWRPclBsYXlpbmcgJiYgcmV0ID09
IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgeworICAgICAgICBsb2FkaW5nRmFpbGVkKE1lZGlh
UGxheWVyOjpFbXB0eSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJu
IHRydWU7CiB9CkBAIC0zNjcsNiArMzc5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmNoYW5nZVBpcGVsaW5lU3RhdGUoR3N0U3RhdGUgbmV3U3RhdGUpCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJlcGFyZVRvUGxheSgpCiB7CiAgICAgbV9pc0VuZFJl
YWNoZWQgPSBmYWxzZTsKKyAgICBtX3NlZWtpbmcgPSBmYWxzZTsKIAogICAgIGlmIChtX2RlbGF5
aW5nTG9hZCkgewogICAgICAgICBtX2RlbGF5aW5nTG9hZCA9IGZhbHNlOwpAQCAtMzc2LDEzICsz
ODksMjAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByZXBhcmVUb1BsYXko
KQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGxheSgpCiB7Ci0gICAgaWYg
KGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BMQVlJTkcpKQorICAgIGlmIChjaGFuZ2VQ
aXBlbGluZVN0YXRlKEdTVF9TVEFURV9QTEFZSU5HKSkgeworICAgICAgICBpZiAobV9pc0VuZFJl
YWNoZWQgJiYgbV9zZWVraW5nKSB7CisgICAgICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIlBl
bmRpbmcgc2VlayB0byAlZiBhdCByYXRlICVmIiwgbV9zZWVrVGltZSwgbV9wbGF5YmFja1JhdGUp
OworICAgICAgICAgICAgc2VlayhtX3NlZWtUaW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIG1f
aXNFbmRSZWFjaGVkID0gZmFsc2U7CiAgICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiUGxheSIp
OworICAgIH0KIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhdXNlKCkK
IHsKLSAgICBpZiAoY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUEFVU0VEKSkKKyAgICBp
ZiAoIW1faXNFbmRSZWFjaGVkICYmIGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNF
RCkpCiAgICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiUGF1c2UiKTsKIH0KIApAQCAtNDI4LDkg
KzQ0OCw2IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3VycmVudFRpbWUo
KSBjb25zdAogICAgIGlmIChtX2Vycm9yT2NjdXJlZCkKICAgICAgICAgcmV0dXJuIDAuMGY7CiAK
LSAgICBpZiAobV9zZWVraW5nKQotICAgICAgICByZXR1cm4gbV9zZWVrVGltZTsKLQogICAgIC8v
IFdvcmthcm91bmQgZm9yCiAgICAgLy8gaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19i
dWcuY2dpP2lkPTYzOTk0MSBJbiBHU3RyZWFtZXIKICAgICAvLyAwLjEwLjM1IGJhc2VzaW5rIHJl
cG9ydHMgd3JvbmcgZHVyYXRpb24gaW4gY2FzZSBvZiBFT1MgYW5kCkBAIC00NDUsOCArNDYyLDEx
IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3VycmVudFRpbWUoKSBjb25z
dAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2VlayhmbG9hdCB0aW1lKQog
eworICAgIGlmIChtX2lzRW5kUmVhY2hlZCAmJiAhdGltZSAmJiAhbWVkaWFFbGVtZW50TG9vcGlu
ZygpKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBBdm9pZCB1c2VsZXNzIHNlZWtpbmcuCi0g
ICAgaWYgKHRpbWUgPT0gcGxheWJhY2tQb3NpdGlvbigpKQorICAgIGlmICghbV9pc0VuZFJlYWNo
ZWQgJiYgKHRpbWUgPT0gcGxheWJhY2tQb3NpdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFtX3BsYXlCaW4pCkBAIC00ODIsNiArNTAyLDkgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnNlZWsoZmxvYXQgdGltZSkKIAogYm9vbCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnBhdXNlZCgpIGNvbnN0CiB7CisgICAgaWYgKG1faXNFbmRSZWFjaGVkKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIEdzdFN0YXRlIHN0YXRlOwogICAgIGdzdF9lbGVt
ZW50X2dldF9zdGF0ZShtX3BsYXlCaW4sICZzdGF0ZSwgMCwgMCk7CiAgICAgcmV0dXJuIHN0YXRl
ID09IEdTVF9TVEFURV9QQVVTRUQ7CkBAIC05MDcsNiArOTMwLDEzIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpmaWxsVGltZXJGaXJlZChUaW1lcjxNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtCiAgICAgdXBkYXRlU3RhdGVzKCk7CiB9CiAKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjptZWRpYUVsZW1lbnRMb29waW5nKCkgY29uc3QKK3sKKyAgICBpZiAoSFRN
TE1lZGlhRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPiht
X3BsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKSkpCisgICAgICAgIHJldHVybiBlbGVtZW50LT5s
b29wKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6Om1heFRpbWVTZWVrYWJsZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZXJyb3JPY2N1
cmVkKQpAQCAtMTEyMiw4ICsxMTUyLDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICAvLyBDYWNoZSB0aGUgZHVyYXRpb24gd2l0
aG91dCBlbWl0aW5nIHRoZSBkdXJhdGlvbmNoYW5nZQogICAgICAgICAgICAgLy8gZXZlbnQgYmVj
YXVzZSBpdCdzIHRha2VuIGNhcmUgb2YgYnkgdGhlIG1lZGlhIGVsZW1lbnQKICAgICAgICAgICAg
IC8vIGluIHRoaXMgcHJlY2lzZSBjYXNlLgotICAgICAgICAgICAgY2FjaGVEdXJhdGlvbigpOwot
ICAgICAgICB9IGVsc2UgaWYgKG1heFRpbWVMb2FkZWQoKSA9PSBkdXJhdGlvbigpKSB7CisgICAg
ICAgICAgICBpZiAoIW1faXNFbmRSZWFjaGVkKQorICAgICAgICAgICAgICAgIGNhY2hlRHVyYXRp
b24oKTsKKyAgICAgICAgfSBlbHNlIGlmICgoc3RhdGUgPT0gR1NUX1NUQVRFX05VTEwpIHx8ICht
YXhUaW1lTG9hZGVkKCkgPT0gZHVyYXRpb24oKSkpIHsKICAgICAgICAgICAgIG1fbmV0d29ya1N0
YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZDsKICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTExMzEsNyAr
MTE2Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMo
KQogICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChtX2J1ZmZlcmluZyAmJiBzdGF0ZSAhPSBHU1RfU1RBVEVf
UkVBRFkpIHsKKyAgICAgICAgaWYgKG1fYnVmZmVyaW5nICYmIHN0YXRlID4gR1NUX1NUQVRFX1JF
QURZKSB7CiAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUN1cnJl
bnREYXRhOwogICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGlu
ZzsKICAgICAgICAgfQpAQCAtMTE2OCw3ICsxMTk5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAKICAgICAgICAgICAgICAgICBnc3RfZWxlbWVu
dF9zZXRfc3RhdGUobV9wbGF5QmluLCBHU1RfU1RBVEVfUEFVU0VEKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgfSBlbHNlCisgICAgICAgIH0gZWxzZSBpZiAoIW1faXNFbmRSZWFjaGVkKQogICAg
ICAgICAgICAgbV9wYXVzZWQgPSB0cnVlOwogCiAgICAgICAgIC8vIElzIG9uLWRpc2sgYnVmZmVy
aW5nIGluIHByb2dyZXNzPwpAQCAtMTM5MSwxNSArMTQyMiwyMSBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6ZGlkRW5kKCkKICAgICAvLyByZXZlcnNlIHBsYXliYWNrLiBTbyB0
byBub3QgY29uZnVzZSB0aGUgSFRNTE1lZGlhRWxlbWVudCwgd2UKICAgICAvLyBzeW5jaHJvbml6
ZSBwb3NpdGlvbiBhbmQgZHVyYXRpb24gdmFsdWVzLgogICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRU
aW1lKCk7Ci0gICAgaWYgKG5vdyA+IDAgJiYgbV9wbGF5YmFja1JhdGUgPCAwKSB7Ci0gICAgICAg
IG1fbWVkaWFEdXJhdGlvbiA9IG5vdzsKLSAgICAgICAgbV9tZWRpYUR1cmF0aW9uS25vd24gPSB0
cnVlOwotICAgICAgICBtX3BsYXllci0+ZHVyYXRpb25DaGFuZ2VkKCk7CisgICAgaWYgKChub3cg
PiAwICYmIG1fcGxheWJhY2tSYXRlIDwgMCkgfHwgKG5vdyA8PSBkdXJhdGlvbigpICYmIG1fcGxh
eWJhY2tSYXRlID4gMCkpIHsKKyAgICAgICAgZmxvYXQgcHJldmlvdXNEdXJhdGlvbiA9IG1fbWVk
aWFEdXJhdGlvbjsKKyAgICAgICAgaWYgKG5vdyAhPSBtX21lZGlhRHVyYXRpb24pIHsKKyAgICAg
ICAgICAgIG1fbWVkaWFEdXJhdGlvbktub3duID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fbWVkaWFE
dXJhdGlvbiA9IG5vdzsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9tZWRpYUR1cmF0aW9uICE9
IHByZXZpb3VzRHVyYXRpb24pCisgICAgICAgICAgICBtX3BsYXllci0+ZHVyYXRpb25DaGFuZ2Vk
KCk7CiAgICAgfQogCiAgICAgbV9pc0VuZFJlYWNoZWQgPSB0cnVlOwotCiAgICAgdGltZUNoYW5n
ZWQoKTsKKworICAgIGlmICghbWVkaWFFbGVtZW50TG9vcGluZygpKQorICAgICAgICBnc3RfZWxl
bWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBHU1RfU1RBVEVfTlVMTCk7CiB9CiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjYWNoZUR1cmF0aW9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBkMTRkMDA0Li44Y2I2YWRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0xNTUs
NiArMTU1LDggQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAgICAgICAgICB2aXJ0dWFsIFN0cmluZyBl
bmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuICJHU3RyZWFtZXIiOyB9CiAgICAgICAg
ICAgICBib29sIGlzTGl2ZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJlYW1pbmc7IH0K
IAorICAgICAgICAgICAgYm9vbCBtZWRpYUVsZW1lbnRMb29waW5nKCkgY29uc3Q7CisKICAgICAg
ICAgcHJpdmF0ZToKICAgICAgICAgICAgIE1lZGlhUGxheWVyKiBtX3BsYXllcjsKICAgICAgICAg
ICAgIEdzdEVsZW1lbnQqIG1fcGxheUJpbjsKLS0gCjEuNy4xMC40
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159390</attachid>
            <date>2012-08-20 04:12:17 -0700</date>
            <delta_ts>2012-08-21 04:04:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>10793</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA3N2FhNWUzNjhlMThiNDlhYTExYTA5ZGIyOGVlNmY3ZTlmMWY3NWIwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBNb24sIDIwIEF1ZyAyMDEyIDEyOjUzOjAzICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDQyICsrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwICAgICAgICAgICB8ICAgIDUgKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oICAgICB8ICAgIDEgKwogLi4uL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgIDc4ICsrKysrKysrKysrKysrKy0t
LS0tCiA1IGZpbGVzIGNoYW5nZWQsIDEwOSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggODQ1OGIzNC4uMWYwZWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1
IEBACisyMDEyLTA4LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1N0cmVhbWVyXSBBdWRpbyBkZXZpY2Ugbm90IGNsb3NlZCBhZnRlciBwbGF5
aW5nIHNvdW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTEyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNldCB0aGUgR1N0cmVhbWVyIHBpcGVsaW5lIHRvIE5VTEwgaW5zdGVhZCBvZiBQQVVTRUQgb24g
RU9TLiBUaGlzCisgICAgICAgIGFsbG93cyB0aGUgYXVkaW8tc2luayB0byByZWxlYXNlIGl0cyBj
b25uZWN0aW9uIHRvIHRoZSBhdWRpbworICAgICAgICBkZXZpY2UuIFRoaXMgaXMgZG9uZSBvbmx5
IGlmIHRoZSBNZWRpYSBlbGVtZW50IGlzIG5vdAorICAgICAgICBsb29waW5nLiBUbyBtYWtlIHRo
ZSBNZWRpYVBsYXllclByaXZhdGUgbGF5ZXIgYXdhcmUgb2YgdGhhdAorICAgICAgICBpbmZvcm1h
dGlvbiB0aGUgTWVkaWFQbGF5ZXJDbGllbnQgaW50ZXJmYWNlIHdhcyB1cGRhdGVkIHdpdGggYSBu
ZXcKKyAgICAgICAgbWV0aG9kIG1lZGlhUGxheWVyTG9vcCwgaW1wbGVtZW50ZWQgYnkgdGhlIEhU
TUxNZWRpYUVsZW1lbnQuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJMb29wKTogSW1w
bGVtZW50YXRpb24gb2YKKyAgICAgICAgTWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyTG9v
cCwgcHJveGllcyB0byA6Omxvb3AoKTsKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKyAgICAgICAgKEhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6
bWVkaWFQbGF5ZXJMb29wKTogTmV3IG1ldGhvZCBhbGxvd2luZworICAgICAgICB0aGUgTWVkaWFQ
bGF5ZXIgYW5kIGl0cyBiYWNrZW5kIHRvIGtub3cgaWYgYSBwbGF5YmFjayBsb29wIGlzCisgICAg
ICAgIHJlcXVlc3RlZCBieSB0aGUgY2xpZW50LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpw
bGF5YmFja1Bvc2l0aW9uKTogUmVwb3J0CisgICAgICAgIHNlZWsgdGltZSBvciBtZWRpYSBkdXJh
dGlvbiBpZiBFT1Mgd2FzIHJlYWNoZWQuIFRoZXNlIGVhcmx5CisgICAgICAgIHJldHVybnMgYXJl
IG5lZWRlZCBiZWNhdXNlIHRoZSBwb3NpdGlvbiBxdWVyeSBkb2Vzbid0IHdvcmsgb24gYQorICAg
ICAgICBOVUxMIHBpcGVsaW5lLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpjaGFuZ2VQaXBlbGluZVN0YXRlKToKKyAgICAgICAgUmVmYWN0b3JlZCB0byB1
c2UgYW4gZWFybHkgcmV0dXJuLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpwcmVwYXJlVG9QbGF5KTogUmVzZXQgdGhlCisgICAgICAgIHNlZWtpbmcgZmxh
Zy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGxheSk6
IEV4ZWN1dGUgcGVuZGluZyBzZWVrLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpwYXVzZSk6IERvbid0IHBhdXNlIG9uIEVPUy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2Vlayk6IERvbid0IHNlZWsgdG8gMCBp
bgorICAgICAgICBub24tbG9vcGluZyBtb2RlLCB0aGlzIHdvdWxkbid0IHdvcmsgb24gYSBOVUxM
IHBpcGVsaW5lLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpwYXVzZWQpOiBGYWtlIHBhdXNlZCBzdGF0ZQorICAgICAgICBvbiBFT1MuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om1lZGlhRWxlbWVudExvb3Bpbmcp
OiBOZXcKKyAgICAgICAgc21hbGwgdXRpbGl0eSBtZXRob2QgdG8gY2hlY2sgaWYgdGhlIEhUTUxN
ZWRpYUVsZW1lbnQgaXMgbG9vcGluZyBwbGF5YmFjay4KKwogMjAxMi0wOC0yMCAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBNb3ZlIFY4UHJveHk6
Om5ld0luc3RhbmNlKCkgdG8gVjhPYmplY3RDb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZmFkY2ZlNy4uZjA1ZWMxNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDM2Miw2ICs0MzYyLDExIEBAIE1l
ZGlhUGxheWVyQ2xpZW50OjpDT1JTTW9kZSBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNP
UlNNb2RlKCkgY29uc3QKICAgICByZXR1cm4gQW5vbnltb3VzOwogfQogCitib29sIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyTG9vcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGxvb3AoKTsK
K30KKwogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck5lZWRzU2l0ZVNwZWNpZmlj
SGFja3MoKSBjb25zdAogewogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCktPnNl
dHRpbmdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGRhMTAy
YTYuLmI3MGY3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00
MTgsNiArNDE4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclJl
ZmVycmVyKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJV
c2VyQWdlbnQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENPUlNNb2RlIG1lZGlhUGxh
eWVyQ09SU01vZGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5
ZXJMb29wKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJO
ZWVkc1NpdGVTcGVjaWZpY0hhY2tzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJp
bmcgbWVkaWFQbGF5ZXJEb2N1bWVudEhvc3QoKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGRlNjkyMjIuLmE3
OWI3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaApAQCAtMTg5LDYgKzE4OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRp
YVBsYXllclJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFs
IFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9
CiAgICAgdmlydHVhbCBDT1JTTW9kZSBtZWRpYVBsYXllckNPUlNNb2RlKCkgY29uc3QgeyByZXR1
cm4gVW5zcGVjaWZpZWQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJMb29wKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIGNsYXNzIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBl
Q2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKaW5kZXggYWRmNTU1Zi4uMDc2M2FkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTIxMSw2ICsyMTEsNyBAQCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciog
cGxheWVyKQogICAgICwgbV9zZWVrVGltZSgwKQogICAgICwgbV9jaGFuZ2luZ1JhdGUoZmFsc2Up
CiAgICAgLCBtX2VuZFRpbWUobnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpKQorICAg
ICwgbV9pc0VuZFJlYWNoZWQoZmFsc2UpCiAgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBsYXll
cjo6RW1wdHkpCiAgICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQog
ICAgICwgbV9pc1N0cmVhbWluZyhmYWxzZSkKQEAgLTMzMyw2ICszMzQsMTQgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvbW1pdExvYWQoKQogCiBmbG9hdCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24oKSBjb25zdAogeworICAgIExPR19N
RURJQV9NRVNTQUdFKCJFT1M6ICVkLCBzZWVraW5nOiAlZCwgc2Vla1RpbWU6ICVmLCBkdXJhdGlv
bjogJWYiLCBtX2lzRW5kUmVhY2hlZCwgbV9zZWVraW5nLCBtX3NlZWtUaW1lLCBtX21lZGlhRHVy
YXRpb24pOworICAgIGlmIChtX2lzRW5kUmVhY2hlZCkgeworICAgICAgICBpZiAobV9zZWVraW5n
KQorICAgICAgICAgICAgcmV0dXJuIG1fc2Vla1RpbWU7CisgICAgICAgIGlmIChtX21lZGlhRHVy
YXRpb24pCisgICAgICAgICAgICByZXR1cm4gbV9tZWRpYUR1cmF0aW9uOworICAgIH0KKwogICAg
IGZsb2F0IHJldCA9IDAuMGY7CiAKICAgICBHc3RRdWVyeSogcXVlcnkgPSBnc3RfcXVlcnlfbmV3
X3Bvc2l0aW9uKEdTVF9GT1JNQVRfVElNRSk7CkBAIC0zNjUsMTMgKzM3NCwxNSBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxpbmVTdGF0ZShHc3RTdGF0ZSBu
ZXdTdGF0ZSkKICAgICBHc3RTdGF0ZSBwZW5kaW5nOwogCiAgICAgZ3N0X2VsZW1lbnRfZ2V0X3N0
YXRlKG1fcGxheUJpbiwgJmN1cnJlbnRTdGF0ZSwgJnBlbmRpbmcsIDApOwotICAgIGlmIChjdXJy
ZW50U3RhdGUgIT0gbmV3U3RhdGUgJiYgcGVuZGluZyAhPSBuZXdTdGF0ZSkgewotICAgICAgICBH
c3RTdGF0ZUNoYW5nZVJldHVybiByZXQgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5Qmlu
LCBuZXdTdGF0ZSk7Ci0gICAgICAgIEdzdFN0YXRlIHBhdXNlZE9yUGxheWluZyA9IG5ld1N0YXRl
ID09IEdTVF9TVEFURV9QTEFZSU5HID8gR1NUX1NUQVRFX1BBVVNFRCA6IEdTVF9TVEFURV9QTEFZ
SU5HOwotICAgICAgICBpZiAoY3VycmVudFN0YXRlICE9IHBhdXNlZE9yUGxheWluZyAmJiByZXQg
PT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSB7Ci0gICAgICAgICAgICBsb2FkaW5nRmFpbGVk
KE1lZGlhUGxheWVyOjpFbXB0eSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KKyAgICBMT0dfTUVESUFfTUVTU0FHRSgiQ3VycmVudCBzdGF0ZTogJXMsIHBlbmRpbmc6ICVz
IiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoY3VycmVudFN0YXRlKSwgZ3N0X2VsZW1lbnRf
c3RhdGVfZ2V0X25hbWUocGVuZGluZykpOworICAgIGlmIChjdXJyZW50U3RhdGUgPT0gbmV3U3Rh
dGUgfHwgcGVuZGluZyA9PSBuZXdTdGF0ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBH
c3RTdGF0ZUNoYW5nZVJldHVybiBzZXRTdGF0ZVJlc3VsdCA9IGdzdF9lbGVtZW50X3NldF9zdGF0
ZShtX3BsYXlCaW4sIG5ld1N0YXRlKTsKKyAgICBHc3RTdGF0ZSBwYXVzZWRPclBsYXlpbmcgPSBu
ZXdTdGF0ZSA9PSBHU1RfU1RBVEVfUExBWUlORyA/IEdTVF9TVEFURV9QQVVTRUQgOiBHU1RfU1RB
VEVfUExBWUlORzsKKyAgICBpZiAoY3VycmVudFN0YXRlICE9IHBhdXNlZE9yUGxheWluZyAmJiBz
ZXRTdGF0ZVJlc3VsdCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpIHsKKyAgICAgICAgbG9h
ZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6RW1wdHkpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzc5LDYgKzM5MCw3IEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjaGFuZ2VQaXBlbGluZVN0YXRlKEdzdFN0YXRlIG5ld1N0
YXRlKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByZXBhcmVUb1BsYXkoKQog
ewogICAgIG1faXNFbmRSZWFjaGVkID0gZmFsc2U7CisgICAgbV9zZWVraW5nID0gZmFsc2U7CiAK
ICAgICBpZiAobV9kZWxheWluZ0xvYWQpIHsKICAgICAgICAgbV9kZWxheWluZ0xvYWQgPSBmYWxz
ZTsKQEAgLTM4OCwxMiArNDAwLDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpwcmVwYXJlVG9QbGF5KCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBs
YXkoKQogewotICAgIGlmIChjaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QTEFZSU5HKSkK
KyAgICBpZiAoY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUExBWUlORykpIHsKKyAgICAg
ICAgaWYgKG1faXNFbmRSZWFjaGVkICYmIG1fc2Vla2luZykgeworICAgICAgICAgICAgTE9HX01F
RElBX01FU1NBR0UoIlBlbmRpbmcgc2VlayB0byAlZiBhdCByYXRlICVmIiwgbV9zZWVrVGltZSwg
bV9wbGF5YmFja1JhdGUpOworICAgICAgICAgICAgc2VlayhtX3NlZWtUaW1lKTsKKyAgICAgICAg
fQorCisgICAgICAgIG1faXNFbmRSZWFjaGVkID0gZmFsc2U7CiAgICAgICAgIExPR19NRURJQV9N
RVNTQUdFKCJQbGF5Iik7CisgICAgfQogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6cGF1c2UoKQogeworICAgIGlmIChtX2lzRW5kUmVhY2hlZCkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgaWYgKGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNFRCkpCiAgICAg
ICAgIExPR19NRURJQV9NRVNTQUdFKCJQYXVzZSIpOwogfQpAQCAtNDU3LDExICs0NzksMTggQEAg
ZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjdXJyZW50VGltZSgpIGNvbnN0CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKGZsb2F0IHRpbWUpCiB7Ci0g
ICAgLy8gQXZvaWQgdXNlbGVzcyBzZWVraW5nLgotICAgIGlmICh0aW1lID09IHBsYXliYWNrUG9z
aXRpb24oKSkKKyAgICBpZiAoIW1fcGxheUJpbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFtX3BsYXlCaW4pCisgICAgTE9HX01FRElBX01FU1NBR0UoIlNlZWsgYXR0ZW1wdCB0byAlZiBz
ZWNzIiwgdGltZSk7CisKKyAgICBpZiAobV9pc0VuZFJlYWNoZWQgJiYgIW1fcGxheWVyLT5tZWRp
YVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllckxvb3AoKSkgeworICAgICAgICBMT0dfTUVESUFf
TUVTU0FHRSgiU2VlayBvbiBFT1MsIHByZS1yb2xsaW5nIHBpcGVsaW5lIGFnYWluLiIpOworICAg
ICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBHU1RfU1RBVEVfUEFVU0VEKTsK
KyAgICB9CisKKyAgICAvLyBBdm9pZCB1c2VsZXNzIHNlZWtpbmcuCisgICAgaWYgKHRpbWUgPT0g
cGxheWJhY2tQb3NpdGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9lcnJvck9j
Y3VyZWQpCkBAIC00OTQsNiArNTIzLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpzZWVrKGZsb2F0IHRpbWUpCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpwYXVzZWQoKSBjb25zdAogeworICAgIGlmIChtX2lzRW5kUmVhY2hlZCkgeworICAgICAgICBM
T0dfTUVESUFfTUVTU0FHRSgiUGF1c2VkIG9uIEVPUyIpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKICAgICBHc3RTdGF0ZSBzdGF0ZTsKICAgICBnc3RfZWxlbWVudF9nZXRfc3RhdGUo
bV9wbGF5QmluLCAmc3RhdGUsIDAsIDApOwogICAgIHJldHVybiBzdGF0ZSA9PSBHU1RfU1RBVEVf
UEFVU0VEOwpAQCAtMTEzNCw4ICsxMTY4LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICAvLyBDYWNoZSB0aGUgZHVyYXRpb24g
d2l0aG91dCBlbWl0aW5nIHRoZSBkdXJhdGlvbmNoYW5nZQogICAgICAgICAgICAgLy8gZXZlbnQg
YmVjYXVzZSBpdCdzIHRha2VuIGNhcmUgb2YgYnkgdGhlIG1lZGlhIGVsZW1lbnQKICAgICAgICAg
ICAgIC8vIGluIHRoaXMgcHJlY2lzZSBjYXNlLgotICAgICAgICAgICAgY2FjaGVEdXJhdGlvbigp
OwotICAgICAgICB9IGVsc2UgaWYgKG1heFRpbWVMb2FkZWQoKSA9PSBkdXJhdGlvbigpKSB7Cisg
ICAgICAgICAgICBpZiAoIW1faXNFbmRSZWFjaGVkKQorICAgICAgICAgICAgICAgIGNhY2hlRHVy
YXRpb24oKTsKKyAgICAgICAgfSBlbHNlIGlmICgoc3RhdGUgPT0gR1NUX1NUQVRFX05VTEwpIHx8
IChtYXhUaW1lTG9hZGVkKCkgPT0gZHVyYXRpb24oKSkpIHsKICAgICAgICAgICAgIG1fbmV0d29y
a1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRlZDsKICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9
IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE0MDMs
MTUgKzE0MzgsMjIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRpZEVuZCgp
CiAgICAgLy8gcmV2ZXJzZSBwbGF5YmFjay4gU28gdG8gbm90IGNvbmZ1c2UgdGhlIEhUTUxNZWRp
YUVsZW1lbnQsIHdlCiAgICAgLy8gc3luY2hyb25pemUgcG9zaXRpb24gYW5kIGR1cmF0aW9uIHZh
bHVlcy4KICAgICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgpOwotICAgIGlmIChub3cgPiAwICYm
IG1fcGxheWJhY2tSYXRlIDwgMCkgewotICAgICAgICBtX21lZGlhRHVyYXRpb24gPSBub3c7Ci0g
ICAgICAgIG1fbWVkaWFEdXJhdGlvbktub3duID0gdHJ1ZTsKLSAgICAgICAgbV9wbGF5ZXItPmR1
cmF0aW9uQ2hhbmdlZCgpOworICAgIGlmICgobm93ID4gMCAmJiBtX3BsYXliYWNrUmF0ZSA8IDAp
IHx8IChub3cgPD0gZHVyYXRpb24oKSAmJiBtX3BsYXliYWNrUmF0ZSA+IDApKSB7CisgICAgICAg
IGZsb2F0IHByZXZpb3VzRHVyYXRpb24gPSBtX21lZGlhRHVyYXRpb247CisgICAgICAgIGlmIChu
b3cgIT0gbV9tZWRpYUR1cmF0aW9uKSB7CisgICAgICAgICAgICBtX21lZGlhRHVyYXRpb25Lbm93
biA9IHRydWU7CisgICAgICAgICAgICBtX21lZGlhRHVyYXRpb24gPSBub3c7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fbWVkaWFEdXJhdGlvbiAhPSBwcmV2aW91c0R1cmF0aW9uKQorICAgICAg
ICAgICAgbV9wbGF5ZXItPmR1cmF0aW9uQ2hhbmdlZCgpOwogICAgIH0KIAogICAgIG1faXNFbmRS
ZWFjaGVkID0gdHJ1ZTsKLQorICAgIG1fcGF1c2VkID0gdHJ1ZTsKICAgICB0aW1lQ2hhbmdlZCgp
OworCisgICAgaWYgKCFtX3BsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJM
b29wKCkpCisgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFU
RV9OVUxMKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhY2hlRHVy
YXRpb24oKQotLSAKMS43LjEwLjQ=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159648</attachid>
            <date>2012-08-21 04:04:49 -0700</date>
            <delta_ts>2012-08-23 03:03:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>10618</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA1OTFlZjRlYWEzMzQxYmE4YjFkNzNiNGY4NDAyNTgzYjg3MDk3ZmJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBNb24sIDIwIEF1ZyAyMDEyIDEyOjUzOjAzICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDQyICsrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwICAgICAgICAgICB8ICAgIDUgKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oICAgICB8ICAgIDEgKwogLi4uL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgIDczICsrKysrKysrKysrKysrKy0t
LS0tCiA1IGZpbGVzIGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMTg1MGFkOS4uMDJiODAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1
IEBACisyMDEyLTA4LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1N0cmVhbWVyXSBBdWRpbyBkZXZpY2Ugbm90IGNsb3NlZCBhZnRlciBwbGF5
aW5nIHNvdW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTEyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNldCB0aGUgR1N0cmVhbWVyIHBpcGVsaW5lIHRvIE5VTEwgaW5zdGVhZCBvZiBQQVVTRUQgb24g
RU9TLiBUaGlzCisgICAgICAgIGFsbG93cyB0aGUgYXVkaW8tc2luayB0byByZWxlYXNlIGl0cyBj
b25uZWN0aW9uIHRvIHRoZSBhdWRpbworICAgICAgICBkZXZpY2UuIFRoaXMgaXMgZG9uZSBvbmx5
IGlmIHRoZSBNZWRpYSBlbGVtZW50IGlzIG5vdAorICAgICAgICBsb29waW5nLiBUbyBtYWtlIHRo
ZSBNZWRpYVBsYXllclByaXZhdGUgbGF5ZXIgYXdhcmUgb2YgdGhhdAorICAgICAgICBpbmZvcm1h
dGlvbiB0aGUgTWVkaWFQbGF5ZXJDbGllbnQgaW50ZXJmYWNlIHdhcyB1cGRhdGVkIHdpdGggYSBu
ZXcKKyAgICAgICAgbWV0aG9kIG1lZGlhUGxheWVyTG9vcCwgaW1wbGVtZW50ZWQgYnkgdGhlIEhU
TUxNZWRpYUVsZW1lbnQuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJMb29wKTogSW1w
bGVtZW50YXRpb24gb2YKKyAgICAgICAgTWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyTG9v
cCwgcHJveGllcyB0byA6Omxvb3AoKTsKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKyAgICAgICAgKEhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6
bWVkaWFQbGF5ZXJMb29wKTogTmV3IG1ldGhvZCBhbGxvd2luZworICAgICAgICB0aGUgTWVkaWFQ
bGF5ZXIgYW5kIGl0cyBiYWNrZW5kIHRvIGtub3cgaWYgYSBwbGF5YmFjayBsb29wIGlzCisgICAg
ICAgIHJlcXVlc3RlZCBieSB0aGUgY2xpZW50LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpw
bGF5YmFja1Bvc2l0aW9uKTogUmVwb3J0CisgICAgICAgIHNlZWsgdGltZSBvciBtZWRpYSBkdXJh
dGlvbiBpZiBFT1Mgd2FzIHJlYWNoZWQuIFRoZXNlIGVhcmx5CisgICAgICAgIHJldHVybnMgYXJl
IG5lZWRlZCBiZWNhdXNlIHRoZSBwb3NpdGlvbiBxdWVyeSBkb2Vzbid0IHdvcmsgb24gYQorICAg
ICAgICBOVUxMIHBpcGVsaW5lLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpjaGFuZ2VQaXBlbGluZVN0YXRlKToKKyAgICAgICAgUmVmYWN0b3JlZCB0byB1
c2UgYW4gZWFybHkgcmV0dXJuLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpwcmVwYXJlVG9QbGF5KTogUmVzZXQgdGhlCisgICAgICAgIHNlZWtpbmcgZmxh
Zy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGxheSk6
IHJlc2V0IG1faXNFbmRSZWFjaGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpwYXVzZSk6IERvbid0IHBhdXNlIG9uIEVPUy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2Vlayk6IERvbid0IHNlZWsgdG8gMCBp
bgorICAgICAgICBub24tbG9vcGluZyBtb2RlLCB0aGlzIHdvdWxkbid0IHdvcmsgb24gYSBOVUxM
IHBpcGVsaW5lLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpwYXVzZWQpOiBGYWtlIHBhdXNlZCBzdGF0ZQorICAgICAgICBvbiBFT1MuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om1lZGlhRWxlbWVudExvb3Bpbmcp
OiBOZXcKKyAgICAgICAgc21hbGwgdXRpbGl0eSBtZXRob2QgdG8gY2hlY2sgaWYgdGhlIEhUTUxN
ZWRpYUVsZW1lbnQgaXMgbG9vcGluZyBwbGF5YmFjay4KKwogMjAxMi0wOC0yMCAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBNb3ZlIFN0cmluZyBy
ZWxhdGVkIGNvZGUgaW4gVjhCaW5kaW5nIHRvIGEgc2VwYXJhdGUgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZmFkY2ZlNy4uZjA1ZWMxNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDM2Miw2ICs0MzYyLDEx
IEBAIE1lZGlhUGxheWVyQ2xpZW50OjpDT1JTTW9kZSBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckNPUlNNb2RlKCkgY29uc3QKICAgICByZXR1cm4gQW5vbnltb3VzOwogfQogCitib29sIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTG9vcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGxv
b3AoKTsKK30KKwogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck5lZWRzU2l0ZVNw
ZWNpZmljSGFja3MoKSBjb25zdAogewogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50
KCktPnNldHRpbmdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4
IGRhMTAyYTYuLmI3MGY3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CkBAIC00MTgsNiArNDE4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBs
YXllclJlZmVycmVyKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQ
bGF5ZXJVc2VyQWdlbnQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENPUlNNb2RlIG1l
ZGlhUGxheWVyQ09SU01vZGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgbWVk
aWFQbGF5ZXJMb29wKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQ
bGF5ZXJOZWVkc1NpdGVTcGVjaWZpY0hhY2tzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBTdHJpbmcgbWVkaWFQbGF5ZXJEb2N1bWVudEhvc3QoKSBjb25zdCBPVkVSUklERTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGRlNjky
MjIuLmE3OWI3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaApAQCAtMTg5LDYgKzE4OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmlu
ZyBtZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2
aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9CiAgICAgdmlydHVhbCBDT1JTTW9kZSBtZWRpYVBsYXllckNPUlNNb2RlKCkgY29uc3Qg
eyByZXR1cm4gVW5zcGVjaWZpZWQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJMb29w
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIGNsYXNzIE1lZGlhUGxheWVyU3VwcG9y
dHNUeXBlQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKaW5kZXggYWRmNTU1Zi4uNmMyZTdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTIxMSw2ICsyMTEsNyBAQCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBs
YXllciogcGxheWVyKQogICAgICwgbV9zZWVrVGltZSgwKQogICAgICwgbV9jaGFuZ2luZ1JhdGUo
ZmFsc2UpCiAgICAgLCBtX2VuZFRpbWUobnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgp
KQorICAgICwgbV9pc0VuZFJlYWNoZWQoZmFsc2UpCiAgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRp
YVBsYXllcjo6RW1wdHkpCiAgICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3Ro
aW5nKQogICAgICwgbV9pc1N0cmVhbWluZyhmYWxzZSkKQEAgLTMzMyw2ICszMzQsMTQgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvbW1pdExvYWQoKQogCiBmbG9hdCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24oKSBjb25zdAogeworICAg
IExPR19NRURJQV9NRVNTQUdFKCJFT1M6ICVkLCBzZWVraW5nOiAlZCwgc2Vla1RpbWU6ICVmLCBk
dXJhdGlvbjogJWYiLCBtX2lzRW5kUmVhY2hlZCwgbV9zZWVraW5nLCBtX3NlZWtUaW1lLCBtX21l
ZGlhRHVyYXRpb24pOworICAgIGlmIChtX2lzRW5kUmVhY2hlZCkgeworICAgICAgICBpZiAobV9z
ZWVraW5nKQorICAgICAgICAgICAgcmV0dXJuIG1fc2Vla1RpbWU7CisgICAgICAgIGlmIChtX21l
ZGlhRHVyYXRpb24pCisgICAgICAgICAgICByZXR1cm4gbV9tZWRpYUR1cmF0aW9uOworICAgIH0K
KwogICAgIGZsb2F0IHJldCA9IDAuMGY7CiAKICAgICBHc3RRdWVyeSogcXVlcnkgPSBnc3RfcXVl
cnlfbmV3X3Bvc2l0aW9uKEdTVF9GT1JNQVRfVElNRSk7CkBAIC0zNjUsMTMgKzM3NCwxNSBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxpbmVTdGF0ZShHc3RT
dGF0ZSBuZXdTdGF0ZSkKICAgICBHc3RTdGF0ZSBwZW5kaW5nOwogCiAgICAgZ3N0X2VsZW1lbnRf
Z2V0X3N0YXRlKG1fcGxheUJpbiwgJmN1cnJlbnRTdGF0ZSwgJnBlbmRpbmcsIDApOwotICAgIGlm
IChjdXJyZW50U3RhdGUgIT0gbmV3U3RhdGUgJiYgcGVuZGluZyAhPSBuZXdTdGF0ZSkgewotICAg
ICAgICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9w
bGF5QmluLCBuZXdTdGF0ZSk7Ci0gICAgICAgIEdzdFN0YXRlIHBhdXNlZE9yUGxheWluZyA9IG5l
d1N0YXRlID09IEdTVF9TVEFURV9QTEFZSU5HID8gR1NUX1NUQVRFX1BBVVNFRCA6IEdTVF9TVEFU
RV9QTEFZSU5HOwotICAgICAgICBpZiAoY3VycmVudFN0YXRlICE9IHBhdXNlZE9yUGxheWluZyAm
JiByZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSB7Ci0gICAgICAgICAgICBsb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpFbXB0eSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KKyAgICBMT0dfTUVESUFfTUVTU0FHRSgiQ3VycmVudCBzdGF0ZTogJXMsIHBlbmRp
bmc6ICVzIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUoY3VycmVudFN0YXRlKSwgZ3N0X2Vs
ZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOworICAgIGlmIChjdXJyZW50U3RhdGUgPT0g
bmV3U3RhdGUgfHwgcGVuZGluZyA9PSBuZXdTdGF0ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzZXRTdGF0ZVJlc3VsdCA9IGdzdF9lbGVtZW50X3Nl
dF9zdGF0ZShtX3BsYXlCaW4sIG5ld1N0YXRlKTsKKyAgICBHc3RTdGF0ZSBwYXVzZWRPclBsYXlp
bmcgPSBuZXdTdGF0ZSA9PSBHU1RfU1RBVEVfUExBWUlORyA/IEdTVF9TVEFURV9QQVVTRUQgOiBH
U1RfU1RBVEVfUExBWUlORzsKKyAgICBpZiAoY3VycmVudFN0YXRlICE9IHBhdXNlZE9yUGxheWlu
ZyAmJiBzZXRTdGF0ZVJlc3VsdCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpIHsKKyAgICAg
ICAgbG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6RW1wdHkpOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzc5LDYgKzM5MCw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjaGFuZ2VQaXBlbGluZVN0YXRlKEdzdFN0YXRl
IG5ld1N0YXRlKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByZXBhcmVUb1Bs
YXkoKQogewogICAgIG1faXNFbmRSZWFjaGVkID0gZmFsc2U7CisgICAgbV9zZWVraW5nID0gZmFs
c2U7CiAKICAgICBpZiAobV9kZWxheWluZ0xvYWQpIHsKICAgICAgICAgbV9kZWxheWluZ0xvYWQg
PSBmYWxzZTsKQEAgLTM4OCwxMiArNDAwLDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpwcmVwYXJlVG9QbGF5KCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnBsYXkoKQogewotICAgIGlmIChjaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QTEFZ
SU5HKSkKKyAgICBpZiAoY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUExBWUlORykpIHsK
KyAgICAgICAgbV9pc0VuZFJlYWNoZWQgPSBmYWxzZTsKICAgICAgICAgTE9HX01FRElBX01FU1NB
R0UoIlBsYXkiKTsKKyAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpwYXVzZSgpCiB7CisgICAgaWYgKG1faXNFbmRSZWFjaGVkKQorICAgICAgICByZXR1cm47CisK
ICAgICBpZiAoY2hhbmdlUGlwZWxpbmVTdGF0ZShHU1RfU1RBVEVfUEFVU0VEKSkKICAgICAgICAg
TE9HX01FRElBX01FU1NBR0UoIlBhdXNlIik7CiB9CkBAIC00NTcsMTEgKzQ3NCwxOCBAQCBmbG9h
dCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNlZWsoZmxvYXQgdGltZSkKIHsKLSAgICAv
LyBBdm9pZCB1c2VsZXNzIHNlZWtpbmcuCi0gICAgaWYgKHRpbWUgPT0gcGxheWJhY2tQb3NpdGlv
bigpKQorICAgIGlmICghbV9wbGF5QmluKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1f
cGxheUJpbikKKyAgICBMT0dfTUVESUFfTUVTU0FHRSgiU2VlayBhdHRlbXB0IHRvICVmIHNlY3Mi
LCB0aW1lKTsKKworICAgIGlmIChtX2lzRW5kUmVhY2hlZCAmJiAhbV9wbGF5ZXItPm1lZGlhUGxh
eWVyQ2xpZW50KCktPm1lZGlhUGxheWVyTG9vcCgpKSB7CisgICAgICAgIExPR19NRURJQV9NRVNT
QUdFKCJTZWVrIG9uIEVPUywgcHJlLXJvbGxpbmcgcGlwZWxpbmUgYWdhaW4uIik7CisgICAgICAg
IGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFURV9QQVVTRUQpOworICAg
IH0KKworICAgIC8vIEF2b2lkIHVzZWxlc3Mgc2Vla2luZy4KKyAgICBpZiAodGltZSA9PSBwbGF5
YmFja1Bvc2l0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2Vycm9yT2NjdXJl
ZCkKQEAgLTQ5NCw2ICs1MTgsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnNlZWsoZmxvYXQgdGltZSkKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBh
dXNlZCgpIGNvbnN0CiB7CisgICAgaWYgKG1faXNFbmRSZWFjaGVkKSB7CisgICAgICAgIExPR19N
RURJQV9NRVNTQUdFKCJQYXVzZWQgb24gRU9TIik7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKwogICAgIEdzdFN0YXRlIHN0YXRlOwogICAgIGdzdF9lbGVtZW50X2dldF9zdGF0ZShtX3Bs
YXlCaW4sICZzdGF0ZSwgMCwgMCk7CiAgICAgcmV0dXJuIHN0YXRlID09IEdTVF9TVEFURV9QQVVT
RUQ7CkBAIC0xMTM0LDggKzExNjMsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAgICAgIC8vIENhY2hlIHRoZSBkdXJhdGlvbiB3aXRo
b3V0IGVtaXRpbmcgdGhlIGR1cmF0aW9uY2hhbmdlCiAgICAgICAgICAgICAvLyBldmVudCBiZWNh
dXNlIGl0J3MgdGFrZW4gY2FyZSBvZiBieSB0aGUgbWVkaWEgZWxlbWVudAogICAgICAgICAgICAg
Ly8gaW4gdGhpcyBwcmVjaXNlIGNhc2UuCi0gICAgICAgICAgICBjYWNoZUR1cmF0aW9uKCk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAobWF4VGltZUxvYWRlZCgpID09IGR1cmF0aW9uKCkpIHsKKyAgICAg
ICAgICAgIGlmICghbV9pc0VuZFJlYWNoZWQpCisgICAgICAgICAgICAgICAgY2FjaGVEdXJhdGlv
bigpOworICAgICAgICB9IGVsc2UgaWYgKChzdGF0ZSA9PSBHU1RfU1RBVEVfTlVMTCkgfHwgKG1h
eFRpbWVMb2FkZWQoKSA9PSBkdXJhdGlvbigpKSkgewogICAgICAgICAgICAgbV9uZXR3b3JrU3Rh
dGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkOwogICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVk
aWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhOwogICAgICAgICB9IGVsc2UgewpAQCAtMTQwMywxNSAr
MTQzMywyMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlkRW5kKCkKICAg
ICAvLyByZXZlcnNlIHBsYXliYWNrLiBTbyB0byBub3QgY29uZnVzZSB0aGUgSFRNTE1lZGlhRWxl
bWVudCwgd2UKICAgICAvLyBzeW5jaHJvbml6ZSBwb3NpdGlvbiBhbmQgZHVyYXRpb24gdmFsdWVz
LgogICAgIGZsb2F0IG5vdyA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgaWYgKG5vdyA+IDAgJiYgbV9w
bGF5YmFja1JhdGUgPCAwKSB7Ci0gICAgICAgIG1fbWVkaWFEdXJhdGlvbiA9IG5vdzsKLSAgICAg
ICAgbV9tZWRpYUR1cmF0aW9uS25vd24gPSB0cnVlOwotICAgICAgICBtX3BsYXllci0+ZHVyYXRp
b25DaGFuZ2VkKCk7CisgICAgaWYgKChub3cgPiAwICYmIG1fcGxheWJhY2tSYXRlIDwgMCkgfHwg
KG5vdyA8PSBkdXJhdGlvbigpICYmIG1fcGxheWJhY2tSYXRlID4gMCkpIHsKKyAgICAgICAgZmxv
YXQgcHJldmlvdXNEdXJhdGlvbiA9IG1fbWVkaWFEdXJhdGlvbjsKKyAgICAgICAgaWYgKG5vdyAh
PSBtX21lZGlhRHVyYXRpb24pIHsKKyAgICAgICAgICAgIG1fbWVkaWFEdXJhdGlvbktub3duID0g
dHJ1ZTsKKyAgICAgICAgICAgIG1fbWVkaWFEdXJhdGlvbiA9IG5vdzsKKyAgICAgICAgfQorICAg
ICAgICBpZiAobV9tZWRpYUR1cmF0aW9uICE9IHByZXZpb3VzRHVyYXRpb24pCisgICAgICAgICAg
ICBtX3BsYXllci0+ZHVyYXRpb25DaGFuZ2VkKCk7CiAgICAgfQogCiAgICAgbV9pc0VuZFJlYWNo
ZWQgPSB0cnVlOwotCisgICAgbV9wYXVzZWQgPSB0cnVlOwogICAgIHRpbWVDaGFuZ2VkKCk7CisK
KyAgICBpZiAoIW1fcGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllckxvb3Ao
KSkKKyAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJpbiwgR1NUX1NUQVRFX05V
TEwpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2FjaGVEdXJhdGlv
bigpCi0tIAoxLjcuMTAuNA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160122</attachid>
            <date>2012-08-23 03:03:51 -0700</date>
            <delta_ts>2012-08-29 03:21:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>11022</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0ZDliOWE0Y2E5MDdjOTY4NDc5YmYzZTFjYzdmOThlZDA5MDY4MGZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBNb24sIDIwIEF1ZyAyMDEyIDEyOjUzOjAzICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDQyICsrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwICAgICAgICAgICB8ICAgIDUgKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oICAgICB8ICAgIDEgKwogLi4uL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgIDc4ICsrKysrKysrKysrKysrKy0t
LS0tCiA1IGZpbGVzIGNoYW5nZWQsIDEwNyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggYThmN2YxOC4uZmFjYTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1
IEBACisyMDEyLTA4LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1N0cmVhbWVyXSBBdWRpbyBkZXZpY2Ugbm90IGNsb3NlZCBhZnRlciBwbGF5
aW5nIHNvdW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTEyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNldCB0aGUgR1N0cmVhbWVyIHBpcGVsaW5lIHRvIE5VTEwgaW5zdGVhZCBvZiBQQVVTRUQgb24g
RU9TLiBUaGlzCisgICAgICAgIGFsbG93cyB0aGUgYXVkaW8tc2luayB0byByZWxlYXNlIGl0cyBj
b25uZWN0aW9uIHRvIHRoZSBhdWRpbworICAgICAgICBkZXZpY2UuIFRoaXMgaXMgZG9uZSBvbmx5
IGlmIHRoZSBNZWRpYSBlbGVtZW50IGlzIG5vdAorICAgICAgICBsb29waW5nLiBUbyBtYWtlIHRo
ZSBNZWRpYVBsYXllclByaXZhdGUgbGF5ZXIgYXdhcmUgb2YgdGhhdAorICAgICAgICBpbmZvcm1h
dGlvbiB0aGUgTWVkaWFQbGF5ZXJDbGllbnQgaW50ZXJmYWNlIHdhcyB1cGRhdGVkIHdpdGggYSBu
ZXcKKyAgICAgICAgbWV0aG9kIG1lZGlhUGxheWVyTG9vcCwgaW1wbGVtZW50ZWQgYnkgdGhlIEhU
TUxNZWRpYUVsZW1lbnQuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJMb29wKTogSW1w
bGVtZW50YXRpb24gb2YKKyAgICAgICAgTWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyTG9v
cCwgcHJveGllcyB0byA6Omxvb3AoKTsKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
aDoKKyAgICAgICAgKEhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6
bWVkaWFQbGF5ZXJMb29wKTogTmV3IG1ldGhvZCBhbGxvd2luZworICAgICAgICB0aGUgTWVkaWFQ
bGF5ZXIgYW5kIGl0cyBiYWNrZW5kIHRvIGtub3cgaWYgYSBwbGF5YmFjayBsb29wIGlzCisgICAg
ICAgIHJlcXVlc3RlZCBieSB0aGUgY2xpZW50LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpw
bGF5YmFja1Bvc2l0aW9uKTogUmVwb3J0CisgICAgICAgIHNlZWsgdGltZSBvciBtZWRpYSBkdXJh
dGlvbiBpZiBFT1Mgd2FzIHJlYWNoZWQuIFRoZXNlIGVhcmx5CisgICAgICAgIHJldHVybnMgYXJl
IG5lZWRlZCBiZWNhdXNlIHRoZSBwb3NpdGlvbiBxdWVyeSBkb2Vzbid0IHdvcmsgb24gYQorICAg
ICAgICBOVUxMIHBpcGVsaW5lLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpjaGFuZ2VQaXBlbGluZVN0YXRlKToKKyAgICAgICAgUmVmYWN0b3JlZCB0byB1
c2UgYW4gZWFybHkgcmV0dXJuLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpwcmVwYXJlVG9QbGF5KTogUmVzZXQgdGhlCisgICAgICAgIHNlZWtpbmcgZmxh
Zy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGxheSk6
IHJlc2V0IG1faXNFbmRSZWFjaGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpwYXVzZSk6IERvbid0IHBhdXNlIG9uIEVPUy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2Vlayk6IERvbid0IHNlZWsgdG8gMCBp
bgorICAgICAgICBub24tbG9vcGluZyBtb2RlLCB0aGlzIHdvdWxkbid0IHdvcmsgb24gYSBOVUxM
IHBpcGVsaW5lLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpwYXVzZWQpOiBGYWtlIHBhdXNlZCBzdGF0ZQorICAgICAgICBvbiBFT1MuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om1lZGlhRWxlbWVudExvb3Bpbmcp
OiBOZXcKKyAgICAgICAgc21hbGwgdXRpbGl0eSBtZXRob2QgdG8gY2hlY2sgaWYgdGhlIEhUTUxN
ZWRpYUVsZW1lbnQgaXMgbG9vcGluZyBwbGF5YmFjay4KKwogMjAxMi0wOC0yMyAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBSZW1vdmUgYWxtb3N0
IGFsbCAjaW5jbHVkZSAiVjhQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggZmZiMzA4OS4uN2U3YjRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00MzY2LDYgKzQzNjYsMTEgQEAgTWVkaWFQbGF5ZXJDbGll
bnQ6OkNPUlNNb2RlIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ09SU01vZGUoKSBjb25z
dAogICAgIHJldHVybiBBbm9ueW1vdXM7CiB9CiAKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJMb29wKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbG9vcCgpOworfQorCiBib29sIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTmVlZHNTaXRlU3BlY2lmaWNIYWNrcygpIGNvbnN0
CiB7CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZGExMDJhNi4uYjcwZjc4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTQxOCw2ICs0MTgsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJyZXIoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ09SU01vZGUgbWVkaWFQbGF5ZXJDT1JTTW9kZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllckxvb3AoKSBjb25z
dCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllck5lZWRzU2l0ZVNwZWNp
ZmljSGFja3MoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXll
ckRvY3VtZW50SG9zdCgpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggZGU2OTIyMi4uYTc5Yjc2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0xODks
NiArMTg5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyUmVmZXJy
ZXIoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlh
UGxheWVyVXNlckFnZW50KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFs
IENPUlNNb2RlIG1lZGlhUGxheWVyQ09SU01vZGUoKSBjb25zdCB7IHJldHVybiBVbnNwZWNpZmll
ZDsgfQorICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllckxvb3AoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogfTsKIAogY2xhc3MgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBhZGY1
NTVmLi5iNzcyZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcApAQCAtMjExLDYgKzIxMSw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAg
LCBtX3NlZWtUaW1lKDApCiAgICAgLCBtX2NoYW5naW5nUmF0ZShmYWxzZSkKICAgICAsIG1fZW5k
VGltZShudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkpCisgICAgLCBtX2lzRW5kUmVh
Y2hlZChmYWxzZSkKICAgICAsIG1fbmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpFbXB0eSkKICAg
ICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCiAgICAgLCBtX2lzU3Ry
ZWFtaW5nKGZhbHNlKQpAQCAtMzMzLDYgKzMzNCwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6Y29tbWl0TG9hZCgpCiAKIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6cGxheWJhY2tQb3NpdGlvbigpIGNvbnN0CiB7CisgICAgaWYgKG1faXNFbmRSZWFjaGVk
KSB7CisgICAgICAgIC8vIFBvc2l0aW9uIHF1ZXJpZXMgZG9uJ3Qgd29yayBvbiBhIG51bGwgcGlw
ZWxpbmUgYW5kIHdoZW4gd2UncmUgYXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIHRoZSBwaXBlbGlu
ZSBpcyBudWxsLgorICAgICAgICBpZiAobV9zZWVraW5nKQorICAgICAgICAgICAgcmV0dXJuIG1f
c2Vla1RpbWU7CisgICAgICAgIGlmIChtX21lZGlhRHVyYXRpb24pCisgICAgICAgICAgICByZXR1
cm4gbV9tZWRpYUR1cmF0aW9uOworICAgIH0KKwogICAgIGZsb2F0IHJldCA9IDAuMGY7CiAKICAg
ICBHc3RRdWVyeSogcXVlcnkgPSBnc3RfcXVlcnlfbmV3X3Bvc2l0aW9uKEdTVF9GT1JNQVRfVElN
RSk7CkBAIC0zNjUsMTMgKzM3NCwxNSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6Y2hhbmdlUGlwZWxpbmVTdGF0ZShHc3RTdGF0ZSBuZXdTdGF0ZSkKICAgICBHc3RTdGF0ZSBw
ZW5kaW5nOwogCiAgICAgZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGxheUJpbiwgJmN1cnJlbnRT
dGF0ZSwgJnBlbmRpbmcsIDApOwotICAgIGlmIChjdXJyZW50U3RhdGUgIT0gbmV3U3RhdGUgJiYg
cGVuZGluZyAhPSBuZXdTdGF0ZSkgewotICAgICAgICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQg
PSBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBuZXdTdGF0ZSk7Ci0gICAgICAgIEdz
dFN0YXRlIHBhdXNlZE9yUGxheWluZyA9IG5ld1N0YXRlID09IEdTVF9TVEFURV9QTEFZSU5HID8g
R1NUX1NUQVRFX1BBVVNFRCA6IEdTVF9TVEFURV9QTEFZSU5HOwotICAgICAgICBpZiAoY3VycmVu
dFN0YXRlICE9IHBhdXNlZE9yUGxheWluZyAmJiByZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlM
VVJFKSB7Ci0gICAgICAgICAgICBsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpFbXB0eSk7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICBMT0dfTUVESUFfTUVTU0FH
RSgiQ3VycmVudCBzdGF0ZTogJXMsIHBlbmRpbmc6ICVzIiwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0
X25hbWUoY3VycmVudFN0YXRlKSwgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykp
OworICAgIGlmIChjdXJyZW50U3RhdGUgPT0gbmV3U3RhdGUgfHwgcGVuZGluZyA9PSBuZXdTdGF0
ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzZXRT
dGF0ZVJlc3VsdCA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIG5ld1N0YXRlKTsK
KyAgICBHc3RTdGF0ZSBwYXVzZWRPclBsYXlpbmcgPSBuZXdTdGF0ZSA9PSBHU1RfU1RBVEVfUExB
WUlORyA/IEdTVF9TVEFURV9QQVVTRUQgOiBHU1RfU1RBVEVfUExBWUlORzsKKyAgICBpZiAoY3Vy
cmVudFN0YXRlICE9IHBhdXNlZE9yUGxheWluZyAmJiBzZXRTdGF0ZVJlc3VsdCA9PSBHU1RfU1RB
VEVfQ0hBTkdFX0ZBSUxVUkUpIHsKKyAgICAgICAgbG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6
RW1wdHkpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMzc5LDYgKzM5MCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpj
aGFuZ2VQaXBlbGluZVN0YXRlKEdzdFN0YXRlIG5ld1N0YXRlKQogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnByZXBhcmVUb1BsYXkoKQogewogICAgIG1faXNFbmRSZWFjaGVkID0g
ZmFsc2U7CisgICAgbV9zZWVraW5nID0gZmFsc2U7CiAKICAgICBpZiAobV9kZWxheWluZ0xvYWQp
IHsKICAgICAgICAgbV9kZWxheWluZ0xvYWQgPSBmYWxzZTsKQEAgLTM4OCwxMiArNDAwLDE3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcmVwYXJlVG9QbGF5KCkKIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXkoKQogewotICAgIGlmIChjaGFuZ2VQ
aXBlbGluZVN0YXRlKEdTVF9TVEFURV9QTEFZSU5HKSkKKyAgICBpZiAoY2hhbmdlUGlwZWxpbmVT
dGF0ZShHU1RfU1RBVEVfUExBWUlORykpIHsKKyAgICAgICAgbV9pc0VuZFJlYWNoZWQgPSBmYWxz
ZTsKICAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIlBsYXkiKTsKKyAgICB9CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZSgpCiB7CisgICAgaWYgKG1faXNFbmRS
ZWFjaGVkKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoY2hhbmdlUGlwZWxpbmVTdGF0ZShH
U1RfU1RBVEVfUEFVU0VEKSkKICAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIlBhdXNlIik7CiB9
CkBAIC00NTcsMTYgKzQ3NCwyNyBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnNlZWsoZmxvYXQgdGltZSkKIHsKLSAgICAvLyBBdm9pZCB1c2VsZXNzIHNlZWtpbmcuCi0gICAg
aWYgKHRpbWUgPT0gcGxheWJhY2tQb3NpdGlvbigpKQotICAgICAgICByZXR1cm47Ci0KICAgICBp
ZiAoIW1fcGxheUJpbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZXJyb3JPY2N1cmVk
KQogICAgICAgICByZXR1cm47CiAKKyAgICBMT0dfTUVESUFfTUVTU0FHRSgiU2VlayBhdHRlbXB0
IHRvICVmIHNlY3MiLCB0aW1lKTsKKworICAgIGJvb2wgcHJlcm9sbFJlcXVpcmVkID0gbV9pc0Vu
ZFJlYWNoZWQgJiYgIW1fcGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllckxv
b3AoKTsKKyAgICBpZiAocHJlcm9sbFJlcXVpcmVkKSB7CisgICAgICAgIExPR19NRURJQV9NRVNT
QUdFKCJTZWVrIG9uIEVPUywgcHJlLXJvbGxpbmcgcGlwZWxpbmUgYWdhaW4uIik7CisgICAgICAg
IGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFURV9QQVVTRUQpOworICAg
IH0KKworICAgIC8vIEF2b2lkIHVzZWxlc3Mgc2Vla2luZy4KKyAgICBpZiAodGltZSA9PSBwbGF5
YmFja1Bvc2l0aW9uKCkpIHsKKyAgICAgICAgaWYgKHByZXJvbGxSZXF1aXJlZCkKKyAgICAgICAg
ICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFURV9OVUxMKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIEV4dHJhY3QgdGhlIGludGVnZXIgcGFydCBv
ZiB0aGUgdGltZSAoc2Vjb25kcykgYW5kIHRoZQogICAgIC8vIGZyYWN0aW9uYWwgcGFydCAobWlj
cm9zZWNvbmRzKS4gQXR0ZW1wdCB0byByb3VuZCB0aGUKICAgICAvLyBtaWNyb3NlY29uZHMgc28g
bm8gZmxvYXRpbmcgcG9pbnQgcHJlY2lzaW9uIGlzIGxvc3QgYW5kIHdlIGNhbgpAQCAtNDk0LDYg
KzUyMiwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2VlayhmbG9hdCB0
aW1lKQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGF1c2VkKCkgY29uc3QK
IHsKKyAgICBpZiAobV9pc0VuZFJlYWNoZWQpIHsKKyAgICAgICAgTE9HX01FRElBX01FU1NBR0Uo
Iklnbm9yaW5nIHBhdXNlIGF0IEVPUyIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
ICAgICBHc3RTdGF0ZSBzdGF0ZTsKICAgICBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9wbGF5Qmlu
LCAmc3RhdGUsIDAsIDApOwogICAgIHJldHVybiBzdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VEOwpA
QCAtMTEzNCw4ICsxMTY3LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVw
ZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICAvLyBDYWNoZSB0aGUgZHVyYXRpb24gd2l0aG91dCBl
bWl0aW5nIHRoZSBkdXJhdGlvbmNoYW5nZQogICAgICAgICAgICAgLy8gZXZlbnQgYmVjYXVzZSBp
dCdzIHRha2VuIGNhcmUgb2YgYnkgdGhlIG1lZGlhIGVsZW1lbnQKICAgICAgICAgICAgIC8vIGlu
IHRoaXMgcHJlY2lzZSBjYXNlLgotICAgICAgICAgICAgY2FjaGVEdXJhdGlvbigpOwotICAgICAg
ICB9IGVsc2UgaWYgKG1heFRpbWVMb2FkZWQoKSA9PSBkdXJhdGlvbigpKSB7CisgICAgICAgICAg
ICBpZiAoIW1faXNFbmRSZWFjaGVkKQorICAgICAgICAgICAgICAgIGNhY2hlRHVyYXRpb24oKTsK
KyAgICAgICAgfSBlbHNlIGlmICgoc3RhdGUgPT0gR1NUX1NUQVRFX05VTEwpIHx8IChtYXhUaW1l
TG9hZGVkKCkgPT0gZHVyYXRpb24oKSkpIHsKICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0g
TWVkaWFQbGF5ZXI6OkxvYWRlZDsKICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpIYXZlRW5vdWdoRGF0YTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTEzOTksMTkgKzE0MzMs
MjMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRpbWVDaGFuZ2VkKCkKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRpZEVuZCgpCiB7Ci0gICAgLy8gRU9T
IHdhcyByZWFjaGVkIGJ1dCB0aGUgcG9zaXRpb24gaXMgbm90IGFsd2F5cyAwIGluIGNhc2Ugb2YK
LSAgICAvLyByZXZlcnNlIHBsYXliYWNrLiBTbyB0byBub3QgY29uZnVzZSB0aGUgSFRNTE1lZGlh
RWxlbWVudCwgd2UKLSAgICAvLyBzeW5jaHJvbml6ZSBwb3NpdGlvbiBhbmQgZHVyYXRpb24gdmFs
dWVzLgorICAgIC8vIFN5bmNocm9uaXplIHBvc2l0aW9uIGFuZCBkdXJhdGlvbiB2YWx1ZXMgdG8g
bm90IGNvbmZ1c2UgdGhlCisgICAgLy8gSFRNTE1lZGlhRWxlbWVudC4gSW4gc29tZSBjYXNlcyBs
aWtlIHJldmVyc2UgcGxheWJhY2sgdGhlCisgICAgLy8gcG9zaXRpb24gaXMgbm90IGFsd2F5cyBy
ZXBvcnRlZCBhcyAwIGZvciBpbnN0YW5jZS4KICAgICBmbG9hdCBub3cgPSBjdXJyZW50VGltZSgp
OwotICAgIGlmIChub3cgPiAwICYmIG1fcGxheWJhY2tSYXRlIDwgMCkgewotICAgICAgICBtX21l
ZGlhRHVyYXRpb24gPSBub3c7CisgICAgaWYgKG5vdyA+IDAgJiYgbm93IDw9IGR1cmF0aW9uKCkg
JiYgbV9tZWRpYUR1cmF0aW9uICE9IG5vdykgewogICAgICAgICBtX21lZGlhRHVyYXRpb25Lbm93
biA9IHRydWU7CisgICAgICAgIG1fbWVkaWFEdXJhdGlvbiA9IG5vdzsKICAgICAgICAgbV9wbGF5
ZXItPmR1cmF0aW9uQ2hhbmdlZCgpOwogICAgIH0KIAogICAgIG1faXNFbmRSZWFjaGVkID0gdHJ1
ZTsKLQogICAgIHRpbWVDaGFuZ2VkKCk7CisKKyAgICBpZiAoIW1fcGxheWVyLT5tZWRpYVBsYXll
ckNsaWVudCgpLT5tZWRpYVBsYXllckxvb3AoKSkgeworICAgICAgICBtX3BhdXNlZCA9IHRydWU7
CisgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFURV9OVUxM
KTsKKyAgICB9CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjYWNoZUR1
cmF0aW9uKCkKLS0gCjEuNy4xMC40
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161170</attachid>
            <date>2012-08-29 03:21:57 -0700</date>
            <delta_ts>2012-09-11 18:21:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>10639</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA3NTQ0N2EwZDIyZWY1N2E1MDEyMzNlOGNhNmMzNTU1OTk0ZGE1OTU3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBNb24sIDIwIEF1ZyAyMDEyIDEyOjUzOjAzICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDQwICsrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwICAgICAgICAgICB8ICAgIDUgKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oICAgICB8ICAgIDEgKwogLi4uL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgIDcyICsrKysrKysrKysrKysrLS0t
LS0tCiA1IGZpbGVzIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MDQyMWMwLi45NTJmNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTItMDgtMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHU3RyZWFtZXJdIEF1ZGlvIGRldmljZSBub3QgY2xvc2VkIGFmdGVyIHBsYXlp
bmcgc291bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg5MTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2V0IHRoZSBHU3RyZWFtZXIgcGlwZWxpbmUgdG8gTlVMTCBpbnN0ZWFkIG9mIFBBVVNFRCBvbiBF
T1MuIFRoaXMKKyAgICAgICAgYWxsb3dzIHRoZSBhdWRpby1zaW5rIHRvIHJlbGVhc2UgaXRzIGNv
bm5lY3Rpb24gdG8gdGhlIGF1ZGlvCisgICAgICAgIGRldmljZS4gVGhpcyBpcyBkb25lIG9ubHkg
aWYgdGhlIE1lZGlhIGVsZW1lbnQgaXMgbm90CisgICAgICAgIGxvb3BpbmcuIFRvIG1ha2UgdGhl
IE1lZGlhUGxheWVyUHJpdmF0ZSBsYXllciBhd2FyZSBvZiB0aGF0CisgICAgICAgIGluZm9ybWF0
aW9uIHRoZSBNZWRpYVBsYXllckNsaWVudCBpbnRlcmZhY2Ugd2FzIHVwZGF0ZWQgd2l0aCBhIG5l
dworICAgICAgICBtZXRob2QgbWVkaWFQbGF5ZXJJc0xvb3BpbmcsIGltcGxlbWVudGVkIGJ5IHRo
ZSBIVE1MTWVkaWFFbGVtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySXNMb29w
aW5nKTogSW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgTWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlh
UGxheWVyTG9vcCwgcHJveGllcyB0byA6Omxvb3AoKTsKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
ckNsaWVudDo6bWVkaWFQbGF5ZXJJc0xvb3BpbmcpOiBOZXcgbWV0aG9kIGFsbG93aW5nCisgICAg
ICAgIHRoZSBNZWRpYVBsYXllciBhbmQgaXRzIGJhY2tlbmQgdG8ga25vdyBpZiBhIHBsYXliYWNr
IGxvb3AgaXMKKyAgICAgICAgcmVxdWVzdGVkIGJ5IHRoZSBjbGllbnQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24pOiBSZXBvcnQKKyAgICAgICAgc2VlayB0aW1l
IG9yIG1lZGlhIGR1cmF0aW9uIGlmIEVPUyB3YXMgcmVhY2hlZC4gVGhlc2UgZWFybHkKKyAgICAg
ICAgcmV0dXJucyBhcmUgbmVlZGVkIGJlY2F1c2UgdGhlIHBvc2l0aW9uIHF1ZXJ5IGRvZXNuJ3Qg
d29yayBvbiBhCisgICAgICAgIE5VTEwgcGlwZWxpbmUuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNoYW5nZVBpcGVsaW5lU3RhdGUpOgorICAgICAgICBS
ZWZhY3RvcmVkIHRvIHVzZSBhbiBlYXJseSByZXR1cm4uCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByZXBhcmVUb1BsYXkpOiBSZXNldCB0aGUKKyAgICAg
ICAgc2Vla2luZyBmbGFnLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpwbGF5KTogcmVzZXQgbV9pc0VuZFJlYWNoZWQuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhdXNlKTogRG9uJ3QgcGF1c2Ugb24gRU9TLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKTogUmVm
YWN0b3IsIGNhbGwKKyAgICAgICAgY3VycmVudFRpbWUoKSBhZnRlciB3ZSdyZSBzdXJlIHBsYXli
aW4gaXMgdmFsaWQgYW5kIG5vIGVycm9yIG9jY3VyZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhdXNlZCk6IEZha2UgcGF1c2VkIHN0YXRlCisgICAg
ICAgIG9uIEVPUy4KKwogMjAxMi0wOC0yOSAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBBWDogQ2FudmFzIHNob3VsZCBoYXZlIGEgZGlzdGluY3Qgcm9s
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZmY0YjkwYS4u
ZGNmODI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00
NDE4LDYgKzQ0MTgsMTEgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcklzUGF1
c2VkKCkgY29uc3QKICAgICByZXR1cm4gcGF1c2VkKCk7CiB9CiAKK2Jvb2wgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJJc0xvb3BpbmcoKSBjb25zdAoreworICAgIHJldHVybiBsb29wKCk7
Cit9CisKIEhvc3RXaW5kb3cqIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySG9zdFdpbmRv
dygpCiB7CiAgICAgcmV0dXJuIG1lZGlhUGxheWVyT3duaW5nRG9jdW1lbnQoKS0+dmlldygpLT5o
b3N0V2luZG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGY2
ZTMxZTYuLjBkODk3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC00MzAsNiArNDMwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJQ
YXVzZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclBsYXkoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzTG9vcGluZygpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgSG9zdFdpbmRvdyogbWVkaWFQbGF5ZXJIb3N0V2luZG93KCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBJbnRSZWN0IG1lZGlhUGxheWVyV2luZG93Q2xpcFJlY3QoKSBP
VkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKaW5kZXggZWFjMzQ1Yy4uMjBlY2RkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0xOTcsNiArMTk3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclBhdXNlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyUGxheSgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzUGF1
c2VkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXll
cklzTG9vcGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBIb3N0V2lu
ZG93KiBtZWRpYVBsYXllckhvc3RXaW5kb3coKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBJ
bnRSZWN0IG1lZGlhUGxheWVyV2luZG93Q2xpcFJlY3QoKSB7IHJldHVybiBJbnRSZWN0KCk7IH0K
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmlu
ZGV4IGFkZjU1NWYuLjI0OTc1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yMTEsNiArMjExLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoTWVkaWFQbGF5ZXIqIHBsYXll
cikKICAgICAsIG1fc2Vla1RpbWUoMCkKICAgICAsIG1fY2hhbmdpbmdSYXRlKGZhbHNlKQogICAg
ICwgbV9lbmRUaW1lKG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSkKKyAgICAsIG1f
aXNFbmRSZWFjaGVkKGZhbHNlKQogICAgICwgbV9uZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6OkVt
cHR5KQogICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykKICAgICAs
IG1faXNTdHJlYW1pbmcoZmFsc2UpCkBAIC0zMzMsNiArMzM0LDE3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpjb21taXRMb2FkKCkKIAogZmxvYXQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpwbGF5YmFja1Bvc2l0aW9uKCkgY29uc3QKIHsKKyAgICBpZiAobV9pc0Vu
ZFJlYWNoZWQpIHsKKyAgICAgICAgLy8gUG9zaXRpb24gcXVlcmllcyBvbiBhIG51bGwgcGlwZWxp
bmUgcmV0dXJuIDAuIElmIHdlJ3JlIGF0CisgICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIHN0cmVh
bSB0aGUgcGlwZWxpbmUgaXMgbnVsbCBidXQgd2Ugd2FudCB0bworICAgICAgICAvLyByZXBvcnQg
ZWl0aGVyIHRoZSBzZWVrIHRpbWUgb3IgdGhlIGR1cmF0aW9uIGJlY2F1c2UgdGhpcyBpcworICAg
ICAgICAvLyB3aGF0IHRoZSBNZWRpYSBlbGVtZW50IHNwZWMgZXhwZWN0cyB1cyB0byBkby4KKyAg
ICAgICAgaWYgKG1fc2Vla2luZykKKyAgICAgICAgICAgIHJldHVybiBtX3NlZWtUaW1lOworICAg
ICAgICBpZiAobV9tZWRpYUR1cmF0aW9uKQorICAgICAgICAgICAgcmV0dXJuIG1fbWVkaWFEdXJh
dGlvbjsKKyAgICB9CisKICAgICBmbG9hdCByZXQgPSAwLjBmOwogCiAgICAgR3N0UXVlcnkqIHF1
ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19wb3NpdGlvbihHU1RfRk9STUFUX1RJTUUpOwpAQCAtMzY1LDEz
ICszNzcsMTUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNoYW5nZVBpcGVs
aW5lU3RhdGUoR3N0U3RhdGUgbmV3U3RhdGUpCiAgICAgR3N0U3RhdGUgcGVuZGluZzsKIAogICAg
IGdzdF9lbGVtZW50X2dldF9zdGF0ZShtX3BsYXlCaW4sICZjdXJyZW50U3RhdGUsICZwZW5kaW5n
LCAwKTsKLSAgICBpZiAoY3VycmVudFN0YXRlICE9IG5ld1N0YXRlICYmIHBlbmRpbmcgIT0gbmV3
U3RhdGUpIHsKLSAgICAgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0ID0gZ3N0X2VsZW1lbnRf
c2V0X3N0YXRlKG1fcGxheUJpbiwgbmV3U3RhdGUpOwotICAgICAgICBHc3RTdGF0ZSBwYXVzZWRP
clBsYXlpbmcgPSBuZXdTdGF0ZSA9PSBHU1RfU1RBVEVfUExBWUlORyA/IEdTVF9TVEFURV9QQVVT
RUQgOiBHU1RfU1RBVEVfUExBWUlORzsKLSAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZSAhPSBwYXVz
ZWRPclBsYXlpbmcgJiYgcmV0ID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgewotICAgICAg
ICAgICAgbG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6RW1wdHkpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgTE9HX01FRElBX01FU1NBR0UoIkN1cnJlbnQgc3Rh
dGU6ICVzLCBwZW5kaW5nOiAlcyIsIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKGN1cnJlbnRT
dGF0ZSksIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKKyAgICBpZiAoY3Vy
cmVudFN0YXRlID09IG5ld1N0YXRlIHx8IHBlbmRpbmcgPT0gbmV3U3RhdGUpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gc2V0U3RhdGVSZXN1bHQgPSBn
c3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBuZXdTdGF0ZSk7CisgICAgR3N0U3RhdGUg
cGF1c2VkT3JQbGF5aW5nID0gbmV3U3RhdGUgPT0gR1NUX1NUQVRFX1BMQVlJTkcgPyBHU1RfU1RB
VEVfUEFVU0VEIDogR1NUX1NUQVRFX1BMQVlJTkc7CisgICAgaWYgKGN1cnJlbnRTdGF0ZSAhPSBw
YXVzZWRPclBsYXlpbmcgJiYgc2V0U3RhdGVSZXN1bHQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlM
VVJFKSB7CisgICAgICAgIGxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkVtcHR5KTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM3OSw2ICsz
OTMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlUGlwZWxpbmVT
dGF0ZShHc3RTdGF0ZSBuZXdTdGF0ZSkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpwcmVwYXJlVG9QbGF5KCkKIHsKICAgICBtX2lzRW5kUmVhY2hlZCA9IGZhbHNlOworICAgIG1f
c2Vla2luZyA9IGZhbHNlOwogCiAgICAgaWYgKG1fZGVsYXlpbmdMb2FkKSB7CiAgICAgICAgIG1f
ZGVsYXlpbmdMb2FkID0gZmFsc2U7CkBAIC0zODgsMTIgKzQwMywxNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJlcGFyZVRvUGxheSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwbGF5KCkKIHsKLSAgICBpZiAoY2hhbmdlUGlwZWxpbmVTdGF0ZShH
U1RfU1RBVEVfUExBWUlORykpCisgICAgaWYgKGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRF
X1BMQVlJTkcpKSB7CisgICAgICAgIG1faXNFbmRSZWFjaGVkID0gZmFsc2U7CiAgICAgICAgIExP
R19NRURJQV9NRVNTQUdFKCJQbGF5Iik7CisgICAgfQogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cGF1c2UoKQogeworICAgIGlmIChtX2lzRW5kUmVhY2hlZCkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgaWYgKGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BBVVNF
RCkpCiAgICAgICAgIExPR19NRURJQV9NRVNTQUdFKCJQYXVzZSIpOwogfQpAQCAtNDU3LDE2ICs0
NzcsMTggQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjdXJyZW50VGltZSgp
IGNvbnN0CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZWVrKGZsb2F0IHRp
bWUpCiB7Ci0gICAgLy8gQXZvaWQgdXNlbGVzcyBzZWVraW5nLgotICAgIGlmICh0aW1lID09IHBs
YXliYWNrUG9zaXRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFtX3BsYXlCaW4p
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2Vycm9yT2NjdXJlZCkKICAgICAgICAgcmV0
dXJuOwogCisgICAgTE9HX01FRElBX01FU1NBR0UoIlNlZWsgYXR0ZW1wdCB0byAlZiBzZWNzIiwg
dGltZSk7CisKKyAgICAvLyBBdm9pZCB1c2VsZXNzIHNlZWtpbmcuCisgICAgaWYgKHRpbWUgPT0g
Y3VycmVudFRpbWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gRXh0cmFjdCB0aGUgaW50
ZWdlciBwYXJ0IG9mIHRoZSB0aW1lIChzZWNvbmRzKSBhbmQgdGhlCiAgICAgLy8gZnJhY3Rpb25h
bCBwYXJ0IChtaWNyb3NlY29uZHMpLiBBdHRlbXB0IHRvIHJvdW5kIHRoZQogICAgIC8vIG1pY3Jv
c2Vjb25kcyBzbyBubyBmbG9hdGluZyBwb2ludCBwcmVjaXNpb24gaXMgbG9zdCBhbmQgd2UgY2Fu
CkBAIC00OTQsNiArNTE2LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpz
ZWVrKGZsb2F0IHRpbWUpCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVz
ZWQoKSBjb25zdAogeworICAgIGlmIChtX2lzRW5kUmVhY2hlZCkgeworICAgICAgICBMT0dfTUVE
SUFfTUVTU0FHRSgiSWdub3JpbmcgcGF1c2UgYXQgRU9TIik7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKwogICAgIEdzdFN0YXRlIHN0YXRlOwogICAgIGdzdF9lbGVtZW50X2dldF9zdGF0
ZShtX3BsYXlCaW4sICZzdGF0ZSwgMCwgMCk7CiAgICAgcmV0dXJuIHN0YXRlID09IEdTVF9TVEFU
RV9QQVVTRUQ7CkBAIC0xMTM0LDggKzExNjEsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAgICAgIC8vIENhY2hlIHRoZSBkdXJhdGlv
biB3aXRob3V0IGVtaXRpbmcgdGhlIGR1cmF0aW9uY2hhbmdlCiAgICAgICAgICAgICAvLyBldmVu
dCBiZWNhdXNlIGl0J3MgdGFrZW4gY2FyZSBvZiBieSB0aGUgbWVkaWEgZWxlbWVudAogICAgICAg
ICAgICAgLy8gaW4gdGhpcyBwcmVjaXNlIGNhc2UuCi0gICAgICAgICAgICBjYWNoZUR1cmF0aW9u
KCk7Ci0gICAgICAgIH0gZWxzZSBpZiAobWF4VGltZUxvYWRlZCgpID09IGR1cmF0aW9uKCkpIHsK
KyAgICAgICAgICAgIGlmICghbV9pc0VuZFJlYWNoZWQpCisgICAgICAgICAgICAgICAgY2FjaGVE
dXJhdGlvbigpOworICAgICAgICB9IGVsc2UgaWYgKChzdGF0ZSA9PSBHU1RfU1RBVEVfTlVMTCkg
fHwgKG1heFRpbWVMb2FkZWQoKSA9PSBkdXJhdGlvbigpKSkgewogICAgICAgICAgICAgbV9uZXR3
b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkOwogICAgICAgICAgICAgbV9yZWFkeVN0YXRl
ID0gTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhOwogICAgICAgICB9IGVsc2UgewpAQCAtMTM5
OSwxOSArMTQyNywyMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dGltZUNo
YW5nZWQoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlkRW5kKCkKIHsK
LSAgICAvLyBFT1Mgd2FzIHJlYWNoZWQgYnV0IHRoZSBwb3NpdGlvbiBpcyBub3QgYWx3YXlzIDAg
aW4gY2FzZSBvZgotICAgIC8vIHJldmVyc2UgcGxheWJhY2suIFNvIHRvIG5vdCBjb25mdXNlIHRo
ZSBIVE1MTWVkaWFFbGVtZW50LCB3ZQotICAgIC8vIHN5bmNocm9uaXplIHBvc2l0aW9uIGFuZCBk
dXJhdGlvbiB2YWx1ZXMuCisgICAgLy8gU3luY2hyb25pemUgcG9zaXRpb24gYW5kIGR1cmF0aW9u
IHZhbHVlcyB0byBub3QgY29uZnVzZSB0aGUKKyAgICAvLyBIVE1MTWVkaWFFbGVtZW50LiBJbiBz
b21lIGNhc2VzIGxpa2UgcmV2ZXJzZSBwbGF5YmFjayB0aGUKKyAgICAvLyBwb3NpdGlvbiBpcyBu
b3QgYWx3YXlzIHJlcG9ydGVkIGFzIDAgZm9yIGluc3RhbmNlLgogICAgIGZsb2F0IG5vdyA9IGN1
cnJlbnRUaW1lKCk7Ci0gICAgaWYgKG5vdyA+IDAgJiYgbV9wbGF5YmFja1JhdGUgPCAwKSB7Ci0g
ICAgICAgIG1fbWVkaWFEdXJhdGlvbiA9IG5vdzsKKyAgICBpZiAobm93ID4gMCAmJiBub3cgPD0g
ZHVyYXRpb24oKSAmJiBtX21lZGlhRHVyYXRpb24gIT0gbm93KSB7CiAgICAgICAgIG1fbWVkaWFE
dXJhdGlvbktub3duID0gdHJ1ZTsKKyAgICAgICAgbV9tZWRpYUR1cmF0aW9uID0gbm93OwogICAg
ICAgICBtX3BsYXllci0+ZHVyYXRpb25DaGFuZ2VkKCk7CiAgICAgfQogCiAgICAgbV9pc0VuZFJl
YWNoZWQgPSB0cnVlOwotCiAgICAgdGltZUNoYW5nZWQoKTsKKworICAgIGlmICghbV9wbGF5ZXIt
Pm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVySXNMb29waW5nKCkpIHsKKyAgICAgICAg
bV9wYXVzZWQgPSB0cnVlOworICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5Qmlu
LCBHU1RfU1RBVEVfTlVMTCk7CisgICAgfQogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y2FjaGVEdXJhdGlvbigpCi0tIAoxLjcuMTAuNA==
</data>
<flag name="review"
          id="171886"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163927</attachid>
            <date>2012-09-13 12:01:36 -0700</date>
            <delta_ts>2012-09-13 12:01:36 -0700</delta_ts>
            <desc>Backport for 1.9 branch</desc>
            <filename>audioclose3.patch</filename>
            <type>text/plain</type>
            <size>9947</size>
            <attacher name="Daniel Drake">dsd</attacher>
            
              <data encoding="base64">SW5kZXg6IHdlYmtpdC0xLjkuOTEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHdlYmtpdC0xLjkuOTEub3JpZy9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIHdlYmtp
dC0xLjkuOTEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTIt
MDgtMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHU3RyZWFtZXJdIEF1ZGlvIGRldmljZSBub3QgY2xvc2VkIGFmdGVyIHBsYXlpbmcgc291bmQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MTIyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgorCisgICAgICAgIFNldCB0aGUg
R1N0cmVhbWVyIHBpcGVsaW5lIHRvIE5VTEwgaW5zdGVhZCBvZiBQQVVTRUQgb24gRU9TLiBUaGlz
CisgICAgICAgIGFsbG93cyB0aGUgYXVkaW8tc2luayB0byByZWxlYXNlIGl0cyBjb25uZWN0aW9u
IHRvIHRoZSBhdWRpbworICAgICAgICBkZXZpY2UuIFRoaXMgaXMgZG9uZSBvbmx5IGlmIHRoZSBN
ZWRpYSBlbGVtZW50IGlzIG5vdAorICAgICAgICBsb29waW5nLiBUbyBtYWtlIHRoZSBNZWRpYVBs
YXllclByaXZhdGUgbGF5ZXIgYXdhcmUgb2YgdGhhdAorICAgICAgICBpbmZvcm1hdGlvbiB0aGUg
TWVkaWFQbGF5ZXJDbGllbnQgaW50ZXJmYWNlIHdhcyB1cGRhdGVkIHdpdGggYSBuZXcKKyAgICAg
ICAgbWV0aG9kIG1lZGlhUGxheWVySXNMb29waW5nLCBpbXBsZW1lbnRlZCBieSB0aGUgSFRNTE1l
ZGlhRWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcklzTG9vcGluZyk6IElt
cGxlbWVudGF0aW9uIG9mCisgICAgICAgIE1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckxv
b3AsIHByb3hpZXMgdG8gOjpsb29wKCk7CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
Lmg6CisgICAgICAgIChIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6
Om1lZGlhUGxheWVySXNMb29waW5nKTogTmV3IG1ldGhvZCBhbGxvd2luZworICAgICAgICB0aGUg
TWVkaWFQbGF5ZXIgYW5kIGl0cyBiYWNrZW5kIHRvIGtub3cgaWYgYSBwbGF5YmFjayBsb29wIGlz
CisgICAgICAgIHJlcXVlc3RlZCBieSB0aGUgY2xpZW50LgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpwbGF5YmFja1Bvc2l0aW9uKTogUmVwb3J0CisgICAgICAgIHNlZWsgdGltZSBvciBtZWRp
YSBkdXJhdGlvbiBpZiBFT1Mgd2FzIHJlYWNoZWQuIFRoZXNlIGVhcmx5CisgICAgICAgIHJldHVy
bnMgYXJlIG5lZWRlZCBiZWNhdXNlIHRoZSBwb3NpdGlvbiBxdWVyeSBkb2Vzbid0IHdvcmsgb24g
YQorICAgICAgICBOVUxMIHBpcGVsaW5lLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpjaGFuZ2VQaXBlbGluZVN0YXRlKToKKyAgICAgICAgUmVmYWN0b3Jl
ZCB0byB1c2UgYW4gZWFybHkgcmV0dXJuLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwcmVwYXJlVG9QbGF5KTogUmVzZXQgdGhlCisgICAgICAgIHNlZWtp
bmcgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cGxheSk6IHJlc2V0IG1faXNFbmRSZWFjaGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXVzZSk6IERvbid0IHBhdXNlIG9uIEVPUy4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2Vlayk6IFJlZmFjdG9yLCBj
YWxsCisgICAgICAgIGN1cnJlbnRUaW1lKCkgYWZ0ZXIgd2UncmUgc3VyZSBwbGF5YmluIGlzIHZh
bGlkIGFuZCBubyBlcnJvciBvY2N1cmVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwYXVzZWQpOiBGYWtlIHBhdXNlZCBzdGF0ZQorICAgICAgICBvbiBF
T1MuCisKIDIwMTItMDgtMjkgIEpvc8OpIERhcGVuYSBQYXogIDxqZGFwZW5hQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0d0a10gUHJvY2VzcyBHdGsgMy40IHNtb290aCBzY3JvbGwgZXZlbnRzIHBy
b3Blcmx5LgpJbmRleDogd2Via2l0LTEuOS45MS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHdlYmtpdC0xLjkuOTEub3JpZy9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyB3ZWJraXQtMS45LjkxL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTQzODIsNSArNDM4MiwxMCBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUJlaGF2aW9yc1JlCiAgICAgbV9yZXN0cmljdGlv
bnMgPSBOb1Jlc3RyaWN0aW9uczsKIH0KIAorYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllcklzTG9vcGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGxvb3AoKTsKK30KKwogfQogI2Vu
ZGlmCkluZGV4OiB3ZWJraXQtMS45LjkxL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHdlYmtpdC0xLjkuOTEub3JpZy9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgd2Via2l0LTEuOS45MS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNDIyLDYgKzQyMiw4IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIG1lZGlhUGxheWVyTmVlZHNTaXRlU3BlY2lmaWNIYWNrcygpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyRG9jdW1lbnRIb3N0KCkgY29u
c3QgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc0xvb3BpbmcoKSBj
b25zdCBPVkVSUklERTsKKwogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikK
ICAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogbWVkaWFQbGF5ZXJHcmFwaGljc0Rl
dmljZUFkYXB0ZXIoY29uc3QgTWVkaWFQbGF5ZXIqKSBjb25zdCBPVkVSUklERTsKICNlbmRpZgpJ
bmRleDogd2Via2l0LTEuOS45MS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHdlYmtpdC0xLjkuOTEub3JpZy9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyB3ZWJraXQtMS45LjkxL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTE4OSw2ICsxODks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNv
bnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJV
c2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgQ09SU01v
ZGUgbWVkaWFQbGF5ZXJDT1JTTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFVuc3BlY2lmaWVkOyB9Cisg
ICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVySXNMb29waW5nKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIH07CiAKIGNsYXNzIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50IHsKSW5kZXg6
IHdlYmtpdC0xLjkuOTEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gd2Via2l0LTEu
OS45MS5vcmlnL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyB3ZWJraXQtMS45LjkxL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0yMTEsNiArMjExLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpN
ZWRpYVBsYXllcgogICAgICwgbV9zZWVrVGltZSgwKQogICAgICwgbV9jaGFuZ2luZ1JhdGUoZmFs
c2UpCiAgICAgLCBtX2VuZFRpbWUobnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpKQor
ICAgICwgbV9pc0VuZFJlYWNoZWQoZmFsc2UpCiAgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBs
YXllcjo6RW1wdHkpCiAgICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5n
KQogICAgICwgbV9pc1N0cmVhbWluZyhmYWxzZSkKQEAgLTMzMyw2ICszMzQsMTcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvbW1pdAogCiBmbG9hdCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnBsYXliYWNrUG9zaXRpb24oKSBjb25zdAogeworICAgIGlmIChtX2lz
RW5kUmVhY2hlZCkgeworICAgICAgICAvLyBQb3NpdGlvbiBxdWVyaWVzIG9uIGEgbnVsbCBwaXBl
bGluZSByZXR1cm4gMC4gSWYgd2UncmUgYXQKKyAgICAgICAgLy8gdGhlIGVuZCBvZiB0aGUgc3Ry
ZWFtIHRoZSBwaXBlbGluZSBpcyBudWxsIGJ1dCB3ZSB3YW50IHRvCisgICAgICAgIC8vIHJlcG9y
dCBlaXRoZXIgdGhlIHNlZWsgdGltZSBvciB0aGUgZHVyYXRpb24gYmVjYXVzZSB0aGlzIGlzCisg
ICAgICAgIC8vIHdoYXQgdGhlIE1lZGlhIGVsZW1lbnQgc3BlYyBleHBlY3RzIHVzIHRvIGRvLgor
ICAgICAgICBpZiAobV9zZWVraW5nKQorICAgICAgICAgICAgcmV0dXJuIG1fc2Vla1RpbWU7Cisg
ICAgICAgIGlmIChtX21lZGlhRHVyYXRpb24pCisgICAgICAgICAgICByZXR1cm4gbV9tZWRpYUR1
cmF0aW9uOworICAgIH0KKwogICAgIGZsb2F0IHJldCA9IDAuMGY7CiAKICAgICBHc3RRdWVyeSog
cXVlcnkgPSBnc3RfcXVlcnlfbmV3X3Bvc2l0aW9uKEdTVF9GT1JNQVRfVElNRSk7CkBAIC0zNjUs
MTMgKzM3NywxNSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2hhbmdlCiAg
ICAgR3N0U3RhdGUgcGVuZGluZzsKIAogICAgIGdzdF9lbGVtZW50X2dldF9zdGF0ZShtX3BsYXlC
aW4sICZjdXJyZW50U3RhdGUsICZwZW5kaW5nLCAwKTsKLSAgICBpZiAoY3VycmVudFN0YXRlICE9
IG5ld1N0YXRlICYmIHBlbmRpbmcgIT0gbmV3U3RhdGUpIHsKLSAgICAgICAgR3N0U3RhdGVDaGFu
Z2VSZXR1cm4gcmV0ID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJpbiwgbmV3U3RhdGUp
OwotICAgICAgICBHc3RTdGF0ZSBwYXVzZWRPclBsYXlpbmcgPSBuZXdTdGF0ZSA9PSBHU1RfU1RB
VEVfUExBWUlORyA/IEdTVF9TVEFURV9QQVVTRUQgOiBHU1RfU1RBVEVfUExBWUlORzsKLSAgICAg
ICAgaWYgKGN1cnJlbnRTdGF0ZSAhPSBwYXVzZWRPclBsYXlpbmcgJiYgcmV0ID09IEdTVF9TVEFU
RV9DSEFOR0VfRkFJTFVSRSkgewotICAgICAgICAgICAgbG9hZGluZ0ZhaWxlZChNZWRpYVBsYXll
cjo6RW1wdHkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgTE9H
X01FRElBX01FU1NBR0UoIkN1cnJlbnQgc3RhdGU6ICVzLCBwZW5kaW5nOiAlcyIsIGdzdF9lbGVt
ZW50X3N0YXRlX2dldF9uYW1lKGN1cnJlbnRTdGF0ZSksIGdzdF9lbGVtZW50X3N0YXRlX2dldF9u
YW1lKHBlbmRpbmcpKTsKKyAgICBpZiAoY3VycmVudFN0YXRlID09IG5ld1N0YXRlIHx8IHBlbmRp
bmcgPT0gbmV3U3RhdGUpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgR3N0U3RhdGVDaGFu
Z2VSZXR1cm4gc2V0U3RhdGVSZXN1bHQgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5Qmlu
LCBuZXdTdGF0ZSk7CisgICAgR3N0U3RhdGUgcGF1c2VkT3JQbGF5aW5nID0gbmV3U3RhdGUgPT0g
R1NUX1NUQVRFX1BMQVlJTkcgPyBHU1RfU1RBVEVfUEFVU0VEIDogR1NUX1NUQVRFX1BMQVlJTkc7
CisgICAgaWYgKGN1cnJlbnRTdGF0ZSAhPSBwYXVzZWRPclBsYXlpbmcgJiYgc2V0U3RhdGVSZXN1
bHQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSB7CisgICAgICAgIGxvYWRpbmdGYWlsZWQo
TWVkaWFQbGF5ZXI6OkVtcHR5KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTM3OSw2ICszOTMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6Y2hhbmdlCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJl
cGFyZVRvUGxheSgpCiB7CiAgICAgbV9pc0VuZFJlYWNoZWQgPSBmYWxzZTsKKyAgICBtX3NlZWtp
bmcgPSBmYWxzZTsKIAogICAgIGlmIChtX2RlbGF5aW5nTG9hZCkgewogICAgICAgICBtX2RlbGF5
aW5nTG9hZCA9IGZhbHNlOwpAQCAtMzg4LDEyICs0MDMsMTcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnByZXBhcgogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6cGxheSgpCiB7Ci0gICAgaWYgKGNoYW5nZVBpcGVsaW5lU3RhdGUoR1NUX1NUQVRFX1BMQVlJ
TkcpKQorICAgIGlmIChjaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QTEFZSU5HKSkgewor
ICAgICAgICBtX2lzRW5kUmVhY2hlZCA9IGZhbHNlOwogICAgICAgICBMT0dfTUVESUFfTUVTU0FH
RSgiUGxheSIpOworICAgIH0KIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnBhdXNlKCkKIHsKKyAgICBpZiAobV9pc0VuZFJlYWNoZWQpCisgICAgICAgIHJldHVybjsKKwog
ICAgIGlmIChjaGFuZ2VQaXBlbGluZVN0YXRlKEdTVF9TVEFURV9QQVVTRUQpKQogICAgICAgICBM
T0dfTUVESUFfTUVTU0FHRSgiUGF1c2UiKTsKIH0KQEAgLTQ1NywxNiArNDc3LDE4IEBAIGZsb2F0
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3VycmUKIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnNlZWsoZmxvYXQgdGltZSkKIHsKLSAgICAvLyBBdm9pZCB1c2VsZXNz
IHNlZWtpbmcuCi0gICAgaWYgKHRpbWUgPT0gcGxheWJhY2tQb3NpdGlvbigpKQotICAgICAgICBy
ZXR1cm47Ci0KICAgICBpZiAoIW1fcGxheUJpbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1fZXJyb3JPY2N1cmVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBMT0dfTUVESUFfTUVTU0FH
RSgiU2VlayBhdHRlbXB0IHRvICVmIHNlY3MiLCB0aW1lKTsKKworICAgIC8vIEF2b2lkIHVzZWxl
c3Mgc2Vla2luZy4KKyAgICBpZiAodGltZSA9PSBjdXJyZW50VGltZSgpKQorICAgICAgICByZXR1
cm47CisKICAgICAvLyBFeHRyYWN0IHRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhlIHRpbWUgKHNlY29u
ZHMpIGFuZCB0aGUKICAgICAvLyBmcmFjdGlvbmFsIHBhcnQgKG1pY3Jvc2Vjb25kcykuIEF0dGVt
cHQgdG8gcm91bmQgdGhlCiAgICAgLy8gbWljcm9zZWNvbmRzIHNvIG5vIGZsb2F0aW5nIHBvaW50
IHByZWNpc2lvbiBpcyBsb3N0IGFuZCB3ZSBjYW4KQEAgLTQ5NCw2ICs1MTYsMTEgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNlZWsoZgogCiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cGF1c2VkKCkgY29uc3QKIHsKKyAgICBpZiAobV9pc0VuZFJlYWNoZWQp
IHsKKyAgICAgICAgTE9HX01FRElBX01FU1NBR0UoIklnbm9yaW5nIHBhdXNlIGF0IEVPUyIpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBHc3RTdGF0ZSBzdGF0ZTsKICAgICBn
c3RfZWxlbWVudF9nZXRfc3RhdGUobV9wbGF5QmluLCAmc3RhdGUsIDAsIDApOwogICAgIHJldHVy
biBzdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VEOwpAQCAtMTEzNCw4ICsxMTYxLDkgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZQogICAgICAgICAgICAgLy8gQ2FjaGUg
dGhlIGR1cmF0aW9uIHdpdGhvdXQgZW1pdGluZyB0aGUgZHVyYXRpb25jaGFuZ2UKICAgICAgICAg
ICAgIC8vIGV2ZW50IGJlY2F1c2UgaXQncyB0YWtlbiBjYXJlIG9mIGJ5IHRoZSBtZWRpYSBlbGVt
ZW50CiAgICAgICAgICAgICAvLyBpbiB0aGlzIHByZWNpc2UgY2FzZS4KLSAgICAgICAgICAgIGNh
Y2hlRHVyYXRpb24oKTsKLSAgICAgICAgfSBlbHNlIGlmIChtYXhUaW1lTG9hZGVkKCkgPT0gZHVy
YXRpb24oKSkgeworICAgICAgICAgICAgaWYgKCFtX2lzRW5kUmVhY2hlZCkKKyAgICAgICAgICAg
ICAgICBjYWNoZUR1cmF0aW9uKCk7CisgICAgICAgIH0gZWxzZSBpZiAoKHN0YXRlID09IEdTVF9T
VEFURV9OVUxMKSB8fCAobWF4VGltZUxvYWRlZCgpID09IGR1cmF0aW9uKCkpKSB7CiAgICAgICAg
ICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkZWQ7CiAgICAgICAgICAgICBt
X3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CiAgICAgICAgIH0gZWxz
ZSB7CkBAIC0xMzk5LDE5ICsxNDI3LDIzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjp0aW1lQ2gKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRpZEVuZCgp
CiB7Ci0gICAgLy8gRU9TIHdhcyByZWFjaGVkIGJ1dCB0aGUgcG9zaXRpb24gaXMgbm90IGFsd2F5
cyAwIGluIGNhc2Ugb2YKLSAgICAvLyByZXZlcnNlIHBsYXliYWNrLiBTbyB0byBub3QgY29uZnVz
ZSB0aGUgSFRNTE1lZGlhRWxlbWVudCwgd2UKLSAgICAvLyBzeW5jaHJvbml6ZSBwb3NpdGlvbiBh
bmQgZHVyYXRpb24gdmFsdWVzLgorICAgIC8vIFN5bmNocm9uaXplIHBvc2l0aW9uIGFuZCBkdXJh
dGlvbiB2YWx1ZXMgdG8gbm90IGNvbmZ1c2UgdGhlCisgICAgLy8gSFRNTE1lZGlhRWxlbWVudC4g
SW4gc29tZSBjYXNlcyBsaWtlIHJldmVyc2UgcGxheWJhY2sgdGhlCisgICAgLy8gcG9zaXRpb24g
aXMgbm90IGFsd2F5cyByZXBvcnRlZCBhcyAwIGZvciBpbnN0YW5jZS4KICAgICBmbG9hdCBub3cg
PSBjdXJyZW50VGltZSgpOwotICAgIGlmIChub3cgPiAwICYmIG1fcGxheWJhY2tSYXRlIDwgMCkg
ewotICAgICAgICBtX21lZGlhRHVyYXRpb24gPSBub3c7CisgICAgaWYgKG5vdyA+IDAgJiYgbm93
IDw9IGR1cmF0aW9uKCkgJiYgbV9tZWRpYUR1cmF0aW9uICE9IG5vdykgewogICAgICAgICBtX21l
ZGlhRHVyYXRpb25Lbm93biA9IHRydWU7CisgICAgICAgIG1fbWVkaWFEdXJhdGlvbiA9IG5vdzsK
ICAgICAgICAgbV9wbGF5ZXItPmR1cmF0aW9uQ2hhbmdlZCgpOwogICAgIH0KIAogICAgIG1faXNF
bmRSZWFjaGVkID0gdHJ1ZTsKLQogICAgIHRpbWVDaGFuZ2VkKCk7CisKKyAgICBpZiAoIW1fcGxh
eWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllcklzTG9vcGluZygpKSB7CisgICAg
ICAgIG1fcGF1c2VkID0gdHJ1ZTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxh
eUJpbiwgR1NUX1NUQVRFX05VTEwpOworICAgIH0KIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmNhY2hlRHVyYXRpb24oKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>