<?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>90084</bug_id>
          
          <creation_ts>2012-06-27 10:48:34 -0700</creation_ts>
          <short_desc>[GStreamer] Live stream support is weak</short_desc>
          <delta_ts>2012-07-31 10:19:28 -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>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.youtube.com/live</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="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>calvaris</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>guijemont</cc>
    
    <cc>gustavo</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>sh919.park</cc>
    
    <cc>spena</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>658705</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-06-27 10:48:34 -0700</bug_when>
    <thetext>For instance Youtube live streams don&apos;t play at all unless on-disk bufferring is disabled (see ::setPreload()).

If that&apos;s disabled, one can see the live stream and pause it. But not resume it (this needs investigation, looks like we attempt a seek and that fails).
Additionally we should also implement ::movieLoadType() (needs investigation).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658741</commentid>
    <comment_count>1</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-06-27 11:35:56 -0700</bug_when>
    <thetext>*** Bug 90086 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659342</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Pena">spena</who>
    <bug_when>2012-06-28 01:53:27 -0700</bug_when>
    <thetext>(In reply to comment #0)
[...] 
&gt; If that&apos;s disabled, one can see the live stream and pause it. But not resume it (this needs investigation, looks like we attempt a seek and that fails).
&gt; Additionally we should also implement ::movieLoadType() (needs investigation).

This failing seek feels somehow related with bug #85994, where the seek operations were implemented based on Ranged Requests, so when the server didn&apos;t reply with a 206 status code, our player would fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659557</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-06-28 09:30:18 -0700</bug_when>
    <thetext>Sounds related indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659598</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-06-28 10:30:40 -0700</bug_when>
    <thetext>In webkitwebsrc we should also configure appsrc for GST_APP_STREAM_TYPE_STREAM instead of _SEEKABLE for live sources, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664429</commentid>
    <comment_count>5</comment_count>
      <attachid>151150</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-07-07 17:37:30 -0700</bug_when>
    <thetext>Created attachment 151150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664430</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-07-07 17:39:33 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; In webkitwebsrc we should also configure appsrc for GST_APP_STREAM_TYPE_STREAM instead of _SEEKABLE for live sources, I think.

Oh well, not sure this is needed.
I got the Youtube live streams to play/pause/resume with the attached patch, without breaking on-disk buffering for non-live media, hopefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664439</commentid>
    <comment_count>7</comment_count>
      <attachid>151150</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-07-07 19:04:55 -0700</bug_when>
    <thetext>Comment on attachment 151150
Patch

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

Great! I&apos;m not quite sure I understand all these changes yet, so I&apos;m not going to flip the flags. I have a few comments though.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1444
&gt; +    // We need to know the total amount of bytes occupied by the
&gt; +    // media, especially if on-disk buffering is requested.

You can let this comment flow.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1448
&gt; +    if (attemptTotalBytesCache &amp;&amp; cacheTotalBytes() &amp;&amp; totalBytes() &amp;&amp; !isLiveStream() &amp;&amp; m_initialPreload == MediaPlayer::Auto) {
&gt; +        setPreload(m_initialPreload);
&gt; +        gst_element_set_state(m_playBin, GST_STATE_NULL);
&gt; +        gst_element_set_state(m_playBin, GST_STATE_PAUSED);

I&apos;m not exactly sure why you want to only cache the total bytes sometimes...

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:203
&gt; +            unsigned m_totalBytes;
&gt; +            bool m_totalBytesCached;

This should probably be called m_cachedTotalBytes, because at first I read it like &quot;The total bytes we have cached&quot; and the name I suggested is less ambiguous.

Even better is if you could find a way to eliminate m_totalBytesCached entirely, perhaps by initializing  m_totalBytes to -1 (perhaps make it a long).

Assuming you don&apos;t do that...an unsigned seems an odd type to use for some number of bytes. Perhaps size_t would be better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664443</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-07-07 20:02:13 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1448
&gt; &gt; +    if (attemptTotalBytesCache &amp;&amp; cacheTotalBytes() &amp;&amp; totalBytes() &amp;&amp; !isLiveStream() &amp;&amp; m_initialPreload == MediaPlayer::Auto) {
&gt; &gt; +        setPreload(m_initialPreload);
&gt; &gt; +        gst_element_set_state(m_playBin, GST_STATE_NULL);
&gt; &gt; +        gst_element_set_state(m_playBin, GST_STATE_PAUSED);
&gt; 
&gt; I&apos;m not exactly sure why you want to only cache the total bytes sometimes...
&gt; 

There&apos;s no need to cache it if durationChanged() is called during on-disk buffering, which can be done only if totalBytes() is non-null anyway.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:203
&gt; &gt; +            unsigned m_totalBytes;
&gt; &gt; +            bool m_totalBytesCached;
&gt; 
&gt; This should probably be called m_cachedTotalBytes, because at first I read it like &quot;The total bytes we have cached&quot; and the name I suggested is less ambiguous.
&gt; 

Oh yes, I didn&apos;t realize that ambiguation indeed.

&gt; Even better is if you could find a way to eliminate m_totalBytesCached entirely, perhaps by initializing  m_totalBytes to -1 (perhaps make it a long).
&gt; 
&gt; Assuming you don&apos;t do that...an unsigned seems an odd type to use for some number of bytes. Perhaps size_t would be better?

Hum, I&apos;ll give this some thoughts and testing. Thanks a lot for the initial feedback!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664455</commentid>
    <comment_count>9</comment_count>
      <attachid>151155</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-07-07 21:16:39 -0700</bug_when>
    <thetext>Created attachment 151155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668893</commentid>
    <comment_count>10</comment_count>
      <attachid>151155</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-07-13 05:05:49 -0700</bug_when>
    <thetext>Comment on attachment 151155
Patch

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

I very much agree with the general direction of this patch. I had to do the same thing for the N9 :)

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1434
&gt; +    if (m_preload == MediaPlayer::None &amp;&amp; m_initialPreload == MediaPlayer::Auto) {

I think it may be theoretically possible that you would access m_initialPreload uninitialized. Perhaps you should check for m_preloadSet here also?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672326</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-07-18 06:43:26 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 151155 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151155&amp;action=review
&gt; 
&gt; I very much agree with the general direction of this patch. I had to do the same thing for the N9 :)
&gt; 

Too bad I didn&apos;t see any patch in bugzilla! :/

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1434
&gt; &gt; +    if (m_preload == MediaPlayer::None &amp;&amp; m_initialPreload == MediaPlayer::Auto) {
&gt; 
&gt; I think it may be theoretically possible that you would access m_initialPreload uninitialized. Perhaps you should check for m_preloadSet here also?

Oh yes good point. I&apos;ll check this issue and update the patch. Thanks for the feedback!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673415</commentid>
    <comment_count>12</comment_count>
      <attachid>153237</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-07-19 05:44:27 -0700</bug_when>
    <thetext>Created attachment 153237
Patch

Only change is the one suggested by Simon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681542</commentid>
    <comment_count>13</comment_count>
      <attachid>153237</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-07-29 03:18:44 -0700</bug_when>
    <thetext>Comment on attachment 153237
Patch

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

This looks good, but based on our in-person discussion it seems like this can be simplified a bit.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:227
&gt; -    , m_preload(MediaPlayer::Auto)
&gt; +    , m_preload(MediaPlayer::None)

It seems that this may be unnecessary based on our conversations yesterday...

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1431
&gt;  {
&gt; +

This seems like it was added accidentally.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1449
&gt; +    if (m_preload == MediaPlayer::None &amp;&amp; m_preloadSet &amp;&amp; m_initialPreload == MediaPlayer::Auto) {
&gt; +        m_totalBytes = -1;
&gt; +        if (totalBytes() &amp;&amp; !isLiveStream()) {
&gt; +            setPreload(m_initialPreload);
&gt; +            gst_element_set_state(m_playBin, GST_STATE_NULL);
&gt; +            gst_element_set_state(m_playBin, GST_STATE_PAUSED);
&gt; +        }
&gt; +    }
&gt;  }

Perhaps roll these members into one like m_originalPreloadWasOverridden (or something with an even better name).

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1680
&gt; +    if (m_readyState &lt; MediaPlayer::HaveMetadata)

See my comment below.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1702
&gt; +    if (m_preload &lt; MediaPlayer::Auto) {

I think it would be better to be explicit here and to enumerate all states that aren&apos;t valid. It would be pretty easy to break this check by reordering the enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683114</commentid>
    <comment_count>14</comment_count>
      <attachid>155549</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-07-31 08:37:25 -0700</bug_when>
    <thetext>Created attachment 155549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683162</commentid>
    <comment_count>15</comment_count>
      <attachid>155559</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-07-31 09:08:44 -0700</bug_when>
    <thetext>Created attachment 155559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683177</commentid>
    <comment_count>16</comment_count>
      <attachid>155559</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-07-31 09:15:35 -0700</bug_when>
    <thetext>Comment on attachment 155559
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:156
&gt; +            bool isLiveStream() const { return m_isStreaming; }

I think I would prefer isStreaming() here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683237</commentid>
    <comment_count>17</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-07-31 10:19:28 -0700</bug_when>
    <thetext>Committed r124217: &lt;http://trac.webkit.org/changeset/124217&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151150</attachid>
            <date>2012-07-07 17:37:30 -0700</date>
            <delta_ts>2012-07-07 21:16:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>14130</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBjMjJiYWM1ZTNkN2ZlMDU2YTExOTFkOTFkNmYzMDJmYmNjNTlmOTAxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTYXQsIDcgSnVsIDIwMTIgMTc6Mzc6MDEgLTA3MDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgNDQgKysrKysrKysrKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwICAgICAgfCAgIDkyICsrKysrKysrKysrKysrKystLS0tCiAuLi4vZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oICAgICAgICB8ICAgMTIgKystCiAzIGZp
bGVzIGNoYW5nZWQsIDEzMSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOTk0NTEwNi4uNTIxMTMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEy
LTA3LTA3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1N0cmVhbWVyXSBMaXZlIHN0cmVhbSBzdXBwb3J0IGlzIHdlYWsKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMDg0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzdXJlIG9uLWRpc2sgYnVmZmVy
aW5nIGlzIGRpc2FibGVkIGZvciBsaXZlIHN0cmVhbXMuIEl0IGlzCisgICAgICAgIGVuYWJsZWQg
aW5pdGlhbGx5IHdoZW4gbG9hZGluZyBhbnkgcmVtb3RlIG1lZGlhIGZpbGUgaWYgcHJlbG9hZCBp
cworICAgICAgICBzZXQgdG8gQXV0by4gTGF0ZXIgb24gaWYgdGhlIHBsYXllciBkZXRlY3RzIHRo
YXQgdGhlIG1lZGlhIGlzIGxpdmUKKyAgICAgICAgaXQgZGlzYWJsZXMgb24tZGlzayBidWZmZXJp
bmcuIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHN1cHBvcnQgZm9yCisgICAgICAgIGNhY2hpbmcgdGhl
IHRvdGFsIHNpemUgb2YgdGhlIG1lZGlhLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWQpOiBLZWVwIHRyYWNrIG9mIHRoZQorICAgICAgICBtZWRpYSB1cmwgYXMgYW4gaW5zdGFuY2Ug
YXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpkdXJhdGlvbik6IExvZ2dpbmcgaW1wcm92ZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFJhdGUpOiB1c2UgdGhlIG5ldworICAgICAgICBp
c0xpdmVTdHJlYW0oKSBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmJ1ZmZlcmVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOiBJbmRpY2F0ZQorICAgICAgICBz
b3VyY2Ugb2YgZHVyYXRpb24gbWVzc2FnZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6ZmlsbFRpbWVyRmlyZWQpOiBQZXJmb3JtIGFuCisgICAgICAgIGFu
b255bW91cyBkdXJhdGlvbiBjaGFuZ2UgZW1pc3Npb24sIG1vc3RseSB0byBjYWNoZSBpdHMgdmFs
dWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhY2hl
VG90YWxCeXRlcyk6IE5ldworICAgICAgICBtZXRob2QgdG8gY2FjaGUgdGhlIG1lZGlhIHRvdGFs
IHNpemUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNh
Y2hlVG90YWxCeXRlcyk6IFJldHVybgorICAgICAgICBjYWNoZWQgc2l6ZSB3aGVuIGF2YWlsYWJs
ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRl
U3RhdGVzKTogVXNlIHRoZSBuZXcKKyAgICAgICAgaXNMaXZlU3RyZWFtKCkgbWV0aG9kIGFuZCBo
YW5kbGUgc3RhdGUgY2hhbmdlIGNvcm5lciBjYXNlcyBmb3IgbGl2ZSBzdHJlYW1zLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQp
OiBDYWNoZQorICAgICAgICBtZWRpYSB0b3RhbCBzaXplIGFuZCByZS1lbmFibGUgb24tZGlzayBi
dWZmZXJpbmcgaWYgY2FjaGluZyBzdWNjZWVkcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bW92aWVMb2FkVHlwZSk6IE5ldworICAgICAgICBpbXBsZW1l
bnRhdGlvbiBoYW5kbGluZyBvbi1kaXNrIGJ1ZmZlcmVkIGFuZCBsaXZlIHN0cmVhbWluZyBjYXNl
cy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UHJl
bG9hZCk6IFJlY29yZCBpbml0aWFsCisgICAgICAgIHByZWxvYWQgYXR0cmlidXRlIHZhbHVlLCBk
byBvbi1kaXNrIGJ1ZmZlcmluZyBvbmx5IGZvciBBdXRvCisgICAgICAgIHByZWxvYWQgYXR0cmli
dXRlIGFuZCBub24tbG9jYWwgbWVkaWEuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAoTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6aXNMaXZlU3RyZWFtKTogVXRpbGl0eQorICAgICAgICBtZXRob2QsIGEgc3Ry
ZWFtIGlzIGxpdmUgaWYgaXQgZ29lcyB0byBQQVVTRSB3aXRob3V0IHByZXJvbGxpbmcKKyAgICAg
ICAgYW5kIGlmIHRoZSBieXRlIHNpemUgcmVwb3J0ZWQgYnkgdGhlIHNvdXJjZSBlbGVtZW50IGlz
IG51bGwuCisKIDIwMTItMDctMDYgIExhdXJvIE5ldG8gIDxsYXVyby5uZXRvQG9wZW5ib3NzYS5v
cmc+CiAKICAgICAgICAgW1F0XSBBdm9pZCBkZWVwIGNvcHkgb2YgUUltYWdlIGluIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRJbWFnZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxMzJkYjBkLi4zYjMzYTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjI0LDcgKzIyNCw3
IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgLCBtX2ZpbGxUaW1lcih0aGlzLCAmTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpmaWxsVGltZXJGaXJlZCkKICAgICAsIG1fbWF4VGltZUxv
YWRlZCgwKQogICAgICwgbV9idWZmZXJpbmdQZXJjZW50YWdlKDApCi0gICAgLCBtX3ByZWxvYWQo
TWVkaWFQbGF5ZXI6OkF1dG8pCisgICAgLCBtX3ByZWxvYWQoTWVkaWFQbGF5ZXI6Ok5vbmUpCiAg
ICAgLCBtX2RlbGF5aW5nTG9hZChmYWxzZSkKICAgICAsIG1fbWVkaWFEdXJhdGlvbktub3duKHRy
dWUpCiAgICAgLCBtX21heFRpbWVMb2FkZWRBdExhc3REaWRMb2FkaW5nUHJvZ3Jlc3MoMCkKQEAg
LTIzNSw2ICsyMzUsOSBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciogcGxheWVyKQogICAgICwgbV9hdWRpb1RpbWVy
SGFuZGxlcigwKQogICAgICwgbV92aWRlb1RpbWVySGFuZGxlcigwKQogICAgICwgbV93ZWJraXRB
dWRpb1NpbmsoMCkKKyAgICAsIG1fcHJlbG9hZFNldChmYWxzZSkKKyAgICAsIG1fdG90YWxCeXRl
cygwKQorICAgICwgbV90b3RhbEJ5dGVzQ2FjaGVkKGZhbHNlKQogewogICAgIGlmIChpbml0aWFs
aXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpKQogICAgICAgICBjcmVhdGVH
U1RQbGF5QmluKCk7CkBAIC0yOTIsNiArMjk1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgaWYgKGt1cmwuaXNMb2NhbEZp
bGUoKSkKICAgICAgICAgY2xlYW5VcmwgPSBjbGVhblVybC5zdWJzdHJpbmcoMCwga3VybC5wYXRo
RW5kKCkpOwogCisgICAgbV91cmwgPSBLVVJMKEtVUkwoKSwgY2xlYW5VcmwpOwogICAgIGdfb2Jq
ZWN0X3NldChtX3BsYXlCaW4sICJ1cmkiLCBjbGVhblVybC51dGY4KCkuZGF0YSgpLCBOVUxMKTsK
IAogICAgIExPR19WRVJCT1NFKE1lZGlhLCAiTG9hZCAlcyIsIGNsZWFuVXJsLnV0ZjgoKS5kYXRh
KCkpOwpAQCAtNDA3LDcgKzQxMSw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6ZHVyYXRpb24oKSBjb25zdAogICAgIGJvb2wgZmFpbHVyZSA9ICFnc3RfZWxlbWVudF9xdWVy
eV9kdXJhdGlvbihtX3BsYXlCaW4sICZ0aW1lRm9ybWF0LCAmdGltZUxlbmd0aCkgfHwgdGltZUZv
cm1hdCAhPSBHU1RfRk9STUFUX1RJTUUgfHwgc3RhdGljX2Nhc3Q8Z3VpbnQ2ND4odGltZUxlbmd0
aCkgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICNlbmRpZgogICAgIGlmIChmYWlsdXJlKSB7Ci0g
ICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiVGltZSBkdXJhdGlvbiBxdWVyeSBmYWlsZWQuIik7
CisgICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiVGltZSBkdXJhdGlvbiBxdWVyeSBmYWlsZWQg
Zm9yICVzIiwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CiAgICAgfQogCkBAIC02MjcsNyArNjMx
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFJhdGUoZmxvYXQgcmF0
ZSkKICAgICAgICAgfHwgKHBlbmRpbmcgPT0gR1NUX1NUQVRFX1BBVVNFRCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtX2lzU3RyZWFtaW5nKQorICAgIGlmIChpc0xpdmVTdHJlYW0oKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wbGF5YmFja1JhdGUgPSByYXRlOwpAQCAtNjg1LDcg
KzY4OSw3IEBAIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6cmVhZHlTdGF0ZSgpIGNvbnN0CiBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQoKSBjb25zdAogewogICAgIFJlZlB0cjxUaW1l
UmFuZ2VzPiB0aW1lUmFuZ2VzID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7Ci0gICAgaWYgKG1fZXJy
b3JPY2N1cmVkIHx8IG1faXNTdHJlYW1pbmcpCisgICAgaWYgKG1fZXJyb3JPY2N1cmVkIHx8IGlz
TGl2ZVN0cmVhbSgpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlcy5yZWxlYXNlKCk7CiAKICNp
ZiBHU1RfQ0hFQ0tfVkVSU0lPTigwLCAxMCwgMzEpCkBAIC03MTYsNyArNzIwLDcgQEAgUGFzc1Jl
ZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkKCkg
Y29uc3QKICAgICBnc3RfcXVlcnlfdW5yZWYocXVlcnkpOwogI2Vsc2UKICAgICBmbG9hdCBsb2Fk
ZWQgPSBtYXhUaW1lTG9hZGVkKCk7Ci0gICAgaWYgKCFtX2Vycm9yT2NjdXJlZCAmJiAhbV9pc1N0
cmVhbWluZyAmJiBsb2FkZWQgPiAwKQorICAgIGlmICghbV9lcnJvck9jY3VyZWQgJiYgIWlzTGl2
ZVN0cmVhbSgpICYmIGxvYWRlZCA+IDApCiAgICAgICAgIHRpbWVSYW5nZXMtPmFkZCgwLCBsb2Fk
ZWQpOwogI2VuZGlmCiAgICAgcmV0dXJuIHRpbWVSYW5nZXMucmVsZWFzZSgpOwpAQCAtNzQyLDEy
ICs3NDYsMTMgQEAgZ2Jvb2xlYW4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBMT0df
VkVSQk9TRShNZWRpYSwgIk1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBlbGVtZW50ICVzIiwgR1NUX01F
U1NBR0VfU1JDX05BTUUobWVzc2FnZSkpOwogICAgIHN3aXRjaCAoR1NUX01FU1NBR0VfVFlQRSht
ZXNzYWdlKSkgewogICAgIGNhc2UgR1NUX01FU1NBR0VfRVJST1I6CiAgICAgICAgIGlmIChtX3Jl
c2V0UGlwZWxpbmUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFy
c2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRlYnVnLm91dFB0cigpKTsKLSAgICAg
ICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJFcnJvcjogJWQsICVzIiwgZXJyLT5jb2RlLCAgZXJyLT5t
ZXNzYWdlKTsKKyAgICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJFcnJvciAlZDogJXMgKHVybD0l
cykiLCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAKICAgICAgICAgR1NUX0RFQlVHX0JJTl9UT19ET1RfRklMRV9XSVRIX1RTKEdTVF9CSU4o
bV9wbGF5QmluKSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMLCAid2Via2l0LXZpZGVvLmVycm9y
Iik7CiAKQEAgLTgwOSw3ICs4MTQsNyBAQCBnYm9vbGVhbiBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9EVVJBVElPTjoKICAgICAgICAgTE9HX1ZFUkJPU0UoTWVk
aWEsICJEdXJhdGlvbiBjaGFuZ2VkIik7Ci0gICAgICAgIGR1cmF0aW9uQ2hhbmdlZCgpOworICAg
ICAgICBkdXJhdGlvbkNoYW5nZWQodHJ1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiVW5oYW5kbGVkIEdTdHJlYW1lciBtZXNzYWdl
IHR5cGU6ICVzIiwKQEAgLTg3MSw3ICs4NzYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6ZmlsbFRpbWVyRmlyZWQoVGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbQog
ICAgIExPR19WRVJCT1NFKE1lZGlhLCAiW0J1ZmZlcmluZ10gRG93bmxvYWQgYnVmZmVyIGZpbGxl
ZCB1cCB0byAlZiUlIiwgZmlsbFN0YXR1cyk7CiAKICAgICBpZiAoIW1fbWVkaWFEdXJhdGlvbikK
LSAgICAgICAgZHVyYXRpb25DaGFuZ2VkKCk7CisgICAgICAgIGR1cmF0aW9uQ2hhbmdlZChmYWxz
ZSk7CiAKICAgICAvLyBVcGRhdGUgbWF4VGltZUxvYWRlZCBvbmx5IGlmIHRoZSBtZWRpYSBkdXJh
dGlvbiBpcwogICAgIC8vIGF2YWlsYWJsZS4gT3RoZXJ3aXNlIHdlIGNhbid0IGNvbXB1dGUgaXQu
CkBAIC05MzIsMTIgKzkzNywyNCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKICAgICByZXR1cm4gZGlkTG9hZGluZ1Byb2dyZXNz
OwogfQogCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y2FjaGVUb3RhbEJ5dGVz
KCkKK3sKKyAgICBpZiAobV90b3RhbEJ5dGVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
bV90b3RhbEJ5dGVzID0gdG90YWxCeXRlcygpOworICAgIG1fdG90YWxCeXRlc0NhY2hlZCA9IHRy
dWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6dG90YWxCeXRlcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3NvdXJjZSkKKyAgICBp
ZiAobV9lcnJvck9jY3VyZWQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1fZXJyb3JP
Y2N1cmVkKQorICAgIGlmIChtX3RvdGFsQnl0ZXNDYWNoZWQpCisgICAgICAgIHJldHVybiBtX3Rv
dGFsQnl0ZXM7CisKKyAgICBpZiAoIW1fc291cmNlKQogICAgICAgICByZXR1cm4gMDsKIAogICAg
IEdzdEZvcm1hdCBmbXQgPSBHU1RfRk9STUFUX0JZVEVTOwpAQCAtMTE0Myw3ICsxMTYwLDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAg
ICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CiAgICAgICAg
ICAgICBtX3BhdXNlZCA9IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAobV9idWZmZXJpbmcpIHsK
KyAgICAgICAgICAgIGlmIChtX2J1ZmZlcmluZyAmJiAhaXNMaXZlU3RyZWFtKCkpIHsKICAgICAg
ICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhOwog
ICAgICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CiAK
QEAgLTExNzUsNyArMTE5MiwyMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
dXBkYXRlU3RhdGVzKCkKICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBl
bmRpbmcpKTsKICAgICAgICAgLy8gQ2hhbmdlIGluIHByb2dyZXNzCiAKLSAgICAgICAgaWYgKCFt
X2lzU3RyZWFtaW5nICYmICFtX2J1ZmZlcmluZykKKyAgICAgICAgLy8gT24tZGlzayBidWZmZXJp
bmcgd2FzIGF0dGVtcHRlZCBidXQgdGhlIG1lZGlhIGlzIGxpdmUuIFRoaXMKKyAgICAgICAgLy8g
Y2FuJ3Qgd29yayBzbyBkaXNhYmxlIG9uLWRpc2sgYnVmZmVyaW5nIGFuZCByZXNldCB0aGUKKyAg
ICAgICAgLy8gcGlwZWxpbmUuCisgICAgICAgIGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUkVBRFkg
JiYgaXNMaXZlU3RyZWFtKCkgJiYgbV9wcmVsb2FkID09IE1lZGlhUGxheWVyOjpBdXRvKSB7Cisg
ICAgICAgICAgICBzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpOb25lKTsKKyAgICAgICAgICAgIGdz
dF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFURV9OVUxMKTsKKyAgICAgICAg
ICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFURV9QQVVTRUQpOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gQSBsaXZlIHN0cmVhbSB3YXMgcGF1c2VkLCByZXNldCB0
aGUgcGlwZWxpbmUuCisgICAgICAgIGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VEICYmIHBl
bmRpbmcgPT0gR1NUX1NUQVRFX1BMQVlJTkcgJiYgaXNMaXZlU3RyZWFtKCkpIHsKKyAgICAgICAg
ICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFURV9OVUxMKTsKKyAg
ICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFURV9QTEFZ
SU5HKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghaXNMaXZlU3RyZWFtKCkgJiYgIW1fYnVm
ZmVyaW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChtX3NlZWtpbmcpIHsK
QEAgLTEzOTYsOCArMTQyOCw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpj
YWNoZUR1cmF0aW9uKCkKICAgICAgICAgbV9tZWRpYUR1cmF0aW9uID0gbmV3RHVyYXRpb247CiB9
CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQoKQor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9uQ2hhbmdlZChib29sIGF0
dGVtcHRUb3RhbEJ5dGVzQ2FjaGUpCiB7CisKICAgICBmbG9hdCBwcmV2aW91c0R1cmF0aW9uID0g
bV9tZWRpYUR1cmF0aW9uOwogCiAgICAgY2FjaGVEdXJhdGlvbigpOwpAQCAtMTQwNiw2ICsxNDM5
LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQo
KQogICAgIC8vIEhUTUxNZWRpYUVsZW1lbnQuCiAgICAgaWYgKHByZXZpb3VzRHVyYXRpb24gJiYg
bV9tZWRpYUR1cmF0aW9uICE9IHByZXZpb3VzRHVyYXRpb24pCiAgICAgICAgIG1fcGxheWVyLT5k
dXJhdGlvbkNoYW5nZWQoKTsKKworICAgIC8vIFdlIG5lZWQgdG8ga25vdyB0aGUgdG90YWwgYW1v
dW50IG9mIGJ5dGVzIG9jY3VwaWVkIGJ5IHRoZQorICAgIC8vIG1lZGlhLCBlc3BlY2lhbGx5IGlm
IG9uLWRpc2sgYnVmZmVyaW5nIGlzIHJlcXVlc3RlZC4KKyAgICBpZiAoYXR0ZW1wdFRvdGFsQnl0
ZXNDYWNoZSAmJiBjYWNoZVRvdGFsQnl0ZXMoKSAmJiB0b3RhbEJ5dGVzKCkgJiYgIWlzTGl2ZVN0
cmVhbSgpICYmIG1faW5pdGlhbFByZWxvYWQgPT0gTWVkaWFQbGF5ZXI6OkF1dG8pIHsKKyAgICAg
ICAgc2V0UHJlbG9hZChtX2luaXRpYWxQcmVsb2FkKTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKG1fcGxheUJpbiwgR1NUX1NUQVRFX05VTEwpOworICAgICAgICBnc3RfZWxlbWVudF9z
ZXRfc3RhdGUobV9wbGF5QmluLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgICB9CiB9CiAKIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c011dGluZygpIGNvbnN0CkBAIC0x
NjM1LDE4ICsxNjc2LDM3IEBAIFBsYXRmb3JtTWVkaWEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpwbGF0Zm9ybU1lZGlhKCkgY29uc3QKICAgICByZXR1cm4gcDsKIH0KIAorTWVkaWFQbGF5
ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjptb3ZpZUxvYWRU
eXBlKCkgY29uc3QKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6OkhhdmVN
ZXRhZGF0YSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpVbmtub3duOworCisgICAgaWYg
KGlzTGl2ZVN0cmVhbSgpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW07
CisKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OkRvd25sb2FkOworfQorCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVs
b2FkKQogewotICAgIEFTU0VSVChtX3BsYXlCaW4pOworICAgIGlmICghbV9wcmVsb2FkU2V0KSAg
eworICAgICAgICBtX3ByZWxvYWRTZXQgPSB0cnVlOworICAgICAgICBtX2luaXRpYWxQcmVsb2Fk
ID0gcHJlbG9hZDsKKyAgICB9CiAKICAgICBtX3ByZWxvYWQgPSBwcmVsb2FkOwogCisgICAgQVNT
RVJUKG1fcGxheUJpbik7CisKICAgICBHc3RQbGF5RmxhZ3MgZmxhZ3M7CiAgICAgZ19vYmplY3Rf
Z2V0KG1fcGxheUJpbiwgImZsYWdzIiwgJmZsYWdzLCBOVUxMKTsKLSAgICBpZiAocHJlbG9hZCA9
PSBNZWRpYVBsYXllcjo6Tm9uZSkKKyAgICBpZiAobV9wcmVsb2FkIDwgTWVkaWFQbGF5ZXI6OkF1
dG8pIHsKKyAgICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJEaXNhYmxpbmcgb24tZGlzayBidWZm
ZXJpbmciKTsKICAgICAgICAgZ19vYmplY3Rfc2V0KG1fcGxheUJpbiwgImZsYWdzIiwgZmxhZ3Mg
JiB+R1NUX1BMQVlfRkxBR19ET1dOTE9BRCwgTlVMTCk7Ci0gICAgZWxzZQorICAgIH0gZWxzZSBp
ZiAoIW1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKKyAgICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJF
bmFibGluZyBvbi1kaXNrIGJ1ZmZlcmluZyIpOwogICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5
QmluLCAiZmxhZ3MiLCBmbGFncyB8IEdTVF9QTEFZX0ZMQUdfRE9XTkxPQUQsIE5VTEwpOworICAg
IH0KIAogICAgIGlmIChtX2RlbGF5aW5nTG9hZCAmJiBtX3ByZWxvYWQgIT0gTWVkaWFQbGF5ZXI6
Ok5vbmUpIHsKICAgICAgICAgbV9kZWxheWluZ0xvYWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCA1MDY5NDJjLi5iZGI3ZTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC05Miw2
ICs5Miw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAgICAgICAgICAgZmxvYXQgbWF4VGltZVNlZWth
YmxlKCkgY29uc3Q7CiAgICAgICAgICAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0
OwogICAgICAgICAgICAgdW5zaWduZWQgdG90YWxCeXRlcygpIGNvbnN0OworICAgICAgICAgICAg
Ym9vbCBjYWNoZVRvdGFsQnl0ZXMoKTsKIAogICAgICAgICAgICAgdm9pZCBzZXRWaXNpYmxlKGJv
b2wpOwogICAgICAgICAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKQEAgLTEwMCw3
ICsxMDEsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKICAgICAgICAgICAgIHZvaWQgc2l6ZUNoYW5nZWQo
KTsKICAgICAgICAgICAgIHZvaWQgdGltZUNoYW5nZWQoKTsKICAgICAgICAgICAgIHZvaWQgZGlk
RW5kKCk7Ci0gICAgICAgICAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZCgpOworICAgICAgICAgICAg
dm9pZCBkdXJhdGlvbkNoYW5nZWQoYm9vbCBhdHRlbXB0VG90YWxCeXRlc0NhY2hlKTsKICAgICAg
ICAgICAgIHZvaWQgbG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKIAog
ICAgICAgICAgICAgdm9pZCB0cmlnZ2VyUmVwYWludChHc3RCdWZmZXIqKTsKQEAgLTEyNCw2ICsx
MjUsOCBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGF1ZGlvRGVjb2Rl
ZEJ5dGVDb3VudCgpIGNvbnN0OwogICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0
ZUNvdW50KCkgY29uc3Q7CiAKKyAgICAgICAgICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBl
IG1vdmllTG9hZFR5cGUoKSBjb25zdDsKKwogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhUGxheWVyKik7CiAKQEAgLTE1MCw2ICsx
NTMsOCBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKIAogICAgICAgICAgICAgdm9pZCBwcm9jZXNzQnVmZmVy
aW5nU3RhdHMoR3N0TWVzc2FnZSopOwogCisgICAgICAgICAgICBib29sIGlzTGl2ZVN0cmVhbSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNTdHJlYW1pbmcgfHwgIXRvdGFsQnl0ZXMoKTsgfQorCiAgICAg
ICAgIHByaXZhdGU6CiAgICAgICAgICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CiAgICAgICAg
ICAgICBHc3RFbGVtZW50KiBtX3BsYXlCaW47CkBAIC0xOTMsNyArMTk4LDEyIEBAIGNsYXNzIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2UgewogICAgICAgICAgICAgZ3VpbnQgbV9hdWRpb1RpbWVySGFuZGxlcjsKICAgICAgICAg
ICAgIGd1aW50IG1fdmlkZW9UaW1lckhhbmRsZXI7CiAgICAgICAgICAgICBHUmVmUHRyPEdzdEVs
ZW1lbnQ+IG1fd2Via2l0QXVkaW9TaW5rOworICAgICAgICAgICAgYm9vbCBtX3ByZWxvYWRTZXQ7
CisgICAgICAgICAgICB1bnNpZ25lZCBtX3RvdGFsQnl0ZXM7CisgICAgICAgICAgICBib29sIG1f
dG90YWxCeXRlc0NhY2hlZDsKICAgICAgICAgICAgIEdSZWZQdHI8R3N0UGFkPiBtX3ZpZGVvU2lu
a1BhZDsKKyAgICAgICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgICAgICBNZWRpYVBsYXllcjo6
UHJlbG9hZCBtX2luaXRpYWxQcmVsb2FkOwogICAgIH07CiB9CiAKLS0gCjEuNy4xMC40
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151155</attachid>
            <date>2012-07-07 21:16:39 -0700</date>
            <delta_ts>2012-07-19 05:44:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>12830</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA2MTE5YTg3NjIwZGI5MmU5NjM2NzUzZWQ1MTY2OGIxMGI1OGNiN2FmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTYXQsIDcgSnVsIDIwMTIgMTc6Mzc6MDEgLTA3MDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgNDIgKysrKysrKysrKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwICAgICAgfCAgIDg0ICsrKysrKysrKysrKysrKystLS0tCiAuLi4vZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oICAgICAgICB8ICAgIDggKysKIDMgZmls
ZXMgY2hhbmdlZCwgMTE4IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA5OTQ1MTA2Li4yNmE0ZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTIt
MDctMDcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHU3RyZWFtZXJdIExpdmUgc3RyZWFtIHN1cHBvcnQgaXMgd2VhaworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAwODQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHN1cmUgb24tZGlzayBidWZmZXJp
bmcgaXMgZGlzYWJsZWQgZm9yIGxpdmUgc3RyZWFtcy4gSXQgaXMKKyAgICAgICAgZW5hYmxlZCBp
bml0aWFsbHkgd2hlbiBsb2FkaW5nIGFueSByZW1vdGUgbWVkaWEgZmlsZSBpZiBwcmVsb2FkIGlz
CisgICAgICAgIHNldCB0byBBdXRvLiBMYXRlciBvbiBpZiB0aGUgcGxheWVyIGRldGVjdHMgdGhh
dCB0aGUgbWVkaWEgaXMgbGl2ZQorICAgICAgICBpdCBkaXNhYmxlcyBvbi1kaXNrIGJ1ZmZlcmlu
Zy4gVGhpcyBwYXRjaCBhbHNvIGFkZHMgc3VwcG9ydCBmb3IKKyAgICAgICAgY2FjaGluZyB0aGUg
dG90YWwgc2l6ZSBvZiB0aGUgbWVkaWEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9h
ZCk6IEtlZXAgdHJhY2sgb2YgdGhlCisgICAgICAgIG1lZGlhIHVybCBhcyBhbiBpbnN0YW5jZSBh
dHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmR1cmF0aW9uKTogTG9nZ2luZyBpbXByb3ZlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UmF0ZSk6IHVzZSB0aGUgbmV3CisgICAgICAgIGlz
TGl2ZVN0cmVhbSgpIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6YnVmZmVyZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6IEluZGljYXRlCisgICAgICAgIHNv
dXJjZSBvZiBkdXJhdGlvbiBtZXNzYWdlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpmaWxsVGltZXJGaXJlZCk6IFBlcmZvcm0gYW4KKyAgICAgICAgYW5v
bnltb3VzIGR1cmF0aW9uIGNoYW5nZSBlbWlzc2lvbiwgbW9zdGx5IHRvIGNhY2hlIGl0cyB2YWx1
ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxC
eXRlcyk6IFJldHVybgorICAgICAgICBjYWNoZWQgc2l6ZSB3aGVuIGF2YWlsYWJsZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKTog
VXNlIHRoZSBuZXcKKyAgICAgICAgaXNMaXZlU3RyZWFtKCkgbWV0aG9kIGFuZCBoYW5kbGUgc3Rh
dGUgY2hhbmdlIGNvcm5lciBjYXNlcyBmb3IgbGl2ZSBzdHJlYW1zLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQpOiBDYWNoZQor
ICAgICAgICBtZWRpYSB0b3RhbCBzaXplIGFuZCByZS1lbmFibGUgb24tZGlzayBidWZmZXJpbmcg
aWYgY2FjaGluZyBzdWNjZWVkcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bW92aWVMb2FkVHlwZSk6IE5ldworICAgICAgICBpbXBsZW1lbnRhdGlvbiBo
YW5kbGluZyBvbi1kaXNrIGJ1ZmZlcmVkIGFuZCBsaXZlIHN0cmVhbWluZyBjYXNlcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UHJlbG9hZCk6IFJl
Y29yZCBpbml0aWFsCisgICAgICAgIHByZWxvYWQgYXR0cmlidXRlIHZhbHVlLCBkbyBvbi1kaXNr
IGJ1ZmZlcmluZyBvbmx5IGZvciBBdXRvCisgICAgICAgIHByZWxvYWQgYXR0cmlidXRlIGFuZCBu
b24tbG9jYWwgbWVkaWEuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6aXNMaXZlU3RyZWFtKTogVXRpbGl0eQorICAgICAgICBtZXRob2QsIGEgc3RyZWFtIGlzIGxp
dmUgaWYgaXQgZ29lcyB0byBQQVVTRSB3aXRob3V0IHByZXJvbGxpbmcKKyAgICAgICAgb3IgaWYg
dGhlIGJ5dGUgc2l6ZSByZXBvcnRlZCBieSB0aGUgc291cmNlIGVsZW1lbnQgaXMgbnVsbC4KKwog
MjAxMi0wNy0wNiAgTGF1cm8gTmV0byAgPGxhdXJvLm5ldG9Ab3BlbmJvc3NhLm9yZz4KIAogICAg
ICAgICBbUXRdIEF2b2lkIGRlZXAgY29weSBvZiBRSW1hZ2UgaW4gR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEltYWdlRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCmluZGV4IDEzMmRiMGQuLjgxNmI2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoTWVkaWFQ
bGF5ZXIqIHBsYXllcikKICAgICAsIG1fZmlsbFRpbWVyKHRoaXMsICZNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmZpbGxUaW1lckZpcmVkKQogICAgICwgbV9tYXhUaW1lTG9hZGVkKDApCiAg
ICAgLCBtX2J1ZmZlcmluZ1BlcmNlbnRhZ2UoMCkKLSAgICAsIG1fcHJlbG9hZChNZWRpYVBsYXll
cjo6QXV0bykKKyAgICAsIG1fcHJlbG9hZChNZWRpYVBsYXllcjo6Tm9uZSkKICAgICAsIG1fZGVs
YXlpbmdMb2FkKGZhbHNlKQogICAgICwgbV9tZWRpYUR1cmF0aW9uS25vd24odHJ1ZSkKICAgICAs
IG1fbWF4VGltZUxvYWRlZEF0TGFzdERpZExvYWRpbmdQcm9ncmVzcygwKQpAQCAtMjM1LDYgKzIz
NSw4IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgLCBtX2F1ZGlvVGltZXJIYW5kbGVyKDAp
CiAgICAgLCBtX3ZpZGVvVGltZXJIYW5kbGVyKDApCiAgICAgLCBtX3dlYmtpdEF1ZGlvU2luaygw
KQorICAgICwgbV9wcmVsb2FkU2V0KGZhbHNlKQorICAgICwgbV90b3RhbEJ5dGVzKC0xKQogewog
ICAgIGlmIChpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpKQog
ICAgICAgICBjcmVhdGVHU1RQbGF5QmluKCk7CkBAIC0yOTIsNiArMjk0LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgaWYg
KGt1cmwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgY2xlYW5VcmwgPSBjbGVhblVybC5zdWJzdHJp
bmcoMCwga3VybC5wYXRoRW5kKCkpOwogCisgICAgbV91cmwgPSBLVVJMKEtVUkwoKSwgY2xlYW5V
cmwpOwogICAgIGdfb2JqZWN0X3NldChtX3BsYXlCaW4sICJ1cmkiLCBjbGVhblVybC51dGY4KCku
ZGF0YSgpLCBOVUxMKTsKIAogICAgIExPR19WRVJCT1NFKE1lZGlhLCAiTG9hZCAlcyIsIGNsZWFu
VXJsLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNDA3LDcgKzQxMCw3IEBAIGZsb2F0IE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb24oKSBjb25zdAogICAgIGJvb2wgZmFpbHVyZSA9ICFn
c3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3BsYXlCaW4sICZ0aW1lRm9ybWF0LCAmdGltZUxl
bmd0aCkgfHwgdGltZUZvcm1hdCAhPSBHU1RfRk9STUFUX1RJTUUgfHwgc3RhdGljX2Nhc3Q8Z3Vp
bnQ2ND4odGltZUxlbmd0aCkgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICNlbmRpZgogICAgIGlm
IChmYWlsdXJlKSB7Ci0gICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiVGltZSBkdXJhdGlvbiBx
dWVyeSBmYWlsZWQuIik7CisgICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiVGltZSBkdXJhdGlv
biBxdWVyeSBmYWlsZWQgZm9yICVzIiwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIHJldHVybiBudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CiAgICAgfQog
CkBAIC02MjcsNyArNjMwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNl
dFJhdGUoZmxvYXQgcmF0ZSkKICAgICAgICAgfHwgKHBlbmRpbmcgPT0gR1NUX1NUQVRFX1BBVVNF
RCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2lzU3RyZWFtaW5nKQorICAgIGlmIChp
c0xpdmVTdHJlYW0oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wbGF5YmFja1JhdGUgPSBy
YXRlOwpAQCAtNjg1LDcgKzY4OCw3IEBAIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVhZHlTdGF0ZSgpIGNvbnN0CiBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQoKSBjb25zdAogewog
ICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7
Ci0gICAgaWYgKG1fZXJyb3JPY2N1cmVkIHx8IG1faXNTdHJlYW1pbmcpCisgICAgaWYgKG1fZXJy
b3JPY2N1cmVkIHx8IGlzTGl2ZVN0cmVhbSgpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlcy5y
ZWxlYXNlKCk7CiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigwLCAxMCwgMzEpCkBAIC03MTYsNyAr
NzE5LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICBnc3RfcXVlcnlfdW5yZWYocXVlcnkpOwogI2Vsc2UK
ICAgICBmbG9hdCBsb2FkZWQgPSBtYXhUaW1lTG9hZGVkKCk7Ci0gICAgaWYgKCFtX2Vycm9yT2Nj
dXJlZCAmJiAhbV9pc1N0cmVhbWluZyAmJiBsb2FkZWQgPiAwKQorICAgIGlmICghbV9lcnJvck9j
Y3VyZWQgJiYgIWlzTGl2ZVN0cmVhbSgpICYmIGxvYWRlZCA+IDApCiAgICAgICAgIHRpbWVSYW5n
ZXMtPmFkZCgwLCBsb2FkZWQpOwogI2VuZGlmCiAgICAgcmV0dXJuIHRpbWVSYW5nZXMucmVsZWFz
ZSgpOwpAQCAtNzQyLDEyICs3NDUsMTMgQEAgZ2Jvb2xlYW4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBMT0dfVkVSQk9TRShNZWRpYSwgIk1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBlbGVt
ZW50ICVzIiwgR1NUX01FU1NBR0VfU1JDX05BTUUobWVzc2FnZSkpOwogICAgIHN3aXRjaCAoR1NU
X01FU1NBR0VfVFlQRShtZXNzYWdlKSkgewogICAgIGNhc2UgR1NUX01FU1NBR0VfRVJST1I6CiAg
ICAgICAgIGlmIChtX3Jlc2V0UGlwZWxpbmUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Z3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRlYnVnLm91
dFB0cigpKTsKLSAgICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJFcnJvcjogJWQsICVzIiwgZXJy
LT5jb2RlLCAgZXJyLT5tZXNzYWdlKTsKKyAgICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJFcnJv
ciAlZDogJXMgKHVybD0lcykiLCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgR1NUX0RFQlVHX0JJTl9UT19ET1RfRklMRV9X
SVRIX1RTKEdTVF9CSU4obV9wbGF5QmluKSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMLCAid2Vi
a2l0LXZpZGVvLmVycm9yIik7CiAKQEAgLTkzNCwxMCArOTM4LDEzIEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdAogCiB1bnNpZ25l
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRvdGFsQnl0ZXMoKSBjb25zdAogewotICAg
IGlmICghbV9zb3VyY2UpCisgICAgaWYgKG1fZXJyb3JPY2N1cmVkKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIGlmIChtX2Vycm9yT2NjdXJlZCkKKyAgICBpZiAobV90b3RhbEJ5dGVzICE9IC0x
KQorICAgICAgICByZXR1cm4gbV90b3RhbEJ5dGVzOworCisgICAgaWYgKCFtX3NvdXJjZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBHc3RGb3JtYXQgZm10ID0gR1NUX0ZPUk1BVF9CWVRFUzsK
QEAgLTk0OCw3ICs5NTUsOCBAQCB1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnRvdGFsQnl0ZXMoKSBjb25zdAogICAgIGlmIChnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbiht
X3NvdXJjZS5nZXQoKSwgJmZtdCwgJmxlbmd0aCkpIHsKICNlbmRpZgogICAgICAgICBMT0dfVkVS
Qk9TRShNZWRpYSwgInRvdGFsQnl0ZXMgJSIgR19HSU5UNjRfRk9STUFULCBsZW5ndGgpOwotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CisgICAgICAgIG1fdG90
YWxCeXRlcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOworICAgICAgICByZXR1cm4g
bV90b3RhbEJ5dGVzOwogICAgIH0KIAogICAgIC8vIEZhbGwgYmFjayB0byBxdWVyeWluZyB0aGUg
c291cmNlIHBhZHMgbWFudWFsbHkuCkBAIC05OTYsOCArMTAwNCw4IEBAIHVuc2lnbmVkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxCeXRlcygpIGNvbnN0CiAgICAgZ3N0X2l0ZXJh
dG9yX2ZyZWUoaXRlcik7CiAKICAgICBMT0dfVkVSQk9TRShNZWRpYSwgInRvdGFsQnl0ZXMgJSIg
R19HSU5UNjRfRk9STUFULCBsZW5ndGgpOwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihsZW5ndGgpOworICAgIG1fdG90YWxCeXRlcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihs
ZW5ndGgpOworICAgIHJldHVybiBtX3RvdGFsQnl0ZXM7CiB9CiAKIHVuc2lnbmVkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGVjb2RlZEZyYW1lQ291bnQoKSBjb25zdApAQCAtMTE0Myw3
ICsxMTUxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVN0YXRl
cygpCiAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERh
dGE7CiAgICAgICAgICAgICBtX3BhdXNlZCA9IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAobV9i
dWZmZXJpbmcpIHsKKyAgICAgICAgICAgIGlmIChtX2J1ZmZlcmluZyAmJiAhaXNMaXZlU3RyZWFt
KCkpIHsKICAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUN1
cnJlbnREYXRhOwogICAgICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6
OkxvYWRpbmc7CiAKQEAgLTExNzUsNyArMTE4MywyMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAgICAgIGdzdF9lbGVtZW50X3N0YXRl
X2dldF9uYW1lKHBlbmRpbmcpKTsKICAgICAgICAgLy8gQ2hhbmdlIGluIHByb2dyZXNzCiAKLSAg
ICAgICAgaWYgKCFtX2lzU3RyZWFtaW5nICYmICFtX2J1ZmZlcmluZykKKyAgICAgICAgLy8gT24t
ZGlzayBidWZmZXJpbmcgd2FzIGF0dGVtcHRlZCBidXQgdGhlIG1lZGlhIGlzIGxpdmUuIFRoaXMK
KyAgICAgICAgLy8gY2FuJ3Qgd29yayBzbyBkaXNhYmxlIG9uLWRpc2sgYnVmZmVyaW5nIGFuZCBy
ZXNldCB0aGUKKyAgICAgICAgLy8gcGlwZWxpbmUuCisgICAgICAgIGlmIChzdGF0ZSA9PSBHU1Rf
U1RBVEVfUkVBRFkgJiYgaXNMaXZlU3RyZWFtKCkgJiYgbV9wcmVsb2FkID09IE1lZGlhUGxheWVy
OjpBdXRvKSB7CisgICAgICAgICAgICBzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpOb25lKTsKKyAg
ICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFURV9OVUxM
KTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFU
RV9QQVVTRUQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQSBsaXZlIHN0cmVhbSB3YXMgcGF1
c2VkLCByZXNldCB0aGUgcGlwZWxpbmUuCisgICAgICAgIGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVf
UEFVU0VEICYmIHBlbmRpbmcgPT0gR1NUX1NUQVRFX1BMQVlJTkcgJiYgaXNMaXZlU3RyZWFtKCkp
IHsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFU
RV9OVUxMKTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdT
VF9TVEFURV9QTEFZSU5HKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghaXNMaXZlU3RyZWFt
KCkgJiYgIW1fYnVmZmVyaW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICht
X3NlZWtpbmcpIHsKQEAgLTEzOTgsNiArMTQyMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpjYWNoZUR1cmF0aW9uKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmR1cmF0aW9uQ2hhbmdlZCgpCiB7CisKICAgICBmbG9hdCBwcmV2aW91c0R1cmF0aW9u
ID0gbV9tZWRpYUR1cmF0aW9uOwogCiAgICAgY2FjaGVEdXJhdGlvbigpOwpAQCAtMTQwNiw2ICsx
NDMwLDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5n
ZWQoKQogICAgIC8vIEhUTUxNZWRpYUVsZW1lbnQuCiAgICAgaWYgKHByZXZpb3VzRHVyYXRpb24g
JiYgbV9tZWRpYUR1cmF0aW9uICE9IHByZXZpb3VzRHVyYXRpb24pCiAgICAgICAgIG1fcGxheWVy
LT5kdXJhdGlvbkNoYW5nZWQoKTsKKworICAgIGlmIChtX3ByZWxvYWQgPT0gTWVkaWFQbGF5ZXI6
Ok5vbmUgJiYgbV9pbml0aWFsUHJlbG9hZCA9PSBNZWRpYVBsYXllcjo6QXV0bykgeworICAgICAg
ICBtX3RvdGFsQnl0ZXMgPSAtMTsKKyAgICAgICAgaWYgKHRvdGFsQnl0ZXMoKSAmJiAhaXNMaXZl
U3RyZWFtKCkpIHsKKyAgICAgICAgICAgIHNldFByZWxvYWQobV9pbml0aWFsUHJlbG9hZCk7Cisg
ICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBHU1RfU1RBVEVfTlVM
TCk7CisgICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBHU1RfU1RB
VEVfUEFVU0VEKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnN1cHBvcnRzTXV0aW5nKCkgY29uc3QKQEAgLTE2MzUsMTggKzE2NjgsMzcg
QEAgUGxhdGZvcm1NZWRpYSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXRmb3JtTWVk
aWEoKSBjb25zdAogICAgIHJldHVybiBwOwogfQogCitNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlw
ZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om1vdmllTG9hZFR5cGUoKSBjb25zdAorewor
ICAgIGlmIChtX3JlYWR5U3RhdGUgPCBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhKQorICAgICAg
ICByZXR1cm4gTWVkaWFQbGF5ZXI6OlVua25vd247CisKKyAgICBpZiAoaXNMaXZlU3RyZWFtKCkp
CisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbTsKKworICAgIHJldHVybiBN
ZWRpYVBsYXllcjo6RG93bmxvYWQ7Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWQpCiB7Ci0gICAgQVNT
RVJUKG1fcGxheUJpbik7CisgICAgaWYgKCFtX3ByZWxvYWRTZXQpICB7CisgICAgICAgIG1fcHJl
bG9hZFNldCA9IHRydWU7CisgICAgICAgIG1faW5pdGlhbFByZWxvYWQgPSBwcmVsb2FkOworICAg
IH0KIAogICAgIG1fcHJlbG9hZCA9IHByZWxvYWQ7CiAKKyAgICBBU1NFUlQobV9wbGF5QmluKTsK
KwogICAgIEdzdFBsYXlGbGFncyBmbGFnczsKICAgICBnX29iamVjdF9nZXQobV9wbGF5QmluLCAi
ZmxhZ3MiLCAmZmxhZ3MsIE5VTEwpOwotICAgIGlmIChwcmVsb2FkID09IE1lZGlhUGxheWVyOjpO
b25lKQorICAgIGlmIChtX3ByZWxvYWQgPCBNZWRpYVBsYXllcjo6QXV0bykgeworICAgICAgICBM
T0dfVkVSQk9TRShNZWRpYSwgIkRpc2FibGluZyBvbi1kaXNrIGJ1ZmZlcmluZyIpOwogICAgICAg
ICBnX29iamVjdF9zZXQobV9wbGF5QmluLCAiZmxhZ3MiLCBmbGFncyAmIH5HU1RfUExBWV9GTEFH
X0RPV05MT0FELCBOVUxMKTsKLSAgICBlbHNlCisgICAgfSBlbHNlIGlmICghbV91cmwuaXNMb2Nh
bEZpbGUoKSkgeworICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIkVuYWJsaW5nIG9uLWRpc2sg
YnVmZmVyaW5nIik7CiAgICAgICAgIGdfb2JqZWN0X3NldChtX3BsYXlCaW4sICJmbGFncyIsIGZs
YWdzIHwgR1NUX1BMQVlfRkxBR19ET1dOTE9BRCwgTlVMTCk7CisgICAgfQogCiAgICAgaWYgKG1f
ZGVsYXlpbmdMb2FkICYmIG1fcHJlbG9hZCAhPSBNZWRpYVBsYXllcjo6Tm9uZSkgewogICAgICAg
ICBtX2RlbGF5aW5nTG9hZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oCmluZGV4IDUwNjk0MmMuLjJkZTEwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTEyNCw2ICsxMjQsOCBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgp
IGNvbnN0OwogICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29u
c3Q7CiAKKyAgICAgICAgICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5
cGUoKSBjb25zdDsKKwogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyKE1lZGlhUGxheWVyKik7CiAKQEAgLTE1MCw2ICsxNTIsOCBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlIHsKIAogICAgICAgICAgICAgdm9pZCBwcm9jZXNzQnVmZmVyaW5nU3RhdHMoR3N0
TWVzc2FnZSopOwogCisgICAgICAgICAgICBib29sIGlzTGl2ZVN0cmVhbSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNTdHJlYW1pbmcgfHwgIXRvdGFsQnl0ZXMoKTsgfQorCiAgICAgICAgIHByaXZhdGU6
CiAgICAgICAgICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CiAgICAgICAgICAgICBHc3RFbGVt
ZW50KiBtX3BsYXlCaW47CkBAIC0xOTMsNyArMTk3LDExIEBAIGNsYXNzIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAg
ICAgICAgICAgZ3VpbnQgbV9hdWRpb1RpbWVySGFuZGxlcjsKICAgICAgICAgICAgIGd1aW50IG1f
dmlkZW9UaW1lckhhbmRsZXI7CiAgICAgICAgICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fd2Vi
a2l0QXVkaW9TaW5rOworICAgICAgICAgICAgYm9vbCBtX3ByZWxvYWRTZXQ7CisgICAgICAgICAg
ICBtdXRhYmxlIGxvbmcgbV90b3RhbEJ5dGVzOwogICAgICAgICAgICAgR1JlZlB0cjxHc3RQYWQ+
IG1fdmlkZW9TaW5rUGFkOworICAgICAgICAgICAgS1VSTCBtX3VybDsKKyAgICAgICAgICAgIE1l
ZGlhUGxheWVyOjpQcmVsb2FkIG1faW5pdGlhbFByZWxvYWQ7CiAgICAgfTsKIH0KIAotLSAKMS43
LjEwLjQ=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153237</attachid>
            <date>2012-07-19 05:44:27 -0700</date>
            <delta_ts>2012-07-31 08:37:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>12822</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBmNDViMjA1NjI3NDI2ZjYxNzhhNmYwZjNmODA0N2M4YzZmNGJjN2RlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDE5IEp1bCAyMDEyIDE0OjQzOjU3ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDQyICsrKysrKysrKysKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCAgICAgIHwgICA4NCArKysrKysrKysrKysrKysrLS0tLQogLi4uL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCAgICAgICAgfCAgICA4ICsrCiAzIGZp
bGVzIGNoYW5nZWQsIDExOCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYzFjN2FiYy4uODc5MGQ3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAx
Mi0wNy0xOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0dTdHJlYW1lcl0gTGl2ZSBzdHJlYW0gc3VwcG9ydCBpcyB3ZWFrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDA4NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc3VyZSBvbi1kaXNrIGJ1ZmZl
cmluZyBpcyBkaXNhYmxlZCBmb3IgbGl2ZSBzdHJlYW1zLiBJdCBpcworICAgICAgICBlbmFibGVk
IGluaXRpYWxseSB3aGVuIGxvYWRpbmcgYW55IHJlbW90ZSBtZWRpYSBmaWxlIGlmIHByZWxvYWQg
aXMKKyAgICAgICAgc2V0IHRvIEF1dG8uIExhdGVyIG9uIGlmIHRoZSBwbGF5ZXIgZGV0ZWN0cyB0
aGF0IHRoZSBtZWRpYSBpcyBsaXZlCisgICAgICAgIGl0IGRpc2FibGVzIG9uLWRpc2sgYnVmZmVy
aW5nLiBUaGlzIHBhdGNoIGFsc28gYWRkcyBzdXBwb3J0IGZvcgorICAgICAgICBjYWNoaW5nIHRo
ZSB0b3RhbCBzaXplIG9mIHRoZSBtZWRpYS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjps
b2FkKTogS2VlcCB0cmFjayBvZiB0aGUKKyAgICAgICAgbWVkaWEgdXJsIGFzIGFuIGluc3RhbmNl
IGF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6ZHVyYXRpb24pOiBMb2dnaW5nIGltcHJvdmVtZW50LgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRSYXRlKTogdXNlIHRoZSBuZXcKKyAgICAgICAg
aXNMaXZlU3RyZWFtKCkgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpidWZmZXJlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKTogSW5kaWNhdGUKKyAgICAgICAg
c291cmNlIG9mIGR1cmF0aW9uIG1lc3NhZ2UuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmZpbGxUaW1lckZpcmVkKTogUGVyZm9ybSBhbgorICAgICAgICBh
bm9ueW1vdXMgZHVyYXRpb24gY2hhbmdlIGVtaXNzaW9uLCBtb3N0bHkgdG8gY2FjaGUgaXRzIHZh
bHVlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0b3Rh
bEJ5dGVzKTogUmV0dXJuCisgICAgICAgIGNhY2hlZCBzaXplIHdoZW4gYXZhaWxhYmxlLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMp
OiBVc2UgdGhlIG5ldworICAgICAgICBpc0xpdmVTdHJlYW0oKSBtZXRob2QgYW5kIGhhbmRsZSBz
dGF0ZSBjaGFuZ2UgY29ybmVyIGNhc2VzIGZvciBsaXZlIHN0cmVhbXMuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9uQ2hhbmdlZCk6IENhY2hl
CisgICAgICAgIG1lZGlhIHRvdGFsIHNpemUgYW5kIHJlLWVuYWJsZSBvbi1kaXNrIGJ1ZmZlcmlu
ZyBpZiBjYWNoaW5nIHN1Y2NlZWRzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjptb3ZpZUxvYWRUeXBlKTogTmV3CisgICAgICAgIGltcGxlbWVudGF0aW9u
IGhhbmRsaW5nIG9uLWRpc2sgYnVmZmVyZWQgYW5kIGxpdmUgc3RyZWFtaW5nIGNhc2VzLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRQcmVsb2FkKTog
UmVjb3JkIGluaXRpYWwKKyAgICAgICAgcHJlbG9hZCBhdHRyaWJ1dGUgdmFsdWUsIGRvIG9uLWRp
c2sgYnVmZmVyaW5nIG9ubHkgZm9yIEF1dG8KKyAgICAgICAgcHJlbG9hZCBhdHRyaWJ1dGUgYW5k
IG5vbi1sb2NhbCBtZWRpYS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgIChNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjppc0xpdmVTdHJlYW0pOiBVdGlsaXR5CisgICAgICAgIG1ldGhvZCwgYSBzdHJlYW0gaXMg
bGl2ZSBpZiBpdCBnb2VzIHRvIFBBVVNFIHdpdGhvdXQgcHJlcm9sbGluZworICAgICAgICBvciBp
ZiB0aGUgYnl0ZSBzaXplIHJlcG9ydGVkIGJ5IHRoZSBzb3VyY2UgZWxlbWVudCBpcyBudWxsLgor
CiAyMDEyLTA3LTE5ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBNSFRNTCBmaWxlcyBub3QgYmVpbmcgbG9hZGVkIGR1ZSB0byByZXBv
cnRlZCBtaW1lIHR5cGUgbm90IHN1cHBvcnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBmYmE4MjUyLi44MjBlN2U0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjI0LDcgKzIy
NCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgLCBtX2ZpbGxUaW1lcih0aGlzLCAmTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpmaWxsVGltZXJGaXJlZCkKICAgICAsIG1fbWF4VGlt
ZUxvYWRlZCgwKQogICAgICwgbV9idWZmZXJpbmdQZXJjZW50YWdlKDApCi0gICAgLCBtX3ByZWxv
YWQoTWVkaWFQbGF5ZXI6OkF1dG8pCisgICAgLCBtX3ByZWxvYWQoTWVkaWFQbGF5ZXI6Ok5vbmUp
CiAgICAgLCBtX2RlbGF5aW5nTG9hZChmYWxzZSkKICAgICAsIG1fbWVkaWFEdXJhdGlvbktub3du
KHRydWUpCiAgICAgLCBtX21heFRpbWVMb2FkZWRBdExhc3REaWRMb2FkaW5nUHJvZ3Jlc3MoMCkK
QEAgLTIzNSw2ICsyMzUsOCBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciogcGxheWVyKQogICAgICwgbV9hdWRpb1Rp
bWVySGFuZGxlcigwKQogICAgICwgbV92aWRlb1RpbWVySGFuZGxlcigwKQogICAgICwgbV93ZWJr
aXRBdWRpb1NpbmsoMCkKKyAgICAsIG1fcHJlbG9hZFNldChmYWxzZSkKKyAgICAsIG1fdG90YWxC
eXRlcygtMSkKIHsKICAgICBpZiAoaW5pdGlhbGl6ZUdTdHJlYW1lckFuZFJlZ2lzdGVyV2ViS2l0
RWxlbWVudHMoKSkKICAgICAgICAgY3JlYXRlR1NUUGxheUJpbigpOwpAQCAtMjkyLDYgKzI5NCw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkKGNvbnN0IFN0cmluZyYg
dXJsKQogICAgIGlmIChrdXJsLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIGNsZWFuVXJsID0gY2xl
YW5Vcmwuc3Vic3RyaW5nKDAsIGt1cmwucGF0aEVuZCgpKTsKIAorICAgIG1fdXJsID0gS1VSTChL
VVJMKCksIGNsZWFuVXJsKTsKICAgICBnX29iamVjdF9zZXQobV9wbGF5QmluLCAidXJpIiwgY2xl
YW5VcmwudXRmOCgpLmRhdGEoKSwgTlVMTCk7CiAKICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIkxv
YWQgJXMiLCBjbGVhblVybC51dGY4KCkuZGF0YSgpKTsKQEAgLTQwNyw3ICs0MTAsNyBAQCBmbG9h
dCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9uKCkgY29uc3QKICAgICBib29s
IGZhaWx1cmUgPSAhZ3N0X2VsZW1lbnRfcXVlcnlfZHVyYXRpb24obV9wbGF5QmluLCAmdGltZUZv
cm1hdCwgJnRpbWVMZW5ndGgpIHx8IHRpbWVGb3JtYXQgIT0gR1NUX0ZPUk1BVF9USU1FIHx8IHN0
YXRpY19jYXN0PGd1aW50NjQ+KHRpbWVMZW5ndGgpID09IEdTVF9DTE9DS19USU1FX05PTkU7CiAj
ZW5kaWYKICAgICBpZiAoZmFpbHVyZSkgewotICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIlRp
bWUgZHVyYXRpb24gcXVlcnkgZmFpbGVkLiIpOworICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwg
IlRpbWUgZHVyYXRpb24gcXVlcnkgZmFpbGVkIGZvciAlcyIsIG1fdXJsLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0
eSgpOwogICAgIH0KIApAQCAtNjM0LDcgKzYzNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpzZXRSYXRlKGZsb2F0IHJhdGUpCiAgICAgICAgIHx8IChwZW5kaW5nID09IEdT
VF9TVEFURV9QQVVTRUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pc1N0cmVhbWlu
ZykKKyAgICBpZiAoaXNMaXZlU3RyZWFtKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGxh
eWJhY2tSYXRlID0gcmF0ZTsKQEAgLTY5Miw3ICs2OTUsNyBAQCBNZWRpYVBsYXllcjo6UmVhZHlT
dGF0ZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJlYWR5U3RhdGUoKSBjb25zdAogUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVk
KCkgY29uc3QKIHsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gdGltZVJhbmdlcyA9IFRpbWVSYW5n
ZXM6OmNyZWF0ZSgpOwotICAgIGlmIChtX2Vycm9yT2NjdXJlZCB8fCBtX2lzU3RyZWFtaW5nKQor
ICAgIGlmIChtX2Vycm9yT2NjdXJlZCB8fCBpc0xpdmVTdHJlYW0oKSkKICAgICAgICAgcmV0dXJu
IHRpbWVSYW5nZXMucmVsZWFzZSgpOwogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMCwgMTAsIDMx
KQpAQCAtNzIzLDcgKzcyNiw3IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiAgICAgZ3N0X3F1ZXJ5X3VucmVmKHF1
ZXJ5KTsKICNlbHNlCiAgICAgZmxvYXQgbG9hZGVkID0gbWF4VGltZUxvYWRlZCgpOwotICAgIGlm
ICghbV9lcnJvck9jY3VyZWQgJiYgIW1faXNTdHJlYW1pbmcgJiYgbG9hZGVkID4gMCkKKyAgICBp
ZiAoIW1fZXJyb3JPY2N1cmVkICYmICFpc0xpdmVTdHJlYW0oKSAmJiBsb2FkZWQgPiAwKQogICAg
ICAgICB0aW1lUmFuZ2VzLT5hZGQoMCwgbG9hZGVkKTsKICNlbmRpZgogICAgIHJldHVybiB0aW1l
UmFuZ2VzLnJlbGVhc2UoKTsKQEAgLTc0OSwxMiArNzUyLDEzIEBAIGdib29sZWFuIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQog
ICAgICAgICB9CiAgICAgfQogCisgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJNZXNzYWdlIHJlY2Vp
dmVkIGZyb20gZWxlbWVudCAlcyIsIEdTVF9NRVNTQUdFX1NSQ19OQU1FKG1lc3NhZ2UpKTsKICAg
ICBzd2l0Y2ggKEdTVF9NRVNTQUdFX1RZUEUobWVzc2FnZSkpIHsKICAgICBjYXNlIEdTVF9NRVNT
QUdFX0VSUk9SOgogICAgICAgICBpZiAobV9yZXNldFBpcGVsaW5lKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yKG1lc3NhZ2UsICZlcnIub3V0UHRy
KCksICZkZWJ1Zy5vdXRQdHIoKSk7Ci0gICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiRXJyb3I6
ICVkLCAlcyIsIGVyci0+Y29kZSwgIGVyci0+bWVzc2FnZSk7CisgICAgICAgIExPR19WRVJCT1NF
KE1lZGlhLCAiRXJyb3IgJWQ6ICVzICh1cmw9JXMpIiwgZXJyLT5jb2RlLCBlcnItPm1lc3NhZ2Us
IG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgIEdTVF9ERUJVR19CSU5f
VE9fRE9UX0ZJTEVfV0lUSF9UUyhHU1RfQklOKG1fcGxheUJpbiksIEdTVF9ERUJVR19HUkFQSF9T
SE9XX0FMTCwgIndlYmtpdC12aWRlby5lcnJvciIpOwogCkBAIC05NDEsMTAgKzk0NSwxMyBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29u
c3QKIAogdW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0b3RhbEJ5dGVzKCkg
Y29uc3QKIHsKLSAgICBpZiAoIW1fc291cmNlKQorICAgIGlmIChtX2Vycm9yT2NjdXJlZCkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAobV9lcnJvck9jY3VyZWQpCisgICAgaWYgKG1fdG90
YWxCeXRlcyAhPSAtMSkKKyAgICAgICAgcmV0dXJuIG1fdG90YWxCeXRlczsKKworICAgIGlmICgh
bV9zb3VyY2UpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgR3N0Rm9ybWF0IGZtdCA9IEdTVF9G
T1JNQVRfQllURVM7CkBAIC05NTUsNyArOTYyLDggQEAgdW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjp0b3RhbEJ5dGVzKCkgY29uc3QKICAgICBpZiAoZ3N0X2VsZW1lbnRfcXVl
cnlfZHVyYXRpb24obV9zb3VyY2UuZ2V0KCksICZmbXQsICZsZW5ndGgpKSB7CiAjZW5kaWYKICAg
ICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJ0b3RhbEJ5dGVzICUiIEdfR0lOVDY0X0ZPUk1BVCwg
bGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOwor
ICAgICAgICBtX3RvdGFsQnl0ZXMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKTsKKyAg
ICAgICAgcmV0dXJuIG1fdG90YWxCeXRlczsKICAgICB9CiAKICAgICAvLyBGYWxsIGJhY2sgdG8g
cXVlcnlpbmcgdGhlIHNvdXJjZSBwYWRzIG1hbnVhbGx5LgpAQCAtMTAwMyw4ICsxMDExLDggQEAg
dW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0b3RhbEJ5dGVzKCkgY29uc3QK
ICAgICBnc3RfaXRlcmF0b3JfZnJlZShpdGVyKTsKIAogICAgIExPR19WRVJCT1NFKE1lZGlhLCAi
dG90YWxCeXRlcyAlIiBHX0dJTlQ2NF9GT1JNQVQsIGxlbmd0aCk7Ci0KLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CisgICAgbV90b3RhbEJ5dGVzID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGxlbmd0aCk7CisgICAgcmV0dXJuIG1fdG90YWxCeXRlczsKIH0KIAogdW5z
aWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkZWNvZGVkRnJhbWVDb3VudCgpIGNv
bnN0CkBAIC0xMTUwLDcgKzExNTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVy
OjpIYXZlRW5vdWdoRGF0YTsKICAgICAgICAgICAgIG1fcGF1c2VkID0gZmFsc2U7CiAKLSAgICAg
ICAgICAgIGlmIChtX2J1ZmZlcmluZykgeworICAgICAgICAgICAgaWYgKG1fYnVmZmVyaW5nICYm
ICFpc0xpdmVTdHJlYW0oKSkgewogICAgICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlh
UGxheWVyOjpIYXZlQ3VycmVudERhdGE7CiAgICAgICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUg
PSBNZWRpYVBsYXllcjo6TG9hZGluZzsKIApAQCAtMTE4Miw3ICsxMTkwLDIyIEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAgZ3N0
X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOwogICAgICAgICAvLyBDaGFuZ2UgaW4g
cHJvZ3Jlc3MKIAotICAgICAgICBpZiAoIW1faXNTdHJlYW1pbmcgJiYgIW1fYnVmZmVyaW5nKQor
ICAgICAgICAvLyBPbi1kaXNrIGJ1ZmZlcmluZyB3YXMgYXR0ZW1wdGVkIGJ1dCB0aGUgbWVkaWEg
aXMgbGl2ZS4gVGhpcworICAgICAgICAvLyBjYW4ndCB3b3JrIHNvIGRpc2FibGUgb24tZGlzayBi
dWZmZXJpbmcgYW5kIHJlc2V0IHRoZQorICAgICAgICAvLyBwaXBlbGluZS4KKyAgICAgICAgaWYg
KHN0YXRlID09IEdTVF9TVEFURV9SRUFEWSAmJiBpc0xpdmVTdHJlYW0oKSAmJiBtX3ByZWxvYWQg
PT0gTWVkaWFQbGF5ZXI6OkF1dG8pIHsKKyAgICAgICAgICAgIHNldFByZWxvYWQoTWVkaWFQbGF5
ZXI6Ok5vbmUpOworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJpbiwg
R1NUX1NUQVRFX05VTEwpOworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxh
eUJpbiwgR1NUX1NUQVRFX1BBVVNFRCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBBIGxpdmUg
c3RyZWFtIHdhcyBwYXVzZWQsIHJlc2V0IHRoZSBwaXBlbGluZS4KKyAgICAgICAgaWYgKHN0YXRl
ID09IEdTVF9TVEFURV9QQVVTRUQgJiYgcGVuZGluZyA9PSBHU1RfU1RBVEVfUExBWUlORyAmJiBp
c0xpdmVTdHJlYW0oKSkgeworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxh
eUJpbiwgR1NUX1NUQVRFX05VTEwpOworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRl
KG1fcGxheUJpbiwgR1NUX1NUQVRFX1BMQVlJTkcpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFpc0xpdmVTdHJlYW0oKSAmJiAhbV9idWZmZXJpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgaWYgKG1fc2Vla2luZykgewpAQCAtMTQwNSw2ICsxNDI4LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhY2hlRHVyYXRpb24oKQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb25DaGFuZ2VkKCkKIHsKKwogICAgIGZsb2F0IHBy
ZXZpb3VzRHVyYXRpb24gPSBtX21lZGlhRHVyYXRpb247CiAKICAgICBjYWNoZUR1cmF0aW9uKCk7
CkBAIC0xNDEzLDYgKzE0MzcsMTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmR1cmF0aW9uQ2hhbmdlZCgpCiAgICAgLy8gSFRNTE1lZGlhRWxlbWVudC4KICAgICBpZiAocHJl
dmlvdXNEdXJhdGlvbiAmJiBtX21lZGlhRHVyYXRpb24gIT0gcHJldmlvdXNEdXJhdGlvbikKICAg
ICAgICAgbV9wbGF5ZXItPmR1cmF0aW9uQ2hhbmdlZCgpOworCisgICAgaWYgKG1fcHJlbG9hZCA9
PSBNZWRpYVBsYXllcjo6Tm9uZSAmJiBtX3ByZWxvYWRTZXQgJiYgbV9pbml0aWFsUHJlbG9hZCA9
PSBNZWRpYVBsYXllcjo6QXV0bykgeworICAgICAgICBtX3RvdGFsQnl0ZXMgPSAtMTsKKyAgICAg
ICAgaWYgKHRvdGFsQnl0ZXMoKSAmJiAhaXNMaXZlU3RyZWFtKCkpIHsKKyAgICAgICAgICAgIHNl
dFByZWxvYWQobV9pbml0aWFsUHJlbG9hZCk7CisgICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRf
c3RhdGUobV9wbGF5QmluLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgICAgICAgICBnc3RfZWxlbWVu
dF9zZXRfc3RhdGUobV9wbGF5QmluLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgICAgICAgfQorICAg
IH0KIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzTXV0aW5n
KCkgY29uc3QKQEAgLTE2NDIsMTggKzE2NzUsMzcgQEAgUGxhdGZvcm1NZWRpYSBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnBsYXRmb3JtTWVkaWEoKSBjb25zdAogICAgIHJldHVybiBwOwog
fQogCitNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6Om1vdmllTG9hZFR5cGUoKSBjb25zdAoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPCBNZWRp
YVBsYXllcjo6SGF2ZU1ldGFkYXRhKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlVua25v
d247CisKKyAgICBpZiAoaXNMaXZlU3RyZWFtKCkpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXll
cjo6TGl2ZVN0cmVhbTsKKworICAgIHJldHVybiBNZWRpYVBsYXllcjo6RG93bmxvYWQ7Cit9CisK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRQcmVsb2FkKE1lZGlhUGxheWVy
OjpQcmVsb2FkIHByZWxvYWQpCiB7Ci0gICAgQVNTRVJUKG1fcGxheUJpbik7CisgICAgaWYgKCFt
X3ByZWxvYWRTZXQpICB7CisgICAgICAgIG1fcHJlbG9hZFNldCA9IHRydWU7CisgICAgICAgIG1f
aW5pdGlhbFByZWxvYWQgPSBwcmVsb2FkOworICAgIH0KIAogICAgIG1fcHJlbG9hZCA9IHByZWxv
YWQ7CiAKKyAgICBBU1NFUlQobV9wbGF5QmluKTsKKwogICAgIEdzdFBsYXlGbGFncyBmbGFnczsK
ICAgICBnX29iamVjdF9nZXQobV9wbGF5QmluLCAiZmxhZ3MiLCAmZmxhZ3MsIE5VTEwpOwotICAg
IGlmIChwcmVsb2FkID09IE1lZGlhUGxheWVyOjpOb25lKQorICAgIGlmIChtX3ByZWxvYWQgPCBN
ZWRpYVBsYXllcjo6QXV0bykgeworICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIkRpc2FibGlu
ZyBvbi1kaXNrIGJ1ZmZlcmluZyIpOwogICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5QmluLCAi
ZmxhZ3MiLCBmbGFncyAmIH5HU1RfUExBWV9GTEFHX0RPV05MT0FELCBOVUxMKTsKLSAgICBlbHNl
CisgICAgfSBlbHNlIGlmICghbV91cmwuaXNMb2NhbEZpbGUoKSkgeworICAgICAgICBMT0dfVkVS
Qk9TRShNZWRpYSwgIkVuYWJsaW5nIG9uLWRpc2sgYnVmZmVyaW5nIik7CiAgICAgICAgIGdfb2Jq
ZWN0X3NldChtX3BsYXlCaW4sICJmbGFncyIsIGZsYWdzIHwgR1NUX1BMQVlfRkxBR19ET1dOTE9B
RCwgTlVMTCk7CisgICAgfQogCiAgICAgaWYgKG1fZGVsYXlpbmdMb2FkICYmIG1fcHJlbG9hZCAh
PSBNZWRpYVBsYXllcjo6Tm9uZSkgewogICAgICAgICBtX2RlbGF5aW5nTG9hZCA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDllMjc3
Y2MuLjBhYzY1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmgKQEAgLTEyNCw2ICsxMjQsOCBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKICAgICAgICAgICAgIHVu
c2lnbmVkIGF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0OwogICAgICAgICAgICAgdW5zaWdu
ZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Q7CiAKKyAgICAgICAgICAgIE1lZGlhUGxh
eWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25zdDsKKwogICAgICAgICBwcml2
YXRlOgogICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhUGxheWVy
Kik7CiAKQEAgLTE1MCw2ICsxNTIsOCBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKIAogICAgICAgICAgICAg
dm9pZCBwcm9jZXNzQnVmZmVyaW5nU3RhdHMoR3N0TWVzc2FnZSopOwogCisgICAgICAgICAgICBi
b29sIGlzTGl2ZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJlYW1pbmcgfHwgIXRvdGFs
Qnl0ZXMoKTsgfQorCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBNZWRpYVBsYXllciog
bV9wbGF5ZXI7CiAgICAgICAgICAgICBHc3RFbGVtZW50KiBtX3BsYXlCaW47CkBAIC0xOTUsNiAr
MTk5LDEwIEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAgICAgICAgICAgR1JlZlB0cjxHc3RFbGVtZW50
PiBtX3dlYmtpdEF1ZGlvU2luazsKICAgICAgICAgICAgIEdSZWZQdHI8R3N0UGFkPiBtX3ZpZGVv
U2lua1BhZDsKICAgICAgICAgICAgIG11dGFibGUgSW50U2l6ZSBtX3ZpZGVvU2l6ZTsKKyAgICAg
ICAgICAgIGJvb2wgbV9wcmVsb2FkU2V0OworICAgICAgICAgICAgbXV0YWJsZSBsb25nIG1fdG90
YWxCeXRlczsKKyAgICAgICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgICAgICBNZWRpYVBsYXll
cjo6UHJlbG9hZCBtX2luaXRpYWxQcmVsb2FkOwogICAgIH07CiB9CiAKLS0gCjEuNy4xMC40
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155549</attachid>
            <date>2012-07-31 08:37:25 -0700</date>
            <delta_ts>2012-07-31 09:08:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>12381</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA4M2E4ZTc5MThlZTNiOTkwMjkyZTlhZTgwZTExYzFhMTIyYzk1ZDEzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTYXQsIDcgSnVsIDIwMTIgMTc6Mzc6MDEgLTA3MDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgNDIgKysrKysrKysrKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwICAgICAgfCAgIDgxICsrKysrKysrKysrKysrKystLS0tCiAuLi4vZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oICAgICAgICB8ICAgIDYgKysKIDMgZmls
ZXMgY2hhbmdlZCwgMTEzIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBjMWZlMWE5Li5mMjgxMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTIt
MDctMDcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHU3RyZWFtZXJdIExpdmUgc3RyZWFtIHN1cHBvcnQgaXMgd2VhaworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAwODQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHN1cmUgb24tZGlzayBidWZmZXJp
bmcgaXMgZGlzYWJsZWQgZm9yIGxpdmUgc3RyZWFtcy4gSXQgaXMKKyAgICAgICAgZW5hYmxlZCBp
bml0aWFsbHkgd2hlbiBsb2FkaW5nIGFueSByZW1vdGUgbWVkaWEgZmlsZSBpZiBwcmVsb2FkIGlz
CisgICAgICAgIHNldCB0byBBdXRvLiBMYXRlciBvbiBpZiB0aGUgcGxheWVyIGRldGVjdHMgdGhh
dCB0aGUgbWVkaWEgaXMgbGl2ZQorICAgICAgICBpdCBkaXNhYmxlcyBvbi1kaXNrIGJ1ZmZlcmlu
Zy4gVGhpcyBwYXRjaCBhbHNvIGFkZHMgc3VwcG9ydCBmb3IKKyAgICAgICAgY2FjaGluZyB0aGUg
dG90YWwgc2l6ZSBvZiB0aGUgbWVkaWEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9h
ZCk6IEtlZXAgdHJhY2sgb2YgdGhlCisgICAgICAgIG1lZGlhIHVybCBhcyBhbiBpbnN0YW5jZSBh
dHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmR1cmF0aW9uKTogTG9nZ2luZyBpbXByb3ZlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UmF0ZSk6IHVzZSB0aGUgbmV3CisgICAgICAgIGlz
TGl2ZVN0cmVhbSgpIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6YnVmZmVyZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6IEluZGljYXRlCisgICAgICAgIHNv
dXJjZSBvZiBkdXJhdGlvbiBtZXNzYWdlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpmaWxsVGltZXJGaXJlZCk6IFBlcmZvcm0gYW4KKyAgICAgICAgYW5v
bnltb3VzIGR1cmF0aW9uIGNoYW5nZSBlbWlzc2lvbiwgbW9zdGx5IHRvIGNhY2hlIGl0cyB2YWx1
ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxC
eXRlcyk6IFJldHVybgorICAgICAgICBjYWNoZWQgc2l6ZSB3aGVuIGF2YWlsYWJsZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKTog
VXNlIHRoZSBuZXcKKyAgICAgICAgaXNMaXZlU3RyZWFtKCkgbWV0aG9kIGFuZCBoYW5kbGUgc3Rh
dGUgY2hhbmdlIGNvcm5lciBjYXNlcyBmb3IgbGl2ZSBzdHJlYW1zLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQpOiBDYWNoZQor
ICAgICAgICBtZWRpYSB0b3RhbCBzaXplIGFuZCByZS1lbmFibGUgb24tZGlzayBidWZmZXJpbmcg
aWYgY2FjaGluZyBzdWNjZWVkcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bW92aWVMb2FkVHlwZSk6IE5ldworICAgICAgICBpbXBsZW1lbnRhdGlvbiBo
YW5kbGluZyBvbi1kaXNrIGJ1ZmZlcmVkIGFuZCBsaXZlIHN0cmVhbWluZyBjYXNlcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UHJlbG9hZCk6IFJl
Y29yZCBpbml0aWFsCisgICAgICAgIHByZWxvYWQgYXR0cmlidXRlIHZhbHVlLCBkbyBvbi1kaXNr
IGJ1ZmZlcmluZyBvbmx5IGZvciBBdXRvCisgICAgICAgIHByZWxvYWQgYXR0cmlidXRlIGFuZCBu
b24tbG9jYWwgbWVkaWEuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6aXNMaXZlU3RyZWFtKTogVXRpbGl0eQorICAgICAgICBtZXRob2QsIGEgc3RyZWFtIGlzIGxp
dmUgaWYgaXQgZ29lcyB0byBQQVVTRSB3aXRob3V0IHByZXJvbGxpbmcKKyAgICAgICAgb3IgaWYg
dGhlIGJ5dGUgc2l6ZSByZXBvcnRlZCBieSB0aGUgc291cmNlIGVsZW1lbnQgaXMgbnVsbC4KKwog
MjAxMi0wNy0zMSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBJbnRyb2R1Y2UgYSBtaW5pbWFsIFJUQ1BlZXJDb25uZWN0aW9uIHRvZ2V0aGVyIHdpdGgg
RGljdGlvbmFyeSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCmluZGV4IGZiYTgyNTIuLmQ4ZWM0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yMzUsNiArMjM1LDggQEAgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoTWVk
aWFQbGF5ZXIqIHBsYXllcikKICAgICAsIG1fYXVkaW9UaW1lckhhbmRsZXIoMCkKICAgICAsIG1f
dmlkZW9UaW1lckhhbmRsZXIoMCkKICAgICAsIG1fd2Via2l0QXVkaW9TaW5rKDApCisgICAgLCBt
X3RvdGFsQnl0ZXMoLTEpCisgICAgLCBtX29yaWdpbmFsUHJlbG9hZFdhc092ZXJyaWRkZW4oTWVk
aWFQbGF5ZXI6Ok5vbmUpCiB7CiAgICAgaWYgKGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3Rl
cldlYktpdEVsZW1lbnRzKCkpCiAgICAgICAgIGNyZWF0ZUdTVFBsYXlCaW4oKTsKQEAgLTI5Miw2
ICsyOTQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZChjb25zdCBT
dHJpbmcmIHVybCkKICAgICBpZiAoa3VybC5pc0xvY2FsRmlsZSgpKQogICAgICAgICBjbGVhblVy
bCA9IGNsZWFuVXJsLnN1YnN0cmluZygwLCBrdXJsLnBhdGhFbmQoKSk7CiAKKyAgICBtX3VybCA9
IEtVUkwoS1VSTCgpLCBjbGVhblVybCk7CiAgICAgZ19vYmplY3Rfc2V0KG1fcGxheUJpbiwgInVy
aSIsIGNsZWFuVXJsLnV0ZjgoKS5kYXRhKCksIE5VTEwpOwogCiAgICAgTE9HX1ZFUkJPU0UoTWVk
aWEsICJMb2FkICVzIiwgY2xlYW5VcmwudXRmOCgpLmRhdGEoKSk7CkBAIC00MDcsNyArNDEwLDcg
QEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbigpIGNvbnN0CiAg
ICAgYm9vbCBmYWlsdXJlID0gIWdzdF9lbGVtZW50X3F1ZXJ5X2R1cmF0aW9uKG1fcGxheUJpbiwg
JnRpbWVGb3JtYXQsICZ0aW1lTGVuZ3RoKSB8fCB0aW1lRm9ybWF0ICE9IEdTVF9GT1JNQVRfVElN
RSB8fCBzdGF0aWNfY2FzdDxndWludDY0Pih0aW1lTGVuZ3RoKSA9PSBHU1RfQ0xPQ0tfVElNRV9O
T05FOwogI2VuZGlmCiAgICAgaWYgKGZhaWx1cmUpIHsKLSAgICAgICAgTE9HX1ZFUkJPU0UoTWVk
aWEsICJUaW1lIGR1cmF0aW9uIHF1ZXJ5IGZhaWxlZC4iKTsKKyAgICAgICAgTE9HX1ZFUkJPU0Uo
TWVkaWEsICJUaW1lIGR1cmF0aW9uIHF1ZXJ5IGZhaWxlZCBmb3IgJXMiLCBtX3VybC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
aW5maW5pdHkoKTsKICAgICB9CiAKQEAgLTYzNCw3ICs2MzcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6c2V0UmF0ZShmbG9hdCByYXRlKQogICAgICAgICB8fCAocGVuZGlu
ZyA9PSBHU1RfU1RBVEVfUEFVU0VEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1faXNT
dHJlYW1pbmcpCisgICAgaWYgKGlzTGl2ZVN0cmVhbSgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX3BsYXliYWNrUmF0ZSA9IHJhdGU7CkBAIC02OTIsNyArNjk1LDcgQEAgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpyZWFkeVN0YXRlKCkgY29u
c3QKIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpi
dWZmZXJlZCgpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IHRpbWVSYW5nZXMgPSBU
aW1lUmFuZ2VzOjpjcmVhdGUoKTsKLSAgICBpZiAobV9lcnJvck9jY3VyZWQgfHwgbV9pc1N0cmVh
bWluZykKKyAgICBpZiAobV9lcnJvck9jY3VyZWQgfHwgaXNMaXZlU3RyZWFtKCkpCiAgICAgICAg
IHJldHVybiB0aW1lUmFuZ2VzLnJlbGVhc2UoKTsKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDAs
IDEwLCAzMSkKQEAgLTcyMyw3ICs3MjYsNyBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQoKSBjb25zdAogICAgIGdzdF9xdWVyeV91
bnJlZihxdWVyeSk7CiAjZWxzZQogICAgIGZsb2F0IGxvYWRlZCA9IG1heFRpbWVMb2FkZWQoKTsK
LSAgICBpZiAoIW1fZXJyb3JPY2N1cmVkICYmICFtX2lzU3RyZWFtaW5nICYmIGxvYWRlZCA+IDAp
CisgICAgaWYgKCFtX2Vycm9yT2NjdXJlZCAmJiAhaXNMaXZlU3RyZWFtKCkgJiYgbG9hZGVkID4g
MCkKICAgICAgICAgdGltZVJhbmdlcy0+YWRkKDAsIGxvYWRlZCk7CiAjZW5kaWYKICAgICByZXR1
cm4gdGltZVJhbmdlcy5yZWxlYXNlKCk7CkBAIC03NDksMTIgKzc1MiwxMyBAQCBnYm9vbGVhbiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVz
c2FnZSkKICAgICAgICAgfQogICAgIH0KIAorICAgIExPR19WRVJCT1NFKE1lZGlhLCAiTWVzc2Fn
ZSByZWNlaXZlZCBmcm9tIGVsZW1lbnQgJXMiLCBHU1RfTUVTU0FHRV9TUkNfTkFNRShtZXNzYWdl
KSk7CiAgICAgc3dpdGNoIChHU1RfTUVTU0FHRV9UWVBFKG1lc3NhZ2UpKSB7CiAgICAgY2FzZSBH
U1RfTUVTU0FHRV9FUlJPUjoKICAgICAgICAgaWYgKG1fcmVzZXRQaXBlbGluZSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAmZXJy
Lm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOwotICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwg
IkVycm9yOiAlZCwgJXMiLCBlcnItPmNvZGUsICBlcnItPm1lc3NhZ2UpOworICAgICAgICBMT0df
VkVSQk9TRShNZWRpYSwgIkVycm9yICVkOiAlcyAodXJsPSVzKSIsIGVyci0+Y29kZSwgZXJyLT5t
ZXNzYWdlLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICBHU1RfREVC
VUdfQklOX1RPX0RPVF9GSUxFX1dJVEhfVFMoR1NUX0JJTihtX3BsYXlCaW4pLCBHU1RfREVCVUdf
R1JBUEhfU0hPV19BTEwsICJ3ZWJraXQtdmlkZW8uZXJyb3IiKTsKIApAQCAtOTQxLDEwICs5NDUs
MTMgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRpZExvYWRpbmdQcm9ncmVz
cygpIGNvbnN0CiAKIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxC
eXRlcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3NvdXJjZSkKKyAgICBpZiAobV9lcnJvck9jY3Vy
ZWQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1fZXJyb3JPY2N1cmVkKQorICAgIGlm
IChtX3RvdGFsQnl0ZXMgIT0gLTEpCisgICAgICAgIHJldHVybiBtX3RvdGFsQnl0ZXM7CisKKyAg
ICBpZiAoIW1fc291cmNlKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIEdzdEZvcm1hdCBmbXQg
PSBHU1RfRk9STUFUX0JZVEVTOwpAQCAtOTU1LDcgKzk2Miw4IEBAIHVuc2lnbmVkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxCeXRlcygpIGNvbnN0CiAgICAgaWYgKGdzdF9lbGVt
ZW50X3F1ZXJ5X2R1cmF0aW9uKG1fc291cmNlLmdldCgpLCAmZm10LCAmbGVuZ3RoKSkgewogI2Vu
ZGlmCiAgICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAidG90YWxCeXRlcyAlIiBHX0dJTlQ2NF9G
T1JNQVQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVu
Z3RoKTsKKyAgICAgICAgbV90b3RhbEJ5dGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0
aCk7CisgICAgICAgIHJldHVybiBtX3RvdGFsQnl0ZXM7CiAgICAgfQogCiAgICAgLy8gRmFsbCBi
YWNrIHRvIHF1ZXJ5aW5nIHRoZSBzb3VyY2UgcGFkcyBtYW51YWxseS4KQEAgLTEwMDMsOCArMTAx
MSw4IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxCeXRlcygp
IGNvbnN0CiAgICAgZ3N0X2l0ZXJhdG9yX2ZyZWUoaXRlcik7CiAKICAgICBMT0dfVkVSQk9TRShN
ZWRpYSwgInRvdGFsQnl0ZXMgJSIgR19HSU5UNjRfRk9STUFULCBsZW5ndGgpOwotCi0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOworICAgIG1fdG90YWxCeXRlcyA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOworICAgIHJldHVybiBtX3RvdGFsQnl0ZXM7CiB9
CiAKIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGVjb2RlZEZyYW1lQ291
bnQoKSBjb25zdApAQCAtMTE1MCw3ICsxMTU4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRp
YVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CiAgICAgICAgICAgICBtX3BhdXNlZCA9IGZhbHNlOwog
Ci0gICAgICAgICAgICBpZiAobV9idWZmZXJpbmcpIHsKKyAgICAgICAgICAgIGlmIChtX2J1ZmZl
cmluZyAmJiAhaXNMaXZlU3RyZWFtKCkpIHsKICAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUg
PSBNZWRpYVBsYXllcjo6SGF2ZUN1cnJlbnREYXRhOwogICAgICAgICAgICAgICAgIG1fbmV0d29y
a1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CiAKQEAgLTExODIsNyArMTE5MCwyMiBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAg
ICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKHBlbmRpbmcpKTsKICAgICAgICAgLy8gQ2hh
bmdlIGluIHByb2dyZXNzCiAKLSAgICAgICAgaWYgKCFtX2lzU3RyZWFtaW5nICYmICFtX2J1ZmZl
cmluZykKKyAgICAgICAgLy8gT24tZGlzayBidWZmZXJpbmcgd2FzIGF0dGVtcHRlZCBidXQgdGhl
IG1lZGlhIGlzIGxpdmUuIFRoaXMKKyAgICAgICAgLy8gY2FuJ3Qgd29yayBzbyBkaXNhYmxlIG9u
LWRpc2sgYnVmZmVyaW5nIGFuZCByZXNldCB0aGUKKyAgICAgICAgLy8gcGlwZWxpbmUuCisgICAg
ICAgIGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUkVBRFkgJiYgaXNMaXZlU3RyZWFtKCkgJiYgbV9w
cmVsb2FkID09IE1lZGlhUGxheWVyOjpBdXRvKSB7CisgICAgICAgICAgICBzZXRQcmVsb2FkKE1l
ZGlhUGxheWVyOjpOb25lKTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3Bs
YXlCaW4sIEdTVF9TVEFURV9OVUxMKTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0
ZShtX3BsYXlCaW4sIEdTVF9TVEFURV9QQVVTRUQpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
QSBsaXZlIHN0cmVhbSB3YXMgcGF1c2VkLCByZXNldCB0aGUgcGlwZWxpbmUuCisgICAgICAgIGlm
IChzdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VEICYmIHBlbmRpbmcgPT0gR1NUX1NUQVRFX1BMQVlJ
TkcgJiYgaXNMaXZlU3RyZWFtKCkpIHsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0
ZShtX3BsYXlCaW4sIEdTVF9TVEFURV9OVUxMKTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3Nl
dF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFURV9QTEFZSU5HKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghaXNMaXZlU3RyZWFtKCkgJiYgIW1fYnVmZmVyaW5nKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGlmIChtX3NlZWtpbmcpIHsKQEAgLTE0MTMsNiArMTQzNiwxNSBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb25DaGFuZ2VkKCkKICAgICAv
LyBIVE1MTWVkaWFFbGVtZW50LgogICAgIGlmIChwcmV2aW91c0R1cmF0aW9uICYmIG1fbWVkaWFE
dXJhdGlvbiAhPSBwcmV2aW91c0R1cmF0aW9uKQogICAgICAgICBtX3BsYXllci0+ZHVyYXRpb25D
aGFuZ2VkKCk7CisKKyAgICBpZiAobV9wcmVsb2FkID09IE1lZGlhUGxheWVyOjpOb25lICYmIG1f
b3JpZ2luYWxQcmVsb2FkV2FzT3ZlcnJpZGRlbiA9PSBNZWRpYVBsYXllcjo6QXV0bykgeworICAg
ICAgICBtX3RvdGFsQnl0ZXMgPSAtMTsKKyAgICAgICAgaWYgKHRvdGFsQnl0ZXMoKSAmJiAhaXNM
aXZlU3RyZWFtKCkpIHsKKyAgICAgICAgICAgIHNldFByZWxvYWQobV9vcmlnaW5hbFByZWxvYWRX
YXNPdmVycmlkZGVuKTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlC
aW4sIEdTVF9TVEFURV9OVUxMKTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSht
X3BsYXlCaW4sIEdTVF9TVEFURV9QQVVTRUQpOworICAgICAgICB9CisgICAgfQogfQogCiBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNNdXRpbmcoKSBjb25zdApAQCAt
MTY0MiwxOCArMTY3NCwzNSBAQCBQbGF0Zm9ybU1lZGlhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6cGxhdGZvcm1NZWRpYSgpIGNvbnN0CiAgICAgcmV0dXJuIHA7CiB9CiAKK01lZGlhUGxh
eWVyOjpNb3ZpZUxvYWRUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bW92aWVMb2Fk
VHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBNZWRpYVBsYXllcjo6SGF2
ZU5vdGhpbmcpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6VW5rbm93bjsKKworICAgIGlm
IChpc0xpdmVTdHJlYW0oKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpMaXZlU3RyZWFt
OworCisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpEb3dubG9hZDsKK30KKwogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJl
bG9hZCkKIHsKLSAgICBBU1NFUlQobV9wbGF5QmluKTsKKyAgICBpZiAobV9wcmVsb2FkICE9IHBy
ZWxvYWQpCisgICAgICAgIG1fb3JpZ2luYWxQcmVsb2FkV2FzT3ZlcnJpZGRlbiA9IG1fcHJlbG9h
ZDsKIAogICAgIG1fcHJlbG9hZCA9IHByZWxvYWQ7CiAKKyAgICBBU1NFUlQobV9wbGF5QmluKTsK
KwogICAgIEdzdFBsYXlGbGFncyBmbGFnczsKICAgICBnX29iamVjdF9nZXQobV9wbGF5QmluLCAi
ZmxhZ3MiLCAmZmxhZ3MsIE5VTEwpOwotICAgIGlmIChwcmVsb2FkID09IE1lZGlhUGxheWVyOjpO
b25lKQotICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5QmluLCAiZmxhZ3MiLCBmbGFncyAmIH5H
U1RfUExBWV9GTEFHX0RPV05MT0FELCBOVUxMKTsKLSAgICBlbHNlCisgICAgaWYgKG1fcHJlbG9h
ZCA9PSBNZWRpYVBsYXllcjo6QXV0bykgeworICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIkVu
YWJsaW5nIG9uLWRpc2sgYnVmZmVyaW5nIik7CiAgICAgICAgIGdfb2JqZWN0X3NldChtX3BsYXlC
aW4sICJmbGFncyIsIGZsYWdzIHwgR1NUX1BMQVlfRkxBR19ET1dOTE9BRCwgTlVMTCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJEaXNhYmxpbmcgb24tZGlzayBi
dWZmZXJpbmciKTsKKyAgICAgICAgZ19vYmplY3Rfc2V0KG1fcGxheUJpbiwgImZsYWdzIiwgZmxh
Z3MgJiB+R1NUX1BMQVlfRkxBR19ET1dOTE9BRCwgTlVMTCk7CisgICAgfQogCiAgICAgaWYgKG1f
ZGVsYXlpbmdMb2FkICYmIG1fcHJlbG9hZCAhPSBNZWRpYVBsYXllcjo6Tm9uZSkgewogICAgICAg
ICBtX2RlbGF5aW5nTG9hZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oCmluZGV4IGY0NTRmZTMuLjgwYTdmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTEyNCw2ICsxMjQsOCBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGF1ZGlvRGVjb2RlZEJ5dGVDb3VudCgp
IGNvbnN0OwogICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29u
c3Q7CiAKKyAgICAgICAgICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5
cGUoKSBjb25zdDsKKwogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyKE1lZGlhUGxheWVyKik7CiAKQEAgLTE1MSw2ICsxNTMsNyBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlIHsKICAgICAgICAgICAgIHZvaWQgcHJvY2Vzc0J1ZmZlcmluZ1N0YXRzKEdzdE1l
c3NhZ2UqKTsKIAogICAgICAgICAgICAgdmlydHVhbCBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24o
KSBjb25zdCB7IHJldHVybiAiR1N0cmVhbWVyIjsgfQorICAgICAgICAgICAgYm9vbCBpc0xpdmVT
dHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2lzU3RyZWFtaW5nIHx8ICF0b3RhbEJ5dGVzKCk7IH0K
IAogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyOwpA
QCAtMTk1LDggKzE5OCwxMSBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBw
dWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKICAgICAgICAgICAgIGd1aW50IG1f
YXVkaW9UaW1lckhhbmRsZXI7CiAgICAgICAgICAgICBndWludCBtX3ZpZGVvVGltZXJIYW5kbGVy
OwogICAgICAgICAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3dlYmtpdEF1ZGlvU2luazsKKyAg
ICAgICAgICAgIG11dGFibGUgbG9uZyBtX3RvdGFsQnl0ZXM7CiAgICAgICAgICAgICBHUmVmUHRy
PEdzdFBhZD4gbV92aWRlb1NpbmtQYWQ7CiAgICAgICAgICAgICBtdXRhYmxlIEludFNpemUgbV92
aWRlb1NpemU7CisgICAgICAgICAgICBLVVJMIG1fdXJsOworICAgICAgICAgICAgTWVkaWFQbGF5
ZXI6OlByZWxvYWQgbV9vcmlnaW5hbFByZWxvYWRXYXNPdmVycmlkZGVuOwogICAgIH07CiB9CiAK
LS0gCjEuNy4xMC40
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155559</attachid>
            <date>2012-07-31 09:08:44 -0700</date>
            <delta_ts>2012-07-31 09:15:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>12416</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBjMTcyZGVlNGUxNjg1ZTU0YzU4OGQxZmE1ODQ1MWY3ZTkzMzgwZDc3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTYXQsIDcgSnVsIDIwMTIgMTc6Mzc6MDEgLTA3MDAKU3ViamVjdDogW1BBVENIXSBQ
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgNDIgKysrKysrKysrKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwICAgICAgfCAgIDgyICsrKysrKysrKysrKysrKystLS0tCiAuLi4vZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oICAgICAgICB8ICAgIDYgKysKIDMgZmls
ZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBjMWZlMWE5Li5mMjgxMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTIt
MDctMDcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHU3RyZWFtZXJdIExpdmUgc3RyZWFtIHN1cHBvcnQgaXMgd2VhaworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAwODQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHN1cmUgb24tZGlzayBidWZmZXJp
bmcgaXMgZGlzYWJsZWQgZm9yIGxpdmUgc3RyZWFtcy4gSXQgaXMKKyAgICAgICAgZW5hYmxlZCBp
bml0aWFsbHkgd2hlbiBsb2FkaW5nIGFueSByZW1vdGUgbWVkaWEgZmlsZSBpZiBwcmVsb2FkIGlz
CisgICAgICAgIHNldCB0byBBdXRvLiBMYXRlciBvbiBpZiB0aGUgcGxheWVyIGRldGVjdHMgdGhh
dCB0aGUgbWVkaWEgaXMgbGl2ZQorICAgICAgICBpdCBkaXNhYmxlcyBvbi1kaXNrIGJ1ZmZlcmlu
Zy4gVGhpcyBwYXRjaCBhbHNvIGFkZHMgc3VwcG9ydCBmb3IKKyAgICAgICAgY2FjaGluZyB0aGUg
dG90YWwgc2l6ZSBvZiB0aGUgbWVkaWEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9h
ZCk6IEtlZXAgdHJhY2sgb2YgdGhlCisgICAgICAgIG1lZGlhIHVybCBhcyBhbiBpbnN0YW5jZSBh
dHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmR1cmF0aW9uKTogTG9nZ2luZyBpbXByb3ZlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UmF0ZSk6IHVzZSB0aGUgbmV3CisgICAgICAgIGlz
TGl2ZVN0cmVhbSgpIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6YnVmZmVyZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6IEluZGljYXRlCisgICAgICAgIHNv
dXJjZSBvZiBkdXJhdGlvbiBtZXNzYWdlLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpmaWxsVGltZXJGaXJlZCk6IFBlcmZvcm0gYW4KKyAgICAgICAgYW5v
bnltb3VzIGR1cmF0aW9uIGNoYW5nZSBlbWlzc2lvbiwgbW9zdGx5IHRvIGNhY2hlIGl0cyB2YWx1
ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dG90YWxC
eXRlcyk6IFJldHVybgorICAgICAgICBjYWNoZWQgc2l6ZSB3aGVuIGF2YWlsYWJsZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKTog
VXNlIHRoZSBuZXcKKyAgICAgICAgaXNMaXZlU3RyZWFtKCkgbWV0aG9kIGFuZCBoYW5kbGUgc3Rh
dGUgY2hhbmdlIGNvcm5lciBjYXNlcyBmb3IgbGl2ZSBzdHJlYW1zLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQpOiBDYWNoZQor
ICAgICAgICBtZWRpYSB0b3RhbCBzaXplIGFuZCByZS1lbmFibGUgb24tZGlzayBidWZmZXJpbmcg
aWYgY2FjaGluZyBzdWNjZWVkcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bW92aWVMb2FkVHlwZSk6IE5ldworICAgICAgICBpbXBsZW1lbnRhdGlvbiBo
YW5kbGluZyBvbi1kaXNrIGJ1ZmZlcmVkIGFuZCBsaXZlIHN0cmVhbWluZyBjYXNlcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UHJlbG9hZCk6IFJl
Y29yZCBpbml0aWFsCisgICAgICAgIHByZWxvYWQgYXR0cmlidXRlIHZhbHVlLCBkbyBvbi1kaXNr
IGJ1ZmZlcmluZyBvbmx5IGZvciBBdXRvCisgICAgICAgIHByZWxvYWQgYXR0cmlidXRlIGFuZCBu
b24tbG9jYWwgbWVkaWEuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6aXNMaXZlU3RyZWFtKTogVXRpbGl0eQorICAgICAgICBtZXRob2QsIGEgc3RyZWFtIGlzIGxp
dmUgaWYgaXQgZ29lcyB0byBQQVVTRSB3aXRob3V0IHByZXJvbGxpbmcKKyAgICAgICAgb3IgaWYg
dGhlIGJ5dGUgc2l6ZSByZXBvcnRlZCBieSB0aGUgc291cmNlIGVsZW1lbnQgaXMgbnVsbC4KKwog
MjAxMi0wNy0zMSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBJbnRyb2R1Y2UgYSBtaW5pbWFsIFJUQ1BlZXJDb25uZWN0aW9uIHRvZ2V0aGVyIHdpdGgg
RGljdGlvbmFyeSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCmluZGV4IGZiYTgyNTIuLjE5M2Y2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yMzUsNiArMjM1LDggQEAgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoTWVk
aWFQbGF5ZXIqIHBsYXllcikKICAgICAsIG1fYXVkaW9UaW1lckhhbmRsZXIoMCkKICAgICAsIG1f
dmlkZW9UaW1lckhhbmRsZXIoMCkKICAgICAsIG1fd2Via2l0QXVkaW9TaW5rKDApCisgICAgLCBt
X3RvdGFsQnl0ZXMoLTEpCisgICAgLCBtX29yaWdpbmFsUHJlbG9hZFdhc0F1dG9BbmRXYXNPdmVy
cmlkZGVuKGZhbHNlKQogewogICAgIGlmIChpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJX
ZWJLaXRFbGVtZW50cygpKQogICAgICAgICBjcmVhdGVHU1RQbGF5QmluKCk7CkBAIC0yOTIsNiAr
Mjk0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWQoY29uc3QgU3Ry
aW5nJiB1cmwpCiAgICAgaWYgKGt1cmwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgY2xlYW5Vcmwg
PSBjbGVhblVybC5zdWJzdHJpbmcoMCwga3VybC5wYXRoRW5kKCkpOwogCisgICAgbV91cmwgPSBL
VVJMKEtVUkwoKSwgY2xlYW5VcmwpOwogICAgIGdfb2JqZWN0X3NldChtX3BsYXlCaW4sICJ1cmki
LCBjbGVhblVybC51dGY4KCkuZGF0YSgpLCBOVUxMKTsKIAogICAgIExPR19WRVJCT1NFKE1lZGlh
LCAiTG9hZCAlcyIsIGNsZWFuVXJsLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNDA3LDcgKzQxMCw3IEBA
IGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb24oKSBjb25zdAogICAg
IGJvb2wgZmFpbHVyZSA9ICFnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3BsYXlCaW4sICZ0
aW1lRm9ybWF0LCAmdGltZUxlbmd0aCkgfHwgdGltZUZvcm1hdCAhPSBHU1RfRk9STUFUX1RJTUUg
fHwgc3RhdGljX2Nhc3Q8Z3VpbnQ2ND4odGltZUxlbmd0aCkgPT0gR1NUX0NMT0NLX1RJTUVfTk9O
RTsKICNlbmRpZgogICAgIGlmIChmYWlsdXJlKSB7Ci0gICAgICAgIExPR19WRVJCT1NFKE1lZGlh
LCAiVGltZSBkdXJhdGlvbiBxdWVyeSBmYWlsZWQuIik7CisgICAgICAgIExPR19WRVJCT1NFKE1l
ZGlhLCAiVGltZSBkdXJhdGlvbiBxdWVyeSBmYWlsZWQgZm9yICVzIiwgbV91cmwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBudW1lcmljX2xpbWl0czxmbG9hdD46Omlu
ZmluaXR5KCk7CiAgICAgfQogCkBAIC02MzQsNyArNjM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnNldFJhdGUoZmxvYXQgcmF0ZSkKICAgICAgICAgfHwgKHBlbmRpbmcg
PT0gR1NUX1NUQVRFX1BBVVNFRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2lzU3Ry
ZWFtaW5nKQorICAgIGlmIChpc0xpdmVTdHJlYW0oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9wbGF5YmFja1JhdGUgPSByYXRlOwpAQCAtNjkyLDcgKzY5NSw3IEBAIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVhZHlTdGF0ZSgpIGNvbnN0
CiBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVm
ZmVyZWQoKSBjb25zdAogewogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0gVGlt
ZVJhbmdlczo6Y3JlYXRlKCk7Ci0gICAgaWYgKG1fZXJyb3JPY2N1cmVkIHx8IG1faXNTdHJlYW1p
bmcpCisgICAgaWYgKG1fZXJyb3JPY2N1cmVkIHx8IGlzTGl2ZVN0cmVhbSgpKQogICAgICAgICBy
ZXR1cm4gdGltZVJhbmdlcy5yZWxlYXNlKCk7CiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigwLCAx
MCwgMzEpCkBAIC03MjMsNyArNzI2LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICBnc3RfcXVlcnlfdW5y
ZWYocXVlcnkpOwogI2Vsc2UKICAgICBmbG9hdCBsb2FkZWQgPSBtYXhUaW1lTG9hZGVkKCk7Ci0g
ICAgaWYgKCFtX2Vycm9yT2NjdXJlZCAmJiAhbV9pc1N0cmVhbWluZyAmJiBsb2FkZWQgPiAwKQor
ICAgIGlmICghbV9lcnJvck9jY3VyZWQgJiYgIWlzTGl2ZVN0cmVhbSgpICYmIGxvYWRlZCA+IDAp
CiAgICAgICAgIHRpbWVSYW5nZXMtPmFkZCgwLCBsb2FkZWQpOwogI2VuZGlmCiAgICAgcmV0dXJu
IHRpbWVSYW5nZXMucmVsZWFzZSgpOwpAQCAtNzQ5LDEyICs3NTIsMTMgQEAgZ2Jvb2xlYW4gTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3Nh
Z2UpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBMT0dfVkVSQk9TRShNZWRpYSwgIk1lc3NhZ2Ug
cmVjZWl2ZWQgZnJvbSBlbGVtZW50ICVzIiwgR1NUX01FU1NBR0VfU1JDX05BTUUobWVzc2FnZSkp
OwogICAgIHN3aXRjaCAoR1NUX01FU1NBR0VfVFlQRShtZXNzYWdlKSkgewogICAgIGNhc2UgR1NU
X01FU1NBR0VfRVJST1I6CiAgICAgICAgIGlmIChtX3Jlc2V0UGlwZWxpbmUpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5v
dXRQdHIoKSwgJmRlYnVnLm91dFB0cigpKTsKLSAgICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJF
cnJvcjogJWQsICVzIiwgZXJyLT5jb2RlLCAgZXJyLT5tZXNzYWdlKTsKKyAgICAgICAgTE9HX1ZF
UkJPU0UoTWVkaWEsICJFcnJvciAlZDogJXMgKHVybD0lcykiLCBlcnItPmNvZGUsIGVyci0+bWVz
c2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgR1NUX0RFQlVH
X0JJTl9UT19ET1RfRklMRV9XSVRIX1RTKEdTVF9CSU4obV9wbGF5QmluKSwgR1NUX0RFQlVHX0dS
QVBIX1NIT1dfQUxMLCAid2Via2l0LXZpZGVvLmVycm9yIik7CiAKQEAgLTk0MSwxMCArOTQ1LDEz
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkaWRMb2FkaW5nUHJvZ3Jlc3Mo
KSBjb25zdAogCiB1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRvdGFsQnl0
ZXMoKSBjb25zdAogewotICAgIGlmICghbV9zb3VyY2UpCisgICAgaWYgKG1fZXJyb3JPY2N1cmVk
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChtX2Vycm9yT2NjdXJlZCkKKyAgICBpZiAo
bV90b3RhbEJ5dGVzICE9IC0xKQorICAgICAgICByZXR1cm4gbV90b3RhbEJ5dGVzOworCisgICAg
aWYgKCFtX3NvdXJjZSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBHc3RGb3JtYXQgZm10ID0g
R1NUX0ZPUk1BVF9CWVRFUzsKQEAgLTk1NSw3ICs5NjIsOSBAQCB1bnNpZ25lZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnRvdGFsQnl0ZXMoKSBjb25zdAogICAgIGlmIChnc3RfZWxlbWVu
dF9xdWVyeV9kdXJhdGlvbihtX3NvdXJjZS5nZXQoKSwgJmZtdCwgJmxlbmd0aCkpIHsKICNlbmRp
ZgogICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwgInRvdGFsQnl0ZXMgJSIgR19HSU5UNjRfRk9S
TUFULCBsZW5ndGgpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0
aCk7CisgICAgICAgIG1fdG90YWxCeXRlcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgp
OworICAgICAgICBtX2lzU3RyZWFtaW5nID0gIWxlbmd0aDsKKyAgICAgICAgcmV0dXJuIG1fdG90
YWxCeXRlczsKICAgICB9CiAKICAgICAvLyBGYWxsIGJhY2sgdG8gcXVlcnlpbmcgdGhlIHNvdXJj
ZSBwYWRzIG1hbnVhbGx5LgpAQCAtMTAwMyw4ICsxMDEyLDkgQEAgdW5zaWduZWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjp0b3RhbEJ5dGVzKCkgY29uc3QKICAgICBnc3RfaXRlcmF0b3Jf
ZnJlZShpdGVyKTsKIAogICAgIExPR19WRVJCT1NFKE1lZGlhLCAidG90YWxCeXRlcyAlIiBHX0dJ
TlQ2NF9GT1JNQVQsIGxlbmd0aCk7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGxlbmd0aCk7CisgICAgbV90b3RhbEJ5dGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0
aCk7CisgICAgbV9pc1N0cmVhbWluZyA9ICFsZW5ndGg7CisgICAgcmV0dXJuIG1fdG90YWxCeXRl
czsKIH0KIAogdW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkZWNvZGVkRnJh
bWVDb3VudCgpIGNvbnN0CkBAIC0xMTUwLDcgKzExNjAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6dXBkYXRlU3RhdGVzKCkKICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9
IE1lZGlhUGxheWVyOjpIYXZlRW5vdWdoRGF0YTsKICAgICAgICAgICAgIG1fcGF1c2VkID0gZmFs
c2U7CiAKLSAgICAgICAgICAgIGlmIChtX2J1ZmZlcmluZykgeworICAgICAgICAgICAgaWYgKG1f
YnVmZmVyaW5nICYmICFpc0xpdmVTdHJlYW0oKSkgewogICAgICAgICAgICAgICAgIG1fcmVhZHlT
dGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVudERhdGE7CiAgICAgICAgICAgICAgICAgbV9u
ZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKIApAQCAtMTE4Miw3ICsxMTkyLDIy
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVTdGF0ZXMoKQogICAg
ICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocGVuZGluZykpOwogICAgICAgICAv
LyBDaGFuZ2UgaW4gcHJvZ3Jlc3MKIAotICAgICAgICBpZiAoIW1faXNTdHJlYW1pbmcgJiYgIW1f
YnVmZmVyaW5nKQorICAgICAgICAvLyBPbi1kaXNrIGJ1ZmZlcmluZyB3YXMgYXR0ZW1wdGVkIGJ1
dCB0aGUgbWVkaWEgaXMgbGl2ZS4gVGhpcworICAgICAgICAvLyBjYW4ndCB3b3JrIHNvIGRpc2Fi
bGUgb24tZGlzayBidWZmZXJpbmcgYW5kIHJlc2V0IHRoZQorICAgICAgICAvLyBwaXBlbGluZS4K
KyAgICAgICAgaWYgKHN0YXRlID09IEdTVF9TVEFURV9SRUFEWSAmJiBpc0xpdmVTdHJlYW0oKSAm
JiBtX3ByZWxvYWQgPT0gTWVkaWFQbGF5ZXI6OkF1dG8pIHsKKyAgICAgICAgICAgIHNldFByZWxv
YWQoTWVkaWFQbGF5ZXI6Ok5vbmUpOworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRl
KG1fcGxheUJpbiwgR1NUX1NUQVRFX05VTEwpOworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKG1fcGxheUJpbiwgR1NUX1NUQVRFX1BBVVNFRCk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBBIGxpdmUgc3RyZWFtIHdhcyBwYXVzZWQsIHJlc2V0IHRoZSBwaXBlbGluZS4KKyAgICAg
ICAgaWYgKHN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQgJiYgcGVuZGluZyA9PSBHU1RfU1RBVEVf
UExBWUlORyAmJiBpc0xpdmVTdHJlYW0oKSkgeworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKG1fcGxheUJpbiwgR1NUX1NUQVRFX05VTEwpOworICAgICAgICAgICAgZ3N0X2VsZW1l
bnRfc2V0X3N0YXRlKG1fcGxheUJpbiwgR1NUX1NUQVRFX1BMQVlJTkcpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCFpc0xpdmVTdHJlYW0oKSAmJiAhbV9idWZmZXJpbmcpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgaWYgKG1fc2Vla2luZykgewpAQCAtMTQxMyw2ICsxNDM4LDE1
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQoKQog
ICAgIC8vIEhUTUxNZWRpYUVsZW1lbnQuCiAgICAgaWYgKHByZXZpb3VzRHVyYXRpb24gJiYgbV9t
ZWRpYUR1cmF0aW9uICE9IHByZXZpb3VzRHVyYXRpb24pCiAgICAgICAgIG1fcGxheWVyLT5kdXJh
dGlvbkNoYW5nZWQoKTsKKworICAgIGlmIChtX3ByZWxvYWQgPT0gTWVkaWFQbGF5ZXI6Ok5vbmUg
JiYgbV9vcmlnaW5hbFByZWxvYWRXYXNBdXRvQW5kV2FzT3ZlcnJpZGRlbikgeworICAgICAgICBt
X3RvdGFsQnl0ZXMgPSAtMTsKKyAgICAgICAgaWYgKHRvdGFsQnl0ZXMoKSAmJiAhaXNMaXZlU3Ry
ZWFtKCkpIHsKKyAgICAgICAgICAgIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OkF1dG8pOworICAg
ICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJpbiwgR1NUX1NUQVRFX05VTEwp
OworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJpbiwgR1NUX1NUQVRF
X1BBVVNFRCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpzdXBwb3J0c011dGluZygpIGNvbnN0CkBAIC0xNjQyLDE4ICsxNjc2LDM0IEBA
IFBsYXRmb3JtTWVkaWEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF0Zm9ybU1lZGlh
KCkgY29uc3QKICAgICByZXR1cm4gcDsKIH0KIAorTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjptb3ZpZUxvYWRUeXBlKCkgY29uc3QKK3sKKyAg
ICBpZiAobV9yZWFkeVN0YXRlID09IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpVbmtub3duOworCisgICAgaWYgKGlzTGl2ZVN0cmVhbSgpKQor
ICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW07CisKKyAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OkRvd25sb2FkOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6c2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkKQogewotICAgIEFTU0VS
VChtX3BsYXlCaW4pOworICAgIG1fb3JpZ2luYWxQcmVsb2FkV2FzQXV0b0FuZFdhc092ZXJyaWRk
ZW4gPSBtX3ByZWxvYWQgIT0gcHJlbG9hZCAmJiBtX3ByZWxvYWQgPT0gTWVkaWFQbGF5ZXI6OkF1
dG87CiAKICAgICBtX3ByZWxvYWQgPSBwcmVsb2FkOwogCisgICAgQVNTRVJUKG1fcGxheUJpbik7
CisKICAgICBHc3RQbGF5RmxhZ3MgZmxhZ3M7CiAgICAgZ19vYmplY3RfZ2V0KG1fcGxheUJpbiwg
ImZsYWdzIiwgJmZsYWdzLCBOVUxMKTsKLSAgICBpZiAocHJlbG9hZCA9PSBNZWRpYVBsYXllcjo6
Tm9uZSkKLSAgICAgICAgZ19vYmplY3Rfc2V0KG1fcGxheUJpbiwgImZsYWdzIiwgZmxhZ3MgJiB+
R1NUX1BMQVlfRkxBR19ET1dOTE9BRCwgTlVMTCk7Ci0gICAgZWxzZQorICAgIGlmIChtX3ByZWxv
YWQgPT0gTWVkaWFQbGF5ZXI6OkF1dG8pIHsKKyAgICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJF
bmFibGluZyBvbi1kaXNrIGJ1ZmZlcmluZyIpOwogICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5
QmluLCAiZmxhZ3MiLCBmbGFncyB8IEdTVF9QTEFZX0ZMQUdfRE9XTkxPQUQsIE5VTEwpOworICAg
IH0gZWxzZSB7CisgICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiRGlzYWJsaW5nIG9uLWRpc2sg
YnVmZmVyaW5nIik7CisgICAgICAgIGdfb2JqZWN0X3NldChtX3BsYXlCaW4sICJmbGFncyIsIGZs
YWdzICYgfkdTVF9QTEFZX0ZMQUdfRE9XTkxPQUQsIE5VTEwpOworICAgIH0KIAogICAgIGlmICht
X2RlbGF5aW5nTG9hZCAmJiBtX3ByZWxvYWQgIT0gTWVkaWFQbGF5ZXI6Ok5vbmUpIHsKICAgICAg
ICAgbV9kZWxheWluZ0xvYWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuaAppbmRleCBmNDU0ZmUzLi5kMTRkMDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0xMjQsNiArMTI0LDggQEAgY2xh
c3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBhdWRpb0RlY29kZWRCeXRlQ291bnQo
KSBjb25zdDsKICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNv
bnN0OwogCisgICAgICAgICAgICBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRU
eXBlKCkgY29uc3Q7CisKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcihNZWRpYVBsYXllciopOwogCkBAIC0xNTEsNiArMTUzLDcgQEAgY2xh
c3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZSB7CiAgICAgICAgICAgICB2b2lkIHByb2Nlc3NCdWZmZXJpbmdTdGF0cyhHc3RN
ZXNzYWdlKik7CiAKICAgICAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGVuZ2luZURlc2NyaXB0aW9u
KCkgY29uc3QgeyByZXR1cm4gIkdTdHJlYW1lciI7IH0KKyAgICAgICAgICAgIGJvb2wgaXNMaXZl
U3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmVhbWluZzsgfQogCiAgICAgICAgIHByaXZh
dGU6CiAgICAgICAgICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CkBAIC0xOTUsOCArMTk4LDEx
IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmxpYyBNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2UgewogICAgICAgICAgICAgZ3VpbnQgbV9hdWRpb1RpbWVySGFuZGxl
cjsKICAgICAgICAgICAgIGd1aW50IG1fdmlkZW9UaW1lckhhbmRsZXI7CiAgICAgICAgICAgICBH
UmVmUHRyPEdzdEVsZW1lbnQ+IG1fd2Via2l0QXVkaW9TaW5rOworICAgICAgICAgICAgbXV0YWJs
ZSBsb25nIG1fdG90YWxCeXRlczsKICAgICAgICAgICAgIEdSZWZQdHI8R3N0UGFkPiBtX3ZpZGVv
U2lua1BhZDsKICAgICAgICAgICAgIG11dGFibGUgSW50U2l6ZSBtX3ZpZGVvU2l6ZTsKKyAgICAg
ICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgICAgICBib29sIG1fb3JpZ2luYWxQcmVsb2FkV2Fz
QXV0b0FuZFdhc092ZXJyaWRkZW47CiAgICAgfTsKIH0KIAotLSAKMS43LjEwLjQ=
</data>
<flag name="review"
          id="165046"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>