<?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>132671</bug_id>
          
          <creation_ts>2014-05-07 22:16:31 -0700</creation_ts>
          <short_desc>[GStreamer] A video element isn&apos;t drawn onto the canvas.</short_desc>
          <delta_ts>2016-01-04 03:15:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Seongjun Kim">isair</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>agomez</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>isair</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>yoon</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1007530</commentid>
    <comment_count>0</comment_count>
    <who name="Seongjun Kim">isair</who>
    <bug_when>2014-05-07 22:16:31 -0700</bug_when>
    <thetext>void drawImage(in HTMLVideoElement image, in double dx, in double dy, in optional double dw, in double dh);
  void drawImage(in HTMLVideoElement image, in double sx, in double sy, in double sw, in double sh, in double dx, in double dy, in double dw, in double dh);

drawImage for a video elemeht didn&apos;t work.


See attached example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007531</commentid>
    <comment_count>1</comment_count>
      <attachid>231047</attachid>
    <who name="Seongjun Kim">isair</who>
    <bug_when>2014-05-07 22:17:10 -0700</bug_when>
    <thetext>Created attachment 231047
example</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007536</commentid>
    <comment_count>2</comment_count>
    <who name="Seongjun Kim">isair</who>
    <bug_when>2014-05-07 22:59:58 -0700</bug_when>
    <thetext>This is a regression of below.
https://bugs.webkit.org/show_bug.cgi?id=86410


(WebCore::MediaPlayerPrivateGStreamerBase::paint) is used for &apos;drawImage&apos;.
But when accelerated compositing is used, this function didn&apos;t work.


This exception for AC is still needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007538</commentid>
    <comment_count>3</comment_count>
      <attachid>231048</attachid>
    <who name="Seongjun Kim">isair</who>
    <bug_when>2014-05-07 23:28:57 -0700</bug_when>
    <thetext>Created attachment 231048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007568</commentid>
    <comment_count>4</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2014-05-08 02:11:07 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; This is a regression of below.
&gt; https://bugs.webkit.org/show_bug.cgi?id=86410
&gt; 
&gt; 
&gt; (WebCore::MediaPlayerPrivateGStreamerBase::paint) is used for &apos;drawImage&apos;.
&gt; But when accelerated compositing is used, this function didn&apos;t work.
&gt; 
&gt; 
&gt; This exception for AC is still needed?

In AC the video is painted using GL textures. Look at 

void MediaPlayerPrivateGStreamerBase::paintToTextureMapper(TextureMapper* textureMapper, const FloatRect&amp; targetRect, const TransformationMatrix&amp; matrix, float opacity)

If AC is not used, the painting is done through Cairo, and it&apos;s when this method is used.

In AC we wait for the TextureMapper update to paint the video buffer in the texture.

Removing this guard will mean to mix approaches, and that&apos;s not sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007576</commentid>
    <comment_count>5</comment_count>
    <who name="Seongjun Kim">isair</who>
    <bug_when>2014-05-08 02:33:47 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; This is a regression of below.
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=86410
&gt; &gt; 
&gt; &gt; 
&gt; &gt; (WebCore::MediaPlayerPrivateGStreamerBase::paint) is used for &apos;drawImage&apos;.
&gt; &gt; But when accelerated compositing is used, this function didn&apos;t work.
&gt; &gt; 
&gt; &gt; 
&gt; &gt; This exception for AC is still needed?
&gt; 
&gt; In AC the video is painted using GL textures. Look at 
&gt; 
&gt; void MediaPlayerPrivateGStreamerBase::paintToTextureMapper(TextureMapper* textureMapper, const FloatRect&amp; targetRect, const TransformationMatrix&amp; matrix, float opacity)
&gt; 
&gt; If AC is not used, the painting is done through Cairo, and it&apos;s when this method is used.
&gt; 
&gt; In AC we wait for the TextureMapper update to paint the video buffer in the texture.
&gt; 
&gt; Removing this guard will mean to mix approaches, and that&apos;s not sane.



Did you mean that &apos;drawImage&apos; should use &apos;paintToTextureMapper&apos; instead of &apos;paint&apos; in AC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007577</commentid>
    <comment_count>6</comment_count>
      <attachid>231048</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2014-05-08 02:33:58 -0700</bug_when>
    <thetext>Comment on attachment 231048
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:-350
&gt; -        return;

What about, instead of removing this code, and instead or a simple return,  we do

    if (supportsAcceleratedRendering() &amp;&amp; m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerRenderingCanBeAccelerated(m_player) &amp;&amp; client()) {
        client()-&gt;setPlatformLayerNeedsDisplay();
        return;
    }

just as in void MediaPlayerPrivateGStreamerBase::triggerRepaint(GstBuffer* buffer)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007578</commentid>
    <comment_count>7</comment_count>
      <attachid>231048</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2014-05-08 02:34:01 -0700</bug_when>
    <thetext>Comment on attachment 231048
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:-350
&gt; -        return;

What about, instead of removing this code, and instead or a simple return,  we do

    if (supportsAcceleratedRendering() &amp;&amp; m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerRenderingCanBeAccelerated(m_player) &amp;&amp; client()) {
        client()-&gt;setPlatformLayerNeedsDisplay();
        return;
    }

just as in void MediaPlayerPrivateGStreamerBase::triggerRepaint(GstBuffer* buffer)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007579</commentid>
    <comment_count>8</comment_count>
      <attachid>231048</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2014-05-08 02:34:02 -0700</bug_when>
    <thetext>Comment on attachment 231048
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:-350
&gt; -        return;

What about, instead of removing this code, and instead or a simple return,  we do

    if (supportsAcceleratedRendering() &amp;&amp; m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerRenderingCanBeAccelerated(m_player) &amp;&amp; client()) {
        client()-&gt;setPlatformLayerNeedsDisplay();
        return;
    }

just as in void MediaPlayerPrivateGStreamerBase::triggerRepaint(GstBuffer* buffer)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007580</commentid>
    <comment_count>9</comment_count>
      <attachid>231048</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2014-05-08 02:34:06 -0700</bug_when>
    <thetext>Comment on attachment 231048
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:-350
&gt; -        return;

What about, instead of removing this code, and instead or a simple return,  we do

    if (supportsAcceleratedRendering() &amp;&amp; m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerRenderingCanBeAccelerated(m_player) &amp;&amp; client()) {
        client()-&gt;setPlatformLayerNeedsDisplay();
        return;
    }

just as in void MediaPlayerPrivateGStreamerBase::triggerRepaint(GstBuffer* buffer)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007581</commentid>
    <comment_count>10</comment_count>
      <attachid>231048</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2014-05-08 02:34:13 -0700</bug_when>
    <thetext>Comment on attachment 231048
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:-350
&gt; -        return;

What about, instead of removing this code, and instead or a simple return,  we do

    if (supportsAcceleratedRendering() &amp;&amp; m_player-&gt;mediaPlayerClient()-&gt;mediaPlayerRenderingCanBeAccelerated(m_player) &amp;&amp; client()) {
        client()-&gt;setPlatformLayerNeedsDisplay();
        return;
    }

just as in void MediaPlayerPrivateGStreamerBase::triggerRepaint(GstBuffer* buffer)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008900</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-05-13 02:45:37 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=231047) [details]
&gt; example

Thanks for the patch, it indeed works :) Can a layout test be unskipped thanks to the fix? 

(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; This is a regression of below.
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=86410
&gt; &gt; 
&gt; &gt; 
&gt; &gt; (WebCore::MediaPlayerPrivateGStreamerBase::paint) is used for &apos;drawImage&apos;.
&gt; &gt; But when accelerated compositing is used, this function didn&apos;t work.
&gt; &gt; 
&gt; &gt; 
&gt; &gt; This exception for AC is still needed?
&gt; 
&gt; In AC the video is painted using GL textures. Look at 
&gt; 
&gt; void MediaPlayerPrivateGStreamerBase::paintToTextureMapper(TextureMapper* textureMapper, const FloatRect&amp; targetRect, const TransformationMatrix&amp; matrix, float opacity)
&gt; 
&gt; If AC is not used, the painting is done through Cairo, and it&apos;s when this method is used.
&gt; 
&gt; In AC we wait for the TextureMapper update to paint the video buffer in the texture.
&gt; 
&gt; Removing this guard will mean to mix approaches, and that&apos;s not sane.

::paint is no longer used indeed excepted in this case, whatever if AC is disabled or not. I think this patch is ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009205</commentid>
    <comment_count>12</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2014-05-14 01:09:10 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; ::paint is no longer used indeed excepted in this case, whatever if AC is disabled or not. I think this patch is ok.

But it makes me wonder, what if the negotiated buffer cannot download the raw image, relying in gst_video_gl_texture_upload_meta_upload(). Or perhaps in the future, when we will be able to negotiate buffers as EGLImages, how could Cairo handle it.

Perhaps I&apos;m not understanding the issue correctly, but I think that ::paint shall be handled by the texturemapper too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009206</commentid>
    <comment_count>13</comment_count>
    <who name="Seongjun Kim">isair</who>
    <bug_when>2014-05-14 01:25:21 -0700</bug_when>
    <thetext>(In reply to comment #11) 
&gt; Thanks for the patch, it indeed works :) Can a layout test be unskipped thanks to the fix? 


I tried layouttest, but there are many crashed tests with following message.
 Xlib:  extension &quot;NV-GLX&quot; missing on display &quot;:1&quot;.

Would you mind helping for me?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009207</commentid>
    <comment_count>14</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-05-14 01:32:53 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; ::paint is no longer used indeed excepted in this case, whatever if AC is disabled or not. I think this patch is ok.
&gt; 
&gt; But it makes me wonder, what if the negotiated buffer cannot download the raw image, relying in gst_video_gl_texture_upload_meta_upload(). Or perhaps in the future, when we will be able to negotiate buffers as EGLImages, how could Cairo handle it.
&gt; 
&gt; Perhaps I&apos;m not understanding the issue correctly, but I think that ::paint shall be handled by the texturemapper too.

I think we&apos;re going a bit off-topic here but if we add EGLImage support it will be a new memory in the buffer and it should be possible to do a zero-copy of the texture into a Cairo-GL surface (I think/hope :))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009208</commentid>
    <comment_count>15</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-05-14 01:35:11 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #11) 
&gt; &gt; Thanks for the patch, it indeed works :) Can a layout test be unskipped thanks to the fix? 
&gt; 
&gt; 
&gt; I tried layouttest, but there are many crashed tests with following message.
&gt;  Xlib:  extension &quot;NV-GLX&quot; missing on display &quot;:1&quot;.
&gt; 
&gt; Would you mind helping for me?

Ping me on IRC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013756</commentid>
    <comment_count>16</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-06-06 00:04:18 -0700</bug_when>
    <thetext>Ping? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014083</commentid>
    <comment_count>17</comment_count>
    <who name="Seongjun Kim">isair</who>
    <bug_when>2014-06-09 02:28:15 -0700</bug_when>
    <thetext>I reinstall ubuntu 14.04 however, I still fail to run layout-test with Xvfb errors... I don&apos;t know what is wrong.


How about applying this patch first or someone continue this work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050959</commentid>
    <comment_count>18</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-11-25 00:09:53 -0800</bug_when>
    <thetext>To work around Xvbf errors you can set the USE_NATIVE_XDISPLAY=1 env var when running the layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051057</commentid>
    <comment_count>19</comment_count>
    <who name="Seongjun Kim">isair</who>
    <bug_when>2014-11-26 01:58:40 -0800</bug_when>
    <thetext>Fortunately, Xvfb problem is sovled after rebasing latest revision!

I am runing layout test now :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081194</commentid>
    <comment_count>20</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-03-30 09:40:14 -0700</bug_when>
    <thetext>This is going to need more work when we switch to glimagesink for rendering. ::paint will need to handle the texture stored in the sample and somehow render it with Cairo, if that&apos;s possible.

Worst case we&apos;ll need to download the bitmap data from the GPU to CPU :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081206</commentid>
    <comment_count>21</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-03-30 10:11:28 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; This is going to need more work when we switch to glimagesink for rendering.
&gt; ::paint will need to handle the texture stored in the sample and somehow
&gt; render it with Cairo, if that&apos;s possible.
&gt; 
&gt; Worst case we&apos;ll need to download the bitmap data from the GPU to CPU :/

I&apos;m not sure it makes sense to use the GL path of GStreamer if accelerated compositing isn&apos;t enabled. One thing we can start considering though is to deprecate the non-accelerated path entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081571</commentid>
    <comment_count>22</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-03-31 00:10:05 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; This is going to need more work when we switch to glimagesink for rendering.
&gt; &gt; ::paint will need to handle the texture stored in the sample and somehow
&gt; &gt; render it with Cairo, if that&apos;s possible.
&gt; &gt; 
&gt; &gt; Worst case we&apos;ll need to download the bitmap data from the GPU to CPU :/
&gt; 
&gt; I&apos;m not sure it makes sense to use the GL path of GStreamer if accelerated
&gt; compositing isn&apos;t enabled. One thing we can start considering though is to
&gt; deprecate the non-accelerated path entirely.

I agree, perhaps we should wait the gst 1.6 release though.

Anyway for this specific issue it seems we could directly render the gst texture to a cairo-gl surface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081966</commentid>
    <comment_count>23</comment_count>
      <attachid>249912</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-04-01 03:56:06 -0700</bug_when>
    <thetext>Created attachment 249912
patch

Likely more iterations are needed, I&apos;m not very familiar with the
GraphicsContext stuff :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081969</commentid>
    <comment_count>24</comment_count>
      <attachid>249912</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-04-01 04:30:42 -0700</bug_when>
    <thetext>Comment on attachment 249912
patch

I think it is much safe to test ENABLE(ACCELERATED_2D_CANVAS) with a USE(CAIRO) to ensure we are using cairo-gl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081982</commentid>
    <comment_count>25</comment_count>
      <attachid>249918</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-04-01 06:28:21 -0700</bug_when>
    <thetext>Created attachment 249918
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081993</commentid>
    <comment_count>26</comment_count>
      <attachid>249918</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-01 07:03:27 -0700</bug_when>
    <thetext>Comment on attachment 249918
patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:83
&gt; +#if USE(CAIRO)
&gt; +#include &lt;cairo-gl.h&gt;
&gt; +#endif

We can compile with cairo, but without cairo gl. We should expose those to the build somehow, or use ENABLE(ACCELERATED_2D_CANVAS) &amp;&amp; USE(CAIRO)

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:579
&gt; +PassNativeImagePtr MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime()
&gt; +{
&gt; +#if !USE(GSTREAMER_GL)
&gt; +    return nullptr;
&gt; +#endif

This function is called inside a #if USE(GSTREAMER_GL) block, right? I think we could just defined it only in such case

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:595
&gt; +    if (!GST_IS_SAMPLE(m_sample.get()))
&gt; +        return nullptr;
&gt; +
&gt; +    GstCaps* caps = gst_sample_get_caps(m_sample.get());
&gt; +    if (!caps)
&gt; +        return nullptr;
&gt; +
&gt; +    GstVideoInfo videoInfo;
&gt; +    gst_video_info_init(&amp;videoInfo);
&gt; +    if (!gst_video_info_from_caps(&amp;videoInfo, caps))
&gt; +        return nullptr;

It seems to me this code is duplicated in several places already, maybe we could move it to a helper function, something like bool getSampleVideoInfo(GstSmaple* sample, GstVideoInfo&amp; videoInfo);

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:602
&gt; +#if USE(CAIRO)

Do we need previous stuff (gst_video_frame_map) when not using cairo?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:604
&gt; +    GLContext::sharingContext()-&gt;makeContextCurrent();
&gt; +    GLContext* context = GLContext::sharingContext();

Why getting the sharing context twice? Can we get the context first and then calling context-&gt;makeContextCurrent() ?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:611
&gt; +    FloatSize size = FloatSize(GST_VIDEO_INFO_WIDTH(&amp;videoInfo), GST_VIDEO_INFO_HEIGHT(&amp;videoInfo));

Why FloatSize? cairo expects integers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082017</commentid>
    <comment_count>27</comment_count>
      <attachid>249924</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-04-01 09:17:33 -0700</bug_when>
    <thetext>Created attachment 249924
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082021</commentid>
    <comment_count>28</comment_count>
      <attachid>249926</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-04-01 09:45:10 -0700</bug_when>
    <thetext>Created attachment 249926
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082028</commentid>
    <comment_count>29</comment_count>
      <attachid>249927</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-04-01 10:06:39 -0700</bug_when>
    <thetext>Created attachment 249927
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151998</commentid>
    <comment_count>30</comment_count>
      <attachid>249927</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-01-02 11:00:44 -0800</bug_when>
    <thetext>Comment on attachment 249927
patch

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

I only spot-checked this for obvious C++ errors, since not familiar with this code, but most of these changes only execute when two experimental build options are enabled (ACCELERATED_2D_CANVAS and USE_GSTREAMER_GL), neither of which we are likely to turn on for end users anytime soon, so it seems silly for this to be stalled on request queue any longer.

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:275
&gt; +            // The destination rectangle will have it&apos;s width and height already reversed for the orientation of

it&apos;s -&gt; its</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152276</commentid>
    <comment_count>31</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-01-04 01:33:07 -0800</bug_when>
    <thetext>This one no longer works... I&apos;ll have to dive in again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152286</commentid>
    <comment_count>32</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-01-04 03:14:01 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; This one no longer works... I&apos;ll have to dive in again.

I had the threaded compositor disabled, it works if I enable it. Will land the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152287</commentid>
    <comment_count>33</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-01-04 03:15:49 -0800</bug_when>
    <thetext>Committed r194528: &lt;http://trac.webkit.org/changeset/194528&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>231047</attachid>
            <date>2014-05-07 22:17:10 -0700</date>
            <delta_ts>2014-05-07 22:17:10 -0700</delta_ts>
            <desc>example</desc>
            <filename>canvas.html</filename>
            <type>text/html</type>
            <size>660</size>
            <attacher name="Seongjun Kim">isair</attacher>
            
              <data encoding="base64">PHZpZGVvIGlkPSJ2aWRlbyI+IDwvdmlkZW8+CjxjYW52YXMgaWQ9ImNhbnZhcyI+PC9jYW52YXM+
Cgo8c2NyaXB0PgogIHZhciB3aWR0aCA9IDMyMCwgaGVpZ2h0ID0gMjQwOwoKICB2YXIgdmlkZW8g
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjdmlkZW8nKTsKICB2YXIgY2FudmFzID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvcignI2NhbnZhcycpOwogIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4
dCgnMmQnKTsKCiAgdmlkZW8uc3JjID0gImh0dHA6Ly93d3cudzNzY2hvb2xzLmNvbS9odG1sL21v
dmllLm1wNCI7CiAgdmlkZW8ud2lkdGggPSB3aWR0aDsKICB2aWRlby5oZWlnaHQgPSBoZWlnaHQ7
CiAgdmlkZW8ubG9vcCA9IHRydWU7CiAgdmlkZW8udm9sdW1lID0gMDsKICB2aWRlby5jb250cm9s
cyA9IHRydWU7CiAgdmlkZW8ucGxheSgpOwoKICBjYW52YXMud2lkdGggPSB3aWR0aDsKICBjYW52
YXMuaGVpZ2h0ID0gaGVpZ2h0OwoKICBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKICAgIGlmICh2
aWRlby5wYXVzZWQpIHJldHVybjsKICAgIGlmICh3aW5kb3cucGF1c2VkKSByZXR1cm47CgogICAg
Y3R4LmRyYXdJbWFnZSh2aWRlbywgMCwgMCwgd2lkdGgsIGhlaWdodCk7CiAgICBjYW52YXMuY2hh
bmdlZCA9IHRydWU7CiAgfSwgNTApOwo8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231048</attachid>
            <date>2014-05-07 23:28:57 -0700</date>
            <delta_ts>2016-01-02 10:50:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132671-20140508152834.patch</filename>
            <type>text/plain</type>
            <size>1686</size>
            <attacher name="Seongjun Kim">isair</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMxYTZlNTAyMGU4N2Iy
N2NlOTU4ZGY4ODUzNGViY2QyMzMyOTg5MC4uY2QwODk0MmU4N2EwNDA4MmJiMDU2ZThiNzk0NjVl
MThjNDY4OTYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE0LTA1LTA3ICBTZW9u
Z2p1biBLaW0gIDxpc0FpckBjb21wYW55MTAwLmNvbT4KKworICAgICAgICBbVGV4bWFwXVtHU3Ry
ZWFtZXJdIEEgdmlkZW8gZWxlbWVudCBpc24ndCBkcmF3biBvbnRvIHRoZSBjYW52YXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI2NzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KTog
dXNlZCBieSAnZHJhd0ltYWdlJworICAgICAgICBvbnRvIHRoZSBjYW52YXMuIEV2ZW4gdGhvdWdo
IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGlzIHVzZWQsIHRoaXMKKyAgICAgICAgZnVuY3Rpb24g
c2hvdWxkbid0IGJlIGhhbHRlZC4KKwogMjAxNC0wNS0wMyAgU2VvbmdqdW4gS2ltICA8aXNBaXJA
Y29tcGFueTEwMC5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gQmFzaWMgTWVkaWFTdHJlYW1D
ZW50ZXIgYW5kIENlbnRyYWxQaXBlbGluZVVuaXQgaW1wbGVtZW50YXRpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggODJi
NmFkZTg2YmRlMzM3MzdhYzk1ODVlNWU2ZmEyNGUyNzQwNjllYS4uMDJiOTg1N2FjMzE0NzM3YTll
OTkyNDk4ZWE5ZDI0MDFhYTcwZmE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtMzQ1LDExICszNDUsNiBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0jaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIGlmIChjbGll
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KICAgICBpZiAoY29udGV4dC0+cGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249912</attachid>
            <date>2015-04-01 03:56:06 -0700</date>
            <delta_ts>2015-04-01 06:28:21 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>9087</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA1ZDc0MTlhZDIzZTEwY2ExNDlkY2U0MzhkNjI0M2FjNjZkNmFlZjI2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDEgQXByIDIwMTUgMTI6NTQ6MTYgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IDI0ICsrKysrKysrKysrCiAuLi4vaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcCAgICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCB8ICA2ICsrLQogLi4uL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcCAgICAgICAgfCAzMCArKysrKysrKysrKysrCiAuLi4vZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwICB8IDUwICsrKysrKysrKysrKysr
KysrKysrKysKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5o
ICAgIHwgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNDk2NmYxZC4uNmY2MWIxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI3IEBACisyMDE1LTA0LTAxICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBBIHZpZGVvIGVsZW1lbnQgaXNuJ3QgZHJhd24g
b250byB0aGUgY2FudmFzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMyNjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBib3RoIGNhaXJvLWdsIGFuZCBnc3QtZ2wgYXJlIGF2YWlsYWJsZSB0aGUg
dGV4dHVyZSBjb21pbmcKKyAgICAgICAgZnJvbSBnbGltYWdlc2luayBjYW4gYmUgdXNlZCB0byBj
cmVhdGUgYSBjYWlyby1nbCBzdXJmYWNlIHRoYXQgY2FuCisgICAgICAgIGJlIHVzZWQgZm9yIHZp
ZGVvIHJlbmRlcmluZyB3aXRoaW4gYSBjYW52YXMgZWxlbWVudC4KKworICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6IFVzZSBOYXRpdmVJbWFnZQorICAg
ICAgICBkcmF3aW5nIGlmIGJvdGggY2Fpcm8tZ2wgYW5kIGdzdC1nbCBhcmUgYXZhaWxhYmxlLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOiBJbXBsZW1lbnQg
ZHJhd05hdGl2ZUltYWdlCisgICAgICAgIGZvciBDYWlybyBHcmFwaGljc0NvbnRleHQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIEltcGxlbWVudCBuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCksIHRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlCisgICAgICAgIGNhbnZhcyBy
ZW5kZXJpbmcgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6
CisKIDIwMTUtMDMtMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHU3RyZWFtZXJdIE1vdmUgc3luY2hyb25vdXMgbWVzc2FnZSBoYW5kbGVyIHRv
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGNiNzA4
NDYuLmY1ODg5NDIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTUzNyw3ICsxNTM3LDcgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50KiB2aWRl
bywgY29uc3QgRmxvYXRSZWMKIAogICAgIGNoZWNrT3JpZ2luKHZpZGVvKTsKIAotI2lmIFVTRShD
RykKKyNpZiBVU0UoQ0cpIHx8IChVU0UoR1NUUkVBTUVSX0dMKSAmJiBVU0UoQ0FJUk8pKQogICAg
IGlmIChQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpKSB7CiAgICAgICAgIGMtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgRmxvYXRTaXpl
KHZpZGVvLT52aWRlb1dpZHRoKCksIHZpZGVvLT52aWRlb0hlaWdodCgpKSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIGlmIChyZWN0Q29udGFpbnNDYW52
YXMoZHN0UmVjdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IGUwYmNmYTUuLjg3ZGNiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0yNDksMTMg
KzI0OSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCisjaWYgVVNF
KENHKSB8fCBVU0UoQ0FJUk8pCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2
ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VP
dmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZh
dWx0SW1hZ2VPcmllbnRhdGlvbik7CisjZW5kaWYKKwogI2lmIFVTRShDRykKICAgICAgICAgdm9p
ZCBhcHBseVN0cm9rZVBhdHRlcm4oKTsKICAgICAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7
CiAgICAgICAgIHZvaWQgZHJhd1BhdGgoY29uc3QgUGF0aCYpOwogCi0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxv
YXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIElt
YWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7Ci0KICAgICAgICAgLy8g
QWxsb3cgZm9udCBzbW9vdGhpbmcgKExDRCBhbnRpYWxpYXNpbmcpLiBOb3QgcGFydCBvZiB0aGUg
Z3JhcGhpY3Mgc3RhdGUuCiAgICAgICAgIHZvaWQgc2V0QWxsb3dzRm9udFNtb290aGluZyhib29s
KTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggMzdhNTM4Mi4u
ODYyYWQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMjUyLDYgKzI1Miwz
NiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBmbG9hdCkKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxv
YXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit7
CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBpbWFnZVB0cjsKKworICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5zYXZlKCk7CisKKyAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4K
KyAgICBpZiAob3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBibGVuZE1vZGUgPT0gQmxlbmRN
b2RlTm9ybWFsKQorICAgICAgICBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7
CisgICAgZWxzZQorICAgICAgICBzZXRDb21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7
CisKKyAgICBGbG9hdFJlY3QgZHN0UmVjdCA9IGRzdDsKKworICAgIGlmIChvcmllbnRhdGlvbiAh
PSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgeworICAgICAgICAvLyBJbWFnZU9yaWVudGF0aW9u
IGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCisgICAgICAgIHRyYW5zbGF0ZShk
c3RSZWN0LngoKSwgZHN0UmVjdC55KCkpOworICAgICAgICBkc3RSZWN0LnNldExvY2F0aW9uKEZs
b2F0UG9pbnQoKSk7CisgICAgICAgIGNvbmNhdENUTShvcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9t
RGVmYXVsdChkc3RSZWN0LnNpemUoKSkpOworICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dp
ZHRoQXNIZWlnaHQoKSkgeworICAgICAgICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJlY3Rhbmds
ZSB3aWxsIGhhdmUgaXQncyB3aWR0aCBhbmQgaGVpZ2h0IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRo
ZSBvcmllbnRhdGlvbiBvZgorICAgICAgICAgICAgLy8gdGhlIGltYWdlLCBhcyBpdCB3YXMgbmVl
ZGVkIGZvciBwYWdlIGxheW91dCwgc28gd2UgbmVlZCB0byByZXZlcnNlIGl0IGJhY2sgaGVyZS4K
KyAgICAgICAgICAgIGRzdFJlY3QgPSBGbG9hdFJlY3QoZHN0UmVjdC54KCksIGRzdFJlY3QueSgp
LCBkc3RSZWN0LmhlaWdodCgpLCBkc3RSZWN0LndpZHRoKCkpOworICAgICAgICB9CisgICAgfQor
CisgICAgcGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KGltYWdlLmdldCgp
LCBkc3RSZWN0LCBzcmNSZWN0LCB0aGlzKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+cmVzdG9y
ZSgpOworfQorCiBzdGF0aWMgZG91YmxlIGNhbGN1bGF0ZVN0cm9rZVBhdHRlcm5PZmZzZXQoaW50
IGRpc3RhbmNlLCBpbnQgcGF0dGVybldpZHRoKQogewogICAgIC8vIEV4YW1wbGU6IDgwIHBpeGVs
cyB3aXRoIGEgd2lkdGggb2YgMzAgcGl4ZWxzLiBSZW1haW5kZXIgaXMgMjAuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggNDk5
NTUzOS4uMTg2ODcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNzYsNiArNzYsMTAgQEAKICNpZiBQTEFURk9STShYMTEp
ICYmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0VHTAogI3VuZGVmIE5vbmUKICNlbmRpZgorCisjaWYg
VVNFKENBSVJPKQorI2luY2x1ZGUgPGNhaXJvLWdsLmg+CisjZW5kaWYKICNlbmRpZiAvLyBVU0Uo
R1NUUkVBTUVSX0dMKQogCiBHU1RfREVCVUdfQ0FURUdPUlkod2Via2l0X21lZGlhX3BsYXllcl9k
ZWJ1Zyk7CkBAIC01NjgsNiArNTcyLDUyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyCiB9CiAj
ZW5kaWYKIAorUGFzc05hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQoreworI2lmICFVU0UoR1NUUkVBTUVSX0dM
KQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCisKKyAgICBpZiAobV91c2luZ0ZhbGxiYWNr
VmlkZW9TaW5rKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFdURjo6R011dGV4TG9j
a2VyPEdNdXRleD4gbG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICBpZiAoIUdTVF9JU19TQU1QTEUo
bV9zYW1wbGUuZ2V0KCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEdzdENhcHMq
IGNhcHMgPSBnc3Rfc2FtcGxlX2dldF9jYXBzKG1fc2FtcGxlLmdldCgpKTsKKyAgICBpZiAoIWNh
cHMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5m
bzsKKyAgICBnc3RfdmlkZW9faW5mb19pbml0KCZ2aWRlb0luZm8pOworICAgIGlmICghZ3N0X3Zp
ZGVvX2luZm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKG1f
c2FtcGxlLmdldCgpKTsKKyAgICBHc3RWaWRlb0ZyYW1lIHZpZGVvRnJhbWU7CisgICAgaWYgKCFn
c3RfdmlkZW9fZnJhbWVfbWFwKCZ2aWRlb0ZyYW1lLCAmdmlkZW9JbmZvLCBidWZmZXIsIHN0YXRp
Y19jYXN0PEdzdE1hcEZsYWdzPihHU1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisjaWYgVVNFKENBSVJPKQorICAgIEdMQ29udGV4dDo6c2hhcmlu
Z0NvbnRleHQoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgR0xDb250ZXh0KiBjb250ZXh0
ID0gR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpOworICAgIGNhaXJvX2RldmljZV90KiBkZXZp
Y2UgPSBjb250ZXh0LT5jYWlyb0RldmljZSgpOworCisgICAgLy8gVGhyZWFkLWF3YXJlbmVzcyBp
cyBhIGh1Z2UgcGVyZm9ybWFuY2UgaGl0IG9uIG5vbi1JbnRlbCBkcml2ZXJzLgorICAgIGNhaXJv
X2dsX2RldmljZV9zZXRfdGhyZWFkX2F3YXJlKGRldmljZSwgRkFMU0UpOworCisgICAgdW5zaWdu
ZWQgdGV4dHVyZUlEID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPih2aWRlb0ZyYW1lLmRh
dGFbMF0pOworICAgIEZsb2F0U2l6ZSBzaXplID0gRmxvYXRTaXplKEdTVF9WSURFT19JTkZPX1dJ
RFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOworICAg
IGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90
ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgdGV4dHVyZUlELCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCgmdmlk
ZW9GcmFtZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKHN1cmZhY2UpOworI2Vsc2UKKyAgICBnc3Rf
dmlkZW9fZnJhbWVfdW5tYXAoJnZpZGVvRnJhbWUpOworICAgIHJldHVybiBudWxscHRyOworI2Vu
ZGlmIC8vIFVTRShDQUlSTykKK30KKwogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKaW5kZXgg
ODllYWE3OS4uYjZlMGI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0xMTAsNiArMTEwLDcgQEAgcHVibGljOgogI2VuZGlmCiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICNlbmRp
ZgorICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKTsKIAogcHJvdGVjdGVkOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uo
TWVkaWFQbGF5ZXIqKTsKLS0gCjIuMS40
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249918</attachid>
            <date>2015-04-01 06:28:21 -0700</date>
            <delta_ts>2015-04-01 09:17:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>9113</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAwMzRlNzc2ZjUwNjI3YWE0ZjkwZWUyMGFlOTljMWEyOTBlNjlhMTE5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDEgQXByIDIwMTUgMTI6NTQ6MTYgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IDI0ICsrKysrKysrKysrCiAuLi4vaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcCAgICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCB8ICA2ICsrLQogLi4uL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcCAgICAgICAgfCAzMCArKysrKysrKysrKysrCiAuLi4vZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwICB8IDUwICsrKysrKysrKysrKysr
KysrKysrKysKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5o
ICAgIHwgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNDk2NmYxZC4uNmY2MWIxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI3IEBACisyMDE1LTA0LTAxICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBBIHZpZGVvIGVsZW1lbnQgaXNuJ3QgZHJhd24g
b250byB0aGUgY2FudmFzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMyNjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBib3RoIGNhaXJvLWdsIGFuZCBnc3QtZ2wgYXJlIGF2YWlsYWJsZSB0aGUg
dGV4dHVyZSBjb21pbmcKKyAgICAgICAgZnJvbSBnbGltYWdlc2luayBjYW4gYmUgdXNlZCB0byBj
cmVhdGUgYSBjYWlyby1nbCBzdXJmYWNlIHRoYXQgY2FuCisgICAgICAgIGJlIHVzZWQgZm9yIHZp
ZGVvIHJlbmRlcmluZyB3aXRoaW4gYSBjYW52YXMgZWxlbWVudC4KKworICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6IFVzZSBOYXRpdmVJbWFnZQorICAg
ICAgICBkcmF3aW5nIGlmIGJvdGggY2Fpcm8tZ2wgYW5kIGdzdC1nbCBhcmUgYXZhaWxhYmxlLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOiBJbXBsZW1lbnQg
ZHJhd05hdGl2ZUltYWdlCisgICAgICAgIGZvciBDYWlybyBHcmFwaGljc0NvbnRleHQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIEltcGxlbWVudCBuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCksIHRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlCisgICAgICAgIGNhbnZhcyBy
ZW5kZXJpbmcgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6
CisKIDIwMTUtMDMtMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHU3RyZWFtZXJdIE1vdmUgc3luY2hyb25vdXMgbWVzc2FnZSBoYW5kbGVyIHRv
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGNiNzA4
NDYuLjI4MmJmMTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTUzNyw3ICsxNTM3LDcgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50KiB2aWRl
bywgY29uc3QgRmxvYXRSZWMKIAogICAgIGNoZWNrT3JpZ2luKHZpZGVvKTsKIAotI2lmIFVTRShD
RykKKyNpZiBVU0UoQ0cpIHx8IChFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0Uo
R1NUUkVBTUVSX0dMKSAmJiBVU0UoQ0FJUk8pKQogICAgIGlmIChQYXNzTmF0aXZlSW1hZ2VQdHIg
aW1hZ2UgPSB2aWRlby0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CiAgICAgICAgIGMt
PmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLT52aWRlb1dpZHRoKCksIHZp
ZGVvLT52aWRlb0hlaWdodCgpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwgc3JjUmVj
dCk7CiAgICAgICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMoZHN0UmVjdCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGUw
YmNmYTUuLjg3ZGNiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0yNDksMTMgKzI0OSwxNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCisjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCisgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0
ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1v
ZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7Cisj
ZW5kaWYKKwogI2lmIFVTRShDRykKICAgICAgICAgdm9pZCBhcHBseVN0cm9rZVBhdHRlcm4oKTsK
ICAgICAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CiAgICAgICAgIHZvaWQgZHJhd1BhdGgo
Y29uc3QgUGF0aCYpOwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVy
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0
SW1hZ2VPcmllbnRhdGlvbik7Ci0KICAgICAgICAgLy8gQWxsb3cgZm9udCBzbW9vdGhpbmcgKExD
RCBhbnRpYWxpYXNpbmcpLiBOb3QgcGFydCBvZiB0aGUgZ3JhcGhpY3Mgc3RhdGUuCiAgICAgICAg
IHZvaWQgc2V0QWxsb3dzRm9udFNtb290aGluZyhib29sKTsKICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKaW5kZXggMzdhNTM4Mi4uODYyYWQzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcApAQCAtMjUyLDYgKzI1MiwzNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCkKICAgICBjYWlyb19yZXN0
b3JlKGNyKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNz
TmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit7CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1h
Z2UgPSBpbWFnZVB0cjsKKworICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zYXZlKCk7CisKKyAgICAv
LyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KKyAgICBpZiAob3AgPT0gQ29tcG9zaXRl
U291cmNlT3ZlciAmJiBibGVuZE1vZGUgPT0gQmxlbmRNb2RlTm9ybWFsKQorICAgICAgICBzZXRD
b21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgZWxzZQorICAgICAgICBzZXRD
b21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7CisKKyAgICBGbG9hdFJlY3QgZHN0UmVj
dCA9IGRzdDsKKworICAgIGlmIChvcmllbnRhdGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlv
bikgeworICAgICAgICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBi
ZSBhdCAoMCwgMCkuCisgICAgICAgIHRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0UmVjdC55KCkp
OworICAgICAgICBkc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CisgICAgICAgIGNv
bmNhdENUTShvcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChkc3RSZWN0LnNpemUoKSkp
OworICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkgeworICAgICAg
ICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSB3aWxsIGhhdmUgaXQncyB3aWR0aCBh
bmQgaGVpZ2h0IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmllbnRhdGlvbiBvZgorICAgICAg
ICAgICAgLy8gdGhlIGltYWdlLCBhcyBpdCB3YXMgbmVlZGVkIGZvciBwYWdlIGxheW91dCwgc28g
d2UgbmVlZCB0byByZXZlcnNlIGl0IGJhY2sgaGVyZS4KKyAgICAgICAgICAgIGRzdFJlY3QgPSBG
bG9hdFJlY3QoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpLCBkc3RSZWN0LmhlaWdodCgpLCBkc3RS
ZWN0LndpZHRoKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcGxhdGZvcm1Db250ZXh0KCkt
PmRyYXdTdXJmYWNlVG9Db250ZXh0KGltYWdlLmdldCgpLCBkc3RSZWN0LCBzcmNSZWN0LCB0aGlz
KTsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+cmVzdG9yZSgpOworfQorCiBzdGF0aWMgZG91Ymxl
IGNhbGN1bGF0ZVN0cm9rZVBhdHRlcm5PZmZzZXQoaW50IGRpc3RhbmNlLCBpbnQgcGF0dGVybldp
ZHRoKQogewogICAgIC8vIEV4YW1wbGU6IDgwIHBpeGVscyB3aXRoIGEgd2lkdGggb2YgMzAgcGl4
ZWxzLiBSZW1haW5kZXIgaXMgMjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggNDk5NTUzOS4uYmUyOWQ5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAt
NzgsNiArNzgsMTAgQEAKICNlbmRpZgogI2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfR0wpCiAKKyNp
ZiBVU0UoQ0FJUk8pCisjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KKyNlbmRpZgorCiBHU1RfREVCVUdf
Q0FURUdPUlkod2Via2l0X21lZGlhX3BsYXllcl9kZWJ1Zyk7CiAjZGVmaW5lIEdTVF9DQVRfREVG
QVVMVCB3ZWJraXRfbWVkaWFfcGxheWVyX2RlYnVnCiAKQEAgLTU2OCw2ICs1NzIsNTIgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludFRvVGV4dHVyZU1hcHBlcihU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXIKIH0KICNlbmRpZgogCitQYXNzTmF0aXZlSW1hZ2VQdHIgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
Cit7CisjaWYgIVVTRShHU1RSRUFNRVJfR0wpCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYK
KworICAgIGlmIChtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgp
OworICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMobV9z
YW1wbGUuZ2V0KCkpOworICAgIGlmICghY2FwcykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBHc3RWaWRlb0luZm8gdmlkZW9JbmZvOworICAgIGdzdF92aWRlb19pbmZvX2luaXQoJnZp
ZGVvSW5mbyk7CisgICAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJnZpZGVvSW5mbywg
Y2FwcykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgR3N0QnVmZmVyKiBidWZmZXIg
PSBnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9zYW1wbGUuZ2V0KCkpOworICAgIEdzdFZpZGVvRnJh
bWUgdmlkZW9GcmFtZTsKKyAgICBpZiAoIWdzdF92aWRlb19mcmFtZV9tYXAoJnZpZGVvRnJhbWUs
ICZ2aWRlb0luZm8sIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8R3N0TWFwRmxhZ3M+KEdTVF9NQVBfUkVB
RCB8IEdTVF9NQVBfR0wpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyNpZiBVU0UoQ0FJ
Uk8pCisgICAgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBHTENvbnRleHQqIGNvbnRleHQgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCk7
CisgICAgY2Fpcm9fZGV2aWNlX3QqIGRldmljZSA9IGNvbnRleHQtPmNhaXJvRGV2aWNlKCk7CisK
KyAgICAvLyBUaHJlYWQtYXdhcmVuZXNzIGlzIGEgaHVnZSBwZXJmb3JtYW5jZSBoaXQgb24gbm9u
LUludGVsIGRyaXZlcnMuCisgICAgY2Fpcm9fZ2xfZGV2aWNlX3NldF90aHJlYWRfYXdhcmUoZGV2
aWNlLCBGQUxTRSk7CisKKyAgICB1bnNpZ25lZCB0ZXh0dXJlSUQgPSAqcmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCo+KHZpZGVvRnJhbWUuZGF0YVswXSk7CisgICAgRmxvYXRTaXplIHNpemUgPSBG
bG9hdFNpemUoR1NUX1ZJREVPX0lORk9fV0lEVEgoJnZpZGVvSW5mbyksIEdTVF9WSURFT19JTkZP
X0hFSUdIVCgmdmlkZW9JbmZvKSk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fp
cm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9yX3RleHR1cmUoZGV2aWNlLCBDQUlST19DT05URU5UX0NP
TE9SX0FMUEhBLCB0ZXh0dXJlSUQsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAg
Z3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
c3VyZmFjZSk7CisjZWxzZQorICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCgmdmlkZW9GcmFtZSk7
CisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYgLy8gVVNFKENBSVJPKQorfQorCiBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCA4OWVhYTc5Li5iNmUwYjYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAgLTExMCw2ICsx
MTAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQpOwogI2VuZGlmCisgICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQ
dHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciopOwotLSAKMi4xLjQ=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249924</attachid>
            <date>2015-04-01 09:17:33 -0700</date>
            <delta_ts>2015-04-01 09:45:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>12352</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA2Y2MzZDAxOWVmNmUwZjBiNTNiMjcyMTBlMDVjMTI4M2I4NDAwYzMwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDEgQXByIDIwMTUgMTI6NTQ6MTYgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IDI0ICsrKysrKysrKwogLi4uL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmggfCAgNiArKy0KIC4uLi9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAgICAgICAgIHwgMzAgKysrKysrKysrKysKIC4uLi9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmNwcCAgICAgIHwgMTcgKysrKystCiAuLi4vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oICAgICAgICB8ICAyICsKIC4uLi9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgIHwgNjAgKysrKysrKysr
KysrKysrLS0tLS0tLQogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmggICAgfCAgMSArCiA4IGZpbGVzIGNoYW5nZWQsIDEyMCBpbnNlcnRpb25zKCspLCAyMiBk
ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk2NmYxZC4uNmY2MWIxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI3IEBACisyMDE1LTA0LTAxICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBBIHZpZGVvIGVsZW1lbnQgaXNuJ3Qg
ZHJhd24gb250byB0aGUgY2FudmFzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMyNjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2hlbiBib3RoIGNhaXJvLWdsIGFuZCBnc3QtZ2wgYXJlIGF2YWlsYWJs
ZSB0aGUgdGV4dHVyZSBjb21pbmcKKyAgICAgICAgZnJvbSBnbGltYWdlc2luayBjYW4gYmUgdXNl
ZCB0byBjcmVhdGUgYSBjYWlyby1nbCBzdXJmYWNlIHRoYXQgY2FuCisgICAgICAgIGJlIHVzZWQg
Zm9yIHZpZGVvIHJlbmRlcmluZyB3aXRoaW4gYSBjYW52YXMgZWxlbWVudC4KKworICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6IFVzZSBOYXRpdmVJbWFn
ZQorICAgICAgICBkcmF3aW5nIGlmIGJvdGggY2Fpcm8tZ2wgYW5kIGdzdC1nbCBhcmUgYXZhaWxh
YmxlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOiBJbXBs
ZW1lbnQgZHJhd05hdGl2ZUltYWdlCisgICAgICAgIGZvciBDYWlybyBHcmFwaGljc0NvbnRleHQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2Up
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIEltcGxlbWVudCBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCksIHRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlCisgICAgICAgIGNh
bnZhcyByZW5kZXJpbmcgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmg6CisKIDIwMTUtMDMtMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIE1vdmUgc3luY2hyb25vdXMgbWVzc2FnZSBoYW5k
bGVyIHRvIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4
IGNiNzA4NDYuLjI4MmJmMTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTUzNyw3ICsxNTM3LDcgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50
KiB2aWRlbywgY29uc3QgRmxvYXRSZWMKIAogICAgIGNoZWNrT3JpZ2luKHZpZGVvKTsKIAotI2lm
IFVTRShDRykKKyNpZiBVU0UoQ0cpIHx8IChFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAm
JiBVU0UoR1NUUkVBTUVSX0dMKSAmJiBVU0UoQ0FJUk8pKQogICAgIGlmIChQYXNzTmF0aXZlSW1h
Z2VQdHIgaW1hZ2UgPSB2aWRlby0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CiAgICAg
ICAgIGMtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLT52aWRlb1dpZHRo
KCksIHZpZGVvLT52aWRlb0hlaWdodCgpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCwg
c3JjUmVjdCk7CiAgICAgICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMoZHN0UmVjdCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmlu
ZGV4IGUwYmNmYTUuLjg3ZGNiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0yNDksMTMgKzI0OSwxNSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCisjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8p
CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJ
bWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlv
bik7CisjZW5kaWYKKwogI2lmIFVTRShDRykKICAgICAgICAgdm9pZCBhcHBseVN0cm9rZVBhdHRl
cm4oKTsKICAgICAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CiAgICAgICAgIHZvaWQgZHJh
d1BhdGgoY29uc3QgUGF0aCYpOwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05h
dGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBE
ZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7Ci0KICAgICAgICAgLy8gQWxsb3cgZm9udCBzbW9vdGhp
bmcgKExDRCBhbnRpYWxpYXNpbmcpLiBOb3QgcGFydCBvZiB0aGUgZ3JhcGhpY3Mgc3RhdGUuCiAg
ICAgICAgIHZvaWQgc2V0QWxsb3dzRm9udFNtb290aGluZyhib29sKTsKICAgICAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggMzdhNTM4Mi4uODYyYWQzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMjUyLDYgKzI1MiwzNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCkKICAgICBjYWly
b19yZXN0b3JlKGNyKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFn
ZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit7CisgICAgTmF0aXZlSW1hZ2VQ
dHIgaW1hZ2UgPSBpbWFnZVB0cjsKKworICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zYXZlKCk7CisK
KyAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KKyAgICBpZiAob3AgPT0gQ29t
cG9zaXRlU291cmNlT3ZlciAmJiBibGVuZE1vZGUgPT0gQmxlbmRNb2RlTm9ybWFsKQorICAgICAg
ICBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgZWxzZQorICAgICAg
ICBzZXRDb21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7CisKKyAgICBGbG9hdFJlY3Qg
ZHN0UmVjdCA9IGRzdDsKKworICAgIGlmIChvcmllbnRhdGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmll
bnRhdGlvbikgeworICAgICAgICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdp
biB0byBiZSBhdCAoMCwgMCkuCisgICAgICAgIHRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0UmVj
dC55KCkpOworICAgICAgICBkc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CisgICAg
ICAgIGNvbmNhdENUTShvcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChkc3RSZWN0LnNp
emUoKSkpOworICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkgewor
ICAgICAgICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSB3aWxsIGhhdmUgaXQncyB3
aWR0aCBhbmQgaGVpZ2h0IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmllbnRhdGlvbiBvZgor
ICAgICAgICAgICAgLy8gdGhlIGltYWdlLCBhcyBpdCB3YXMgbmVlZGVkIGZvciBwYWdlIGxheW91
dCwgc28gd2UgbmVlZCB0byByZXZlcnNlIGl0IGJhY2sgaGVyZS4KKyAgICAgICAgICAgIGRzdFJl
Y3QgPSBGbG9hdFJlY3QoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpLCBkc3RSZWN0LmhlaWdodCgp
LCBkc3RSZWN0LndpZHRoKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcGxhdGZvcm1Db250
ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KGltYWdlLmdldCgpLCBkc3RSZWN0LCBzcmNSZWN0
LCB0aGlzKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+cmVzdG9yZSgpOworfQorCiBzdGF0aWMg
ZG91YmxlIGNhbGN1bGF0ZVN0cm9rZVBhdHRlcm5PZmZzZXQoaW50IGRpc3RhbmNlLCBpbnQgcGF0
dGVybldpZHRoKQogewogICAgIC8vIEV4YW1wbGU6IDgwIHBpeGVscyB3aXRoIGEgd2lkdGggb2Yg
MzAgcGl4ZWxzLiBSZW1haW5kZXIgaXMgMjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMu
Y3BwCmluZGV4IDI3OWJkZGUuLmQ3YzUxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRp
ZXMuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAKICNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8taW5m
by5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8taW5m
by5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1VuaXF1ZVB0ci5oPgogCkBAIC03Myw2ICs3MiwyMiBAQCBib29sIGdldFZpZGVvU2l6ZUFuZEZv
cm1hdEZyb21DYXBzKEdzdENhcHMqIGNhcHMsIFdlYkNvcmU6OkludFNpemUmIHNpemUsIEdzdFZp
ZAogCiAgICAgcmV0dXJuIHRydWU7CiB9CisKK2Jvb2wgZ2V0U2FtcGxlVmlkZW9JbmZvKEdzdFNh
bXBsZSogc2FtcGxlLCBHc3RWaWRlb0luZm8mIHZpZGVvSW5mbykKK3sKKyAgICBpZiAoIUdTVF9J
U19TQU1QTEUoc2FtcGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR3N0Q2Fwcyog
Y2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2NhcHMoc2FtcGxlKTsKKyAgICBpZiAoIWNhcHMpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGdzdF92aWRlb19pbmZvX2luaXQoJnZpZGVvSW5mbyk7
CisgICAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJnZpZGVvSW5mbywgY2FwcykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQogI2VuZGlmCiAKIEdz
dEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxp
dGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclV0aWxpdGllcy5oCmluZGV4IDZhMTJkZTYuLmU5ODBmODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyVXRpbGl0aWVzLmgKQEAgLTIwLDYgKzIwLDcgQEAKIAogI2luY2x1ZGUgPGdzdC9nc3QuaD4K
ICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8tZm9ybWF0Lmg+CisjaW5jbHVkZSA8Z3N0L3ZpZGVv
L3ZpZGVvLWluZm8uaD4KIAogI2RlZmluZSBMT0dfTUVESUFfTUVTU0FHRSguLi4pIGRvIHsgXAog
ICAgIEdTVF9ERUJVRyhfX1ZBX0FSR1NfXyk7IFwKQEAgLTY1LDYgKzY2LDcgQEAgaW5saW5lIGJv
b2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQg
bWljcm8pCiBHc3RQYWQqIHdlYmtpdEdzdEdob3N0UGFkRnJvbVN0YXRpY1RlbXBsYXRlKEdzdFN0
YXRpY1BhZFRlbXBsYXRlKiwgY29uc3QgZ2NoYXIqIG5hbWUsIEdzdFBhZCogdGFyZ2V0KTsKICNp
ZiBFTkFCTEUoVklERU8pCiBib29sIGdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKEdzdENh
cHMqLCBXZWJDb3JlOjpJbnRTaXplJiwgR3N0VmlkZW9Gb3JtYXQmLCBpbnQmIHBpeGVsQXNwZWN0
UmF0aW9OdW1lcmF0b3IsIGludCYgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCBpbnQmIHN0
cmlkZSk7Citib29sIGdldFNhbXBsZVZpZGVvSW5mbyhHc3RTYW1wbGUqLCBHc3RWaWRlb0luZm8m
KTsKICNlbmRpZgogR3N0QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXIoR3N0QnVmZmVyKik7CiBHc3RC
dWZmZXIqIGNyZWF0ZUdzdEJ1ZmZlckZvckRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKaW5kZXggNDk5NTUzOS4uMjEzYWEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNzgsNiArNzgsMTAgQEAKICNl
bmRpZgogI2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfR0wpCiAKKyNpZiBVU0UoQ0FJUk8pICYmIEVO
QUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KKyNlbmRp
ZgorCiBHU1RfREVCVUdfQ0FURUdPUlkod2Via2l0X21lZGlhX3BsYXllcl9kZWJ1Zyk7CiAjZGVm
aW5lIEdTVF9DQVRfREVGQVVMVCB3ZWJraXRfbWVkaWFfcGxheWVyX2RlYnVnCiAKQEAgLTQxMSwx
NiArNDE1LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjptdXRlQ2hh
bmdlZCgpCiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcikKIHsK
ICAgICBXVEY6OkdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9zYW1wbGVNdXRleCk7Ci0gICAg
aWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBsZS5n
ZXQoKSk7Ci0gICAgaWYgKCFjYXBzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgIEdz
dFZpZGVvSW5mbyB2aWRlb0luZm87Ci0gICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmdmlkZW9JbmZv
KTsKLSAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygmdmlkZW9JbmZvLCBjYXBzKSkK
KyAgICBpZiAoIWdldFNhbXBsZVZpZGVvSW5mbyhtX3NhbXBsZS5nZXQoKSwgdmlkZW9JbmZvKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdT
VF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZp
ZGVvSW5mbykpOwpAQCAtNTM4LDE2ICs1MzQsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cgog
ICAgIH0KIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCi0gICAgaWYgKCFHU1RfSVNfU0FNUExFKG1f
c2FtcGxlLmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3N0Q2FwcyogY2FwcyA9IGdz
dF9zYW1wbGVfZ2V0X2NhcHMobV9zYW1wbGUuZ2V0KCkpOwotICAgIGlmICghY2FwcykKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKLSAgICBnc3RfdmlkZW9f
aW5mb19pbml0KCZ2aWRlb0luZm8pOwotICAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBz
KCZ2aWRlb0luZm8sIGNhcHMpKQorICAgIGlmICghZ2V0U2FtcGxlVmlkZW9JbmZvKG1fc2FtcGxl
LmdldCgpLCB2aWRlb0luZm8pKQogICAgICAgICByZXR1cm47CiAKICAgICBHc3RCdWZmZXIqIGJ1
ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihtX3NhbXBsZS5nZXQoKSk7CkBAIC01NjgsNiAr
NTU2LDQyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyCiB9CiAjZW5kaWYKIAorI2lmIFVTRShH
U1RSRUFNRVJfR0wpCitQYXNzTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCit7CisjaWYgIVVTRShDQUlSTykg
fHwgIUVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisgICAgcmV0dXJuIG51bGxwdHI7Cisj
ZW5kaWYKKworICAgIGlmIChtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxl
TXV0ZXgpOworCisgICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKKyAgICBpZiAoIWdldFNhbXBs
ZVZpZGVvSW5mbyhtX3NhbXBsZS5nZXQoKSwgdmlkZW9JbmZvKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlciht
X3NhbXBsZS5nZXQoKSk7CisgICAgR3N0VmlkZW9GcmFtZSB2aWRlb0ZyYW1lOworICAgIGlmICgh
Z3N0X3ZpZGVvX2ZyYW1lX21hcCgmdmlkZW9GcmFtZSwgJnZpZGVvSW5mbywgYnVmZmVyLCBzdGF0
aWNfY2FzdDxHc3RNYXBGbGFncz4oR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKS0+bWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgR0xDb250ZXh0KiBjb250ZXh0ID0gR0xDb250ZXh0Ojpz
aGFyaW5nQ29udGV4dCgpOworICAgIGNhaXJvX2RldmljZV90KiBkZXZpY2UgPSBjb250ZXh0LT5j
YWlyb0RldmljZSgpOworCisgICAgLy8gVGhyZWFkLWF3YXJlbmVzcyBpcyBhIGh1Z2UgcGVyZm9y
bWFuY2UgaGl0IG9uIG5vbi1JbnRlbCBkcml2ZXJzLgorICAgIGNhaXJvX2dsX2RldmljZV9zZXRf
dGhyZWFkX2F3YXJlKGRldmljZSwgRkFMU0UpOworCisgICAgdW5zaWduZWQgdGV4dHVyZUlEID0g
KnJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPih2aWRlb0ZyYW1lLmRhdGFbMF0pOworICAgIEZs
b2F0U2l6ZSBzaXplID0gRmxvYXRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8p
LCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOworICAgIGNhaXJvX3N1cmZhY2Vf
dCogc3VyZmFjZSA9IGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGRldmljZSwg
Q0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgdGV4dHVyZUlELCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpOworICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCgmdmlkZW9GcmFtZSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKHN1cmZhY2UpOworfQorI2VuZGlmCisKIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5oCmluZGV4IDg5ZWFhNzkuLmI2ZTBiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaApAQCAtMTEwLDYgKzExMCw3IEBAIHB1
YmxpYzoKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0
dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCk7CiAjZW5kaWYKKyAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKIHByb3RlY3RlZDoKICAgICBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKik7Ci0tIAoyLjEuNA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249926</attachid>
            <date>2015-04-01 09:45:10 -0700</date>
            <delta_ts>2015-04-01 10:06:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>12383</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBmZDJjN2YyNjdiNzM1ODgzMTZlNGQ4YzY2NjM3MDY2YThlN2YwY2M5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDEgQXByIDIwMTUgMTI6NTQ6MTYgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IDI0ICsrKysrKysrKwogLi4uL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmggfCAgNiArKy0KIC4uLi9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAgICAgICAgIHwgMzAgKysrKysrKysrKysKIC4uLi9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmNwcCAgICAgIHwgMTcgKysrKystCiAuLi4vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oICAgICAgICB8ICAyICsKIC4uLi9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgIHwgNjAgKysrKysrKysr
KysrKysrLS0tLS0tLQogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmggICAgfCAgNCArKwogOCBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKSwgMjIg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ5NjZmMWQuLjZmNjFiMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAxNS0wNC0wMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gQSB2aWRlbyBlbGVtZW50IGlzbid0
IGRyYXduIG9udG8gdGhlIGNhbnZhcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMjY3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdoZW4gYm90aCBjYWlyby1nbCBhbmQgZ3N0LWdsIGFyZSBhdmFpbGFi
bGUgdGhlIHRleHR1cmUgY29taW5nCisgICAgICAgIGZyb20gZ2xpbWFnZXNpbmsgY2FuIGJlIHVz
ZWQgdG8gY3JlYXRlIGEgY2Fpcm8tZ2wgc3VyZmFjZSB0aGF0IGNhbgorICAgICAgICBiZSB1c2Vk
IGZvciB2aWRlbyByZW5kZXJpbmcgd2l0aGluIGEgY2FudmFzIGVsZW1lbnQuCisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UpOiBVc2UgTmF0aXZlSW1h
Z2UKKyAgICAgICAgZHJhd2luZyBpZiBib3RoIGNhaXJvLWdsIGFuZCBnc3QtZ2wgYXJlIGF2YWls
YWJsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDogSW1w
bGVtZW50IGRyYXdOYXRpdmVJbWFnZQorICAgICAgICBmb3IgQ2Fpcm8gR3JhcGhpY3NDb250ZXh0
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdl
KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICBJbXBsZW1lbnQgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50VGltZSgpLCB0aGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHRoZQorICAgICAgICBj
YW52YXMgcmVuZGVyaW5nIGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5oOgorCiAyMDE1LTAzLTMwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBNb3ZlIHN5bmNocm9ub3VzIG1lc3NhZ2UgaGFu
ZGxlciB0byBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRl
eCBjYjcwODQ2Li4yODJiZjE2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTE1MzcsNyArMTUzNyw3IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVu
dCogdmlkZW8sIGNvbnN0IEZsb2F0UmVjCiAKICAgICBjaGVja09yaWdpbih2aWRlbyk7CiAKLSNp
ZiBVU0UoQ0cpCisjaWYgVVNFKENHKSB8fCAoRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykg
JiYgVVNFKEdTVFJFQU1FUl9HTCkgJiYgVVNFKENBSVJPKSkKICAgICBpZiAoUGFzc05hdGl2ZUlt
YWdlUHRyIGltYWdlID0gdmlkZW8tPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkgewogICAg
ICAgICBjLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIEZsb2F0U2l6ZSh2aWRlby0+dmlkZW9XaWR0
aCgpLCB2aWRlby0+dmlkZW9IZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3Qs
IHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApp
bmRleCBlMGJjZmE1Li44N2RjYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjQ5LDEzICsyNDksMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAorI2lmIFVTRShDRykgfHwgVVNFKENBSVJP
KQorICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZl
SW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRp
b24pOworI2VuZGlmCisKICNpZiBVU0UoQ0cpCiAgICAgICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0
ZXJuKCk7CiAgICAgICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpOwogICAgICAgICB2b2lkIGRy
YXdQYXRoKGNvbnN0IFBhdGgmKTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdO
YXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0g
RGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwotCiAgICAgICAgIC8vIEFsbG93IGZvbnQgc21vb3Ro
aW5nIChMQ0QgYW50aWFsaWFzaW5nKS4gTm90IHBhcnQgb2YgdGhlIGdyYXBoaWNzIHN0YXRlLgog
ICAgICAgICB2b2lkIHNldEFsbG93c0ZvbnRTbW9vdGhpbmcoYm9vbCk7CiAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDM3YTUzODIuLjYwZTZhMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTI1Miw2ICsyNTIsMzYgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQpCiAgICAgY2Fp
cm9fcmVzdG9yZShjcik7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1h
Z2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24pCit7CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBpbWFn
ZVB0cjsKKworICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zYXZlKCk7CisKKyAgICAvLyBTZXQgdGhl
IGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KKyAgICBpZiAob3AgPT0gQ29tcG9zaXRlU291cmNlT3Zl
ciAmJiBibGVuZE1vZGUgPT0gQmxlbmRNb2RlTm9ybWFsKQorICAgICAgICBzZXRDb21wb3NpdGVP
cGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgZWxzZQorICAgICAgICBzZXRDb21wb3NpdGVP
cGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7CisKKyAgICBGbG9hdFJlY3QgZHN0UmVjdCA9IGRzdDsK
KworICAgIGlmIChvcmllbnRhdGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgeworICAg
ICAgICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwg
MCkuCisgICAgICAgIHRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0UmVjdC55KCkpOworICAgICAg
ICBkc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CisgICAgICAgIGNvbmNhdENUTShv
cmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChkc3RSZWN0LnNpemUoKSkpOworICAgICAg
ICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkgeworICAgICAgICAgICAgLy8g
VGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSB3aWxsIGhhdmUgaXQncyB3aWR0aCBhbmQgaGVpZ2h0
IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmllbnRhdGlvbiBvZgorICAgICAgICAgICAgLy8g
dGhlIGltYWdlLCBhcyBpdCB3YXMgbmVlZGVkIGZvciBwYWdlIGxheW91dCwgc28gd2UgbmVlZCB0
byByZXZlcnNlIGl0IGJhY2sgaGVyZS4KKyAgICAgICAgICAgIGRzdFJlY3QgPSBGbG9hdFJlY3Qo
ZHN0UmVjdC54KCksIGRzdFJlY3QueSgpLCBkc3RSZWN0LmhlaWdodCgpLCBkc3RSZWN0LndpZHRo
KCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJm
YWNlVG9Db250ZXh0KGltYWdlLmdldCgpLCBkc3RSZWN0LCBzcmNSZWN0LCB0aGlzKTsKKyAgICBw
bGF0Zm9ybUNvbnRleHQoKS0+cmVzdG9yZSgpOworfQorCiBzdGF0aWMgZG91YmxlIGNhbGN1bGF0
ZVN0cm9rZVBhdHRlcm5PZmZzZXQoaW50IGRpc3RhbmNlLCBpbnQgcGF0dGVybldpZHRoKQogewog
ICAgIC8vIEV4YW1wbGU6IDgwIHBpeGVscyB3aXRoIGEgd2lkdGggb2YgMzAgcGl4ZWxzLiBSZW1h
aW5kZXIgaXMgMjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCmluZGV4IDI3OWJk
ZGUuLmQ3YzUxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwCkBAIC0yNiw3
ICsyNiw2IEBACiAKICNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8taW5mby5oPgogI2luY2x1ZGUg
PGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8taW5mby5oPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgog
CkBAIC03Myw2ICs3MiwyMiBAQCBib29sIGdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKEdz
dENhcHMqIGNhcHMsIFdlYkNvcmU6OkludFNpemUmIHNpemUsIEdzdFZpZAogCiAgICAgcmV0dXJu
IHRydWU7CiB9CisKK2Jvb2wgZ2V0U2FtcGxlVmlkZW9JbmZvKEdzdFNhbXBsZSogc2FtcGxlLCBH
c3RWaWRlb0luZm8mIHZpZGVvSW5mbykKK3sKKyAgICBpZiAoIUdTVF9JU19TQU1QTEUoc2FtcGxl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1w
bGVfZ2V0X2NhcHMoc2FtcGxlKTsKKyAgICBpZiAoIWNhcHMpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGdzdF92aWRlb19pbmZvX2luaXQoJnZpZGVvSW5mbyk7CisgICAgaWYgKCFnc3Rf
dmlkZW9faW5mb19mcm9tX2NhcHMoJnZpZGVvSW5mbywgY2FwcykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQogI2VuZGlmCiAKIEdzdEJ1ZmZlciogY3JlYXRl
R3N0QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5o
CmluZGV4IDZhMTJkZTYuLmU5ODBmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmgK
QEAgLTIwLDYgKzIwLDcgQEAKIAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3Qv
dmlkZW8vdmlkZW8tZm9ybWF0Lmg+CisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLWluZm8uaD4K
IAogI2RlZmluZSBMT0dfTUVESUFfTUVTU0FHRSguLi4pIGRvIHsgXAogICAgIEdTVF9ERUJVRyhf
X1ZBX0FSR1NfXyk7IFwKQEAgLTY1LDYgKzY2LDcgQEAgaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hl
Y2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCiBHc3RQYWQq
IHdlYmtpdEdzdEdob3N0UGFkRnJvbVN0YXRpY1RlbXBsYXRlKEdzdFN0YXRpY1BhZFRlbXBsYXRl
KiwgY29uc3QgZ2NoYXIqIG5hbWUsIEdzdFBhZCogdGFyZ2V0KTsKICNpZiBFTkFCTEUoVklERU8p
CiBib29sIGdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKEdzdENhcHMqLCBXZWJDb3JlOjpJ
bnRTaXplJiwgR3N0VmlkZW9Gb3JtYXQmLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3Is
IGludCYgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCBpbnQmIHN0cmlkZSk7Citib29sIGdl
dFNhbXBsZVZpZGVvSW5mbyhHc3RTYW1wbGUqLCBHc3RWaWRlb0luZm8mKTsKICNlbmRpZgogR3N0
QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXIoR3N0QnVmZmVyKik7CiBHc3RCdWZmZXIqIGNyZWF0ZUdz
dEJ1ZmZlckZvckRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggNDk5
NTUzOS4uYTFjOGVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNzgsNiArNzgsMTAgQEAKICNlbmRpZgogI2VuZGlmIC8v
IFVTRShHU1RSRUFNRVJfR0wpCiAKKyNpZiBVU0UoQ0FJUk8pICYmIEVOQUJMRShBQ0NFTEVSQVRF
RF8yRF9DQU5WQVMpCisjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KKyNlbmRpZgorCiBHU1RfREVCVUdf
Q0FURUdPUlkod2Via2l0X21lZGlhX3BsYXllcl9kZWJ1Zyk7CiAjZGVmaW5lIEdTVF9DQVRfREVG
QVVMVCB3ZWJraXRfbWVkaWFfcGxheWVyX2RlYnVnCiAKQEAgLTQxMSwxNiArNDE1LDggQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjptdXRlQ2hhbmdlZCgpCiBQYXNzUmVm
UHRyPEJpdG1hcFRleHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0
ZVRleHR1cmUoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcikKIHsKICAgICBXVEY6OkdNdXRl
eExvY2tlcjxHTXV0ZXg+IGxvY2sobV9zYW1wbGVNdXRleCk7Ci0gICAgaWYgKCFHU1RfSVNfU0FN
UExFKG1fc2FtcGxlLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBHc3RD
YXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBsZS5nZXQoKSk7Ci0gICAgaWYg
KCFjYXBzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgIEdzdFZpZGVvSW5mbyB2aWRl
b0luZm87Ci0gICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmdmlkZW9JbmZvKTsKLSAgICBpZiAoIWdz
dF92aWRlb19pbmZvX2Zyb21fY2FwcygmdmlkZW9JbmZvLCBjYXBzKSkKKyAgICBpZiAoIWdldFNh
bXBsZVZpZGVvSW5mbyhtX3NhbXBsZS5nZXQoKSwgdmlkZW9JbmZvKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJ
RFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwpAQCAt
NTM4LDE2ICs1MzQsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBh
aW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cgogICAgIH0KIAogI2lmIFVT
RShHU1RSRUFNRVJfR0wpCi0gICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2Nh
cHMobV9zYW1wbGUuZ2V0KCkpOwotICAgIGlmICghY2FwcykKLSAgICAgICAgcmV0dXJuOwotCiAg
ICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKLSAgICBnc3RfdmlkZW9faW5mb19pbml0KCZ2aWRl
b0luZm8pOwotICAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNh
cHMpKQorICAgIGlmICghZ2V0U2FtcGxlVmlkZW9JbmZvKG1fc2FtcGxlLmdldCgpLCB2aWRlb0lu
Zm8pKQogICAgICAgICByZXR1cm47CiAKICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1w
bGVfZ2V0X2J1ZmZlcihtX3NhbXBsZS5nZXQoKSk7CkBAIC01NjgsNiArNTU2LDQyIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyCiB9CiAjZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCitQ
YXNzTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpCit7CisjaWYgIVVTRShDQUlSTykgfHwgIUVOQUJMRShBQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKKworICAgIGlm
IChtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgV1RGOjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOworCisgICAg
R3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKKyAgICBpZiAoIWdldFNhbXBsZVZpZGVvSW5mbyhtX3Nh
bXBsZS5nZXQoKSwgdmlkZW9JbmZvKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBH
c3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihtX3NhbXBsZS5nZXQoKSk7
CisgICAgR3N0VmlkZW9GcmFtZSB2aWRlb0ZyYW1lOworICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1l
X21hcCgmdmlkZW9GcmFtZSwgJnZpZGVvSW5mbywgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RNYXBG
bGFncz4oR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIEdMQ29udGV4dCogY29udGV4dCA9IEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQo
KTsKKyAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBjYWlyb19kZXZpY2Vf
dCogZGV2aWNlID0gY29udGV4dC0+Y2Fpcm9EZXZpY2UoKTsKKworICAgIC8vIFRocmVhZC1hd2Fy
ZW5lc3MgaXMgYSBodWdlIHBlcmZvcm1hbmNlIGhpdCBvbiBub24tSW50ZWwgZHJpdmVycy4KKyAg
ICBjYWlyb19nbF9kZXZpY2Vfc2V0X3RocmVhZF9hd2FyZShkZXZpY2UsIEZBTFNFKTsKKworICAg
IHVuc2lnbmVkIHRleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4odmlkZW9G
cmFtZS5kYXRhWzBdKTsKKyAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZP
X1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwor
ICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zv
cl90ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgdGV4dHVyZUlELCBz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCgm
dmlkZW9GcmFtZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKHN1cmZhY2UpOworfQorI2VuZGlmCisK
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c3VwcG9ydHNGdWxsc2NyZWVu
KCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IDg5ZWFhNzkuLjcwNmEzMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaApAQCAt
MTExLDYgKzExMSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJl
TWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGZsb2F0KTsKICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAg
ICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7
CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UoTWVkaWFQbGF5ZXIqKTsKICAgICB2aXJ0dWFsIEdzdEVsZW1lbnQqIGNyZWF0ZVZpZGVvU2lu
aygpOwotLSAKMi4xLjQ=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249927</attachid>
            <date>2015-04-01 10:06:39 -0700</date>
            <delta_ts>2016-01-02 11:00:44 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>12373</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBkNWE3Yjk5ZDQ0Y2Y3OGYwM2NkYzA4ZjVjMzNiYTgwNjVjMGY2ZTAyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDEgQXByIDIwMTUgMTI6NTQ6MTYgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IDI0ICsrKysrKysrKwogLi4uL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmggfCAgNiArKy0KIC4uLi9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAgICAgICAgIHwgMzAgKysrKysrKysrKysKIC4uLi9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmNwcCAgICAgIHwgMTcgKysrKystCiAuLi4vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oICAgICAgICB8ICAyICsKIC4uLi9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgIHwgNjAgKysrKysrKysr
KysrKysrLS0tLS0tLQogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmggICAgfCAgNCArKwogOCBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKSwgMjIg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ5NjZmMWQuLjZmNjFiMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAxNS0wNC0wMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gQSB2aWRlbyBlbGVtZW50IGlzbid0
IGRyYXduIG9udG8gdGhlIGNhbnZhcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMjY3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdoZW4gYm90aCBjYWlyby1nbCBhbmQgZ3N0LWdsIGFyZSBhdmFpbGFi
bGUgdGhlIHRleHR1cmUgY29taW5nCisgICAgICAgIGZyb20gZ2xpbWFnZXNpbmsgY2FuIGJlIHVz
ZWQgdG8gY3JlYXRlIGEgY2Fpcm8tZ2wgc3VyZmFjZSB0aGF0IGNhbgorICAgICAgICBiZSB1c2Vk
IGZvciB2aWRlbyByZW5kZXJpbmcgd2l0aGluIGEgY2FudmFzIGVsZW1lbnQuCisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UpOiBVc2UgTmF0aXZlSW1h
Z2UKKyAgICAgICAgZHJhd2luZyBpZiBib3RoIGNhaXJvLWdsIGFuZCBnc3QtZ2wgYXJlIGF2YWls
YWJsZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDogSW1w
bGVtZW50IGRyYXdOYXRpdmVJbWFnZQorICAgICAgICBmb3IgQ2Fpcm8gR3JhcGhpY3NDb250ZXh0
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdl
KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICBJbXBsZW1lbnQgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50VGltZSgpLCB0aGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHRoZQorICAgICAgICBj
YW52YXMgcmVuZGVyaW5nIGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5oOgorCiAyMDE1LTAzLTMwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBNb3ZlIHN5bmNocm9ub3VzIG1lc3NhZ2UgaGFu
ZGxlciB0byBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRl
eCBjYjcwODQ2Li4yODJiZjE2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTE1MzcsNyArMTUzNyw3IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVu
dCogdmlkZW8sIGNvbnN0IEZsb2F0UmVjCiAKICAgICBjaGVja09yaWdpbih2aWRlbyk7CiAKLSNp
ZiBVU0UoQ0cpCisjaWYgVVNFKENHKSB8fCAoRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykg
JiYgVVNFKEdTVFJFQU1FUl9HTCkgJiYgVVNFKENBSVJPKSkKICAgICBpZiAoUGFzc05hdGl2ZUlt
YWdlUHRyIGltYWdlID0gdmlkZW8tPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkgewogICAg
ICAgICBjLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIEZsb2F0U2l6ZSh2aWRlby0+dmlkZW9XaWR0
aCgpLCB2aWRlby0+dmlkZW9IZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3Qs
IHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApp
bmRleCBlMGJjZmE1Li44N2RjYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjQ5LDEzICsyNDksMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAorI2lmIFVTRShDRykgfHwgVVNFKENBSVJP
KQorICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZl
SW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRp
b24pOworI2VuZGlmCisKICNpZiBVU0UoQ0cpCiAgICAgICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0
ZXJuKCk7CiAgICAgICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpOwogICAgICAgICB2b2lkIGRy
YXdQYXRoKGNvbnN0IFBhdGgmKTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdO
YXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0g
RGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwotCiAgICAgICAgIC8vIEFsbG93IGZvbnQgc21vb3Ro
aW5nIChMQ0QgYW50aWFsaWFzaW5nKS4gTm90IHBhcnQgb2YgdGhlIGdyYXBoaWNzIHN0YXRlLgog
ICAgICAgICB2b2lkIHNldEFsbG93c0ZvbnRTbW9vdGhpbmcoYm9vbCk7CiAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDM3YTUzODIuLjJlNWMwMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTI1Miw2ICsyNTIsMzYgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQpCiAgICAgY2Fp
cm9fcmVzdG9yZShjcik7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1h
Z2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmLCBDb2xvclNw
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKK3sKKyAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IGltYWdlUHRyOworCisg
ICAgcGxhdGZvcm1Db250ZXh0KCktPnNhdmUoKTsKKworICAgIC8vIFNldCB0aGUgY29tcG9zaXRp
bmcgb3BlcmF0aW9uLgorICAgIGlmIChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIGJsZW5k
TW9kZSA9PSBCbGVuZE1vZGVOb3JtYWwpCisgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihD
b21wb3NpdGVDb3B5KTsKKyAgICBlbHNlCisgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihv
cCwgYmxlbmRNb2RlKTsKKworICAgIEZsb2F0UmVjdCBkc3RSZWN0ID0gZHN0OworCisgICAgaWYg
KG9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKSB7CisgICAgICAgIC8vIElt
YWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGF0ICgwLCAwKS4KKyAgICAg
ICAgdHJhbnNsYXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CisgICAgICAgIGRzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKKyAgICAgICAgY29uY2F0Q1RNKG9yaWVudGF0aW9u
LnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdFJlY3Quc2l6ZSgpKSk7CisgICAgICAgIGlmIChvcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7CisgICAgICAgICAgICAvLyBUaGUgZGVzdGlu
YXRpb24gcmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSBy
ZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCisgICAgICAgICAgICAvLyB0aGUgaW1hZ2Us
IGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2Ug
aXQgYmFjayBoZXJlLgorICAgICAgICAgICAgZHN0UmVjdCA9IEZsb2F0UmVjdChkc3RSZWN0Lngo
KSwgZHN0UmVjdC55KCksIGRzdFJlY3QuaGVpZ2h0KCksIGRzdFJlY3Qud2lkdGgoKSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRl
eHQoaW1hZ2UuZ2V0KCksIGRzdFJlY3QsIHNyY1JlY3QsIHRoaXMpOworICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5yZXN0b3JlKCk7Cit9CisKIHN0YXRpYyBkb3VibGUgY2FsY3VsYXRlU3Ryb2tlUGF0
dGVybk9mZnNldChpbnQgZGlzdGFuY2UsIGludCBwYXR0ZXJuV2lkdGgpCiB7CiAgICAgLy8gRXhh
bXBsZTogODAgcGl4ZWxzIHdpdGggYSB3aWR0aCBvZiAzMCBwaXhlbHMuIFJlbWFpbmRlciBpcyAy
MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKaW5kZXggMjc5YmRkZS4uZDdjNTE4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKQEAgLTI2LDcgKzI2LDYgQEAK
IAogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby1pbmZvLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5o
PgotI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby1pbmZvLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKQEAgLTczLDYg
KzcyLDIyIEBAIGJvb2wgZ2V0VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoR3N0Q2FwcyogY2Fw
cywgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgR3N0VmlkCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
KworYm9vbCBnZXRTYW1wbGVWaWRlb0luZm8oR3N0U2FtcGxlKiBzYW1wbGUsIEdzdFZpZGVvSW5m
byYgdmlkZW9JbmZvKQoreworICAgIGlmICghR1NUX0lTX1NBTVBMRShzYW1wbGUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2Fw
cyhzYW1wbGUpOworICAgIGlmICghY2FwcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Z3N0X3ZpZGVvX2luZm9faW5pdCgmdmlkZW9JbmZvKTsKKyAgICBpZiAoIWdzdF92aWRlb19pbmZv
X2Zyb21fY2FwcygmdmlkZW9JbmZvLCBjYXBzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CiAjZW5kaWYKIAogR3N0QnVmZmVyKiBjcmVhdGVHc3RCdWZmZXIo
R3N0QnVmZmVyKiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0aWVzLmgKaW5kZXggNmEx
MmRlNi4uZTk4MGY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaApAQCAtMjAsNiAr
MjAsNyBAQAogCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC92aWRlby92aWRl
by1mb3JtYXQuaD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8taW5mby5oPgogCiAjZGVmaW5l
IExPR19NRURJQV9NRVNTQUdFKC4uLikgZG8geyBcCiAgICAgR1NUX0RFQlVHKF9fVkFfQVJHU19f
KTsgXApAQCAtNjUsNiArNjYsNyBAQCBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24o
Z3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIEdzdFBhZCogd2Via2l0R3N0
R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxhdGUoR3N0U3RhdGljUGFkVGVtcGxhdGUqLCBjb25zdCBn
Y2hhciogbmFtZSwgR3N0UGFkKiB0YXJnZXQpOwogI2lmIEVOQUJMRShWSURFTykKIGJvb2wgZ2V0
VmlkZW9TaXplQW5kRm9ybWF0RnJvbUNhcHMoR3N0Q2FwcyosIFdlYkNvcmU6OkludFNpemUmLCBH
c3RWaWRlb0Zvcm1hdCYsIGludCYgcGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvciwgaW50JiBwaXhl
bEFzcGVjdFJhdGlvRGVub21pbmF0b3IsIGludCYgc3RyaWRlKTsKK2Jvb2wgZ2V0U2FtcGxlVmlk
ZW9JbmZvKEdzdFNhbXBsZSosIEdzdFZpZGVvSW5mbyYpOwogI2VuZGlmCiBHc3RCdWZmZXIqIGNy
ZWF0ZUdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKIEdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyRm9y
RGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA0OTk1NTM5Li5hMWM4
ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuY3BwCkBAIC03OCw2ICs3OCwxMCBAQAogI2VuZGlmCiAjZW5kaWYgLy8gVVNFKEdTVFJF
QU1FUl9HTCkKIAorI2lmIFVTRShDQUlSTykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKKyNpbmNsdWRlIDxjYWlyby1nbC5oPgorI2VuZGlmCisKIEdTVF9ERUJVR19DQVRFR09SWSh3
ZWJraXRfbWVkaWFfcGxheWVyX2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtp
dF9tZWRpYV9wbGF5ZXJfZGVidWcKIApAQCAtNDExLDE2ICs0MTUsOCBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om11dGVDaGFuZ2VkKCkKIFBhc3NSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dXBkYXRlVGV4dHVyZShU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKQogewogICAgIFdURjo6R011dGV4TG9ja2VyPEdN
dXRleD4gbG9jayhtX3NhbXBsZU11dGV4KTsKLSAgICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1w
bGUuZ2V0KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEdzdENhcHMqIGNhcHMg
PSBnc3Rfc2FtcGxlX2dldF9jYXBzKG1fc2FtcGxlLmdldCgpKTsKLSAgICBpZiAoIWNhcHMpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKLSAg
ICBnc3RfdmlkZW9faW5mb19pbml0KCZ2aWRlb0luZm8pOwotICAgIGlmICghZ3N0X3ZpZGVvX2lu
Zm9fZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMpKQorICAgIGlmICghZ2V0U2FtcGxlVmlkZW9J
bmZvKG1fc2FtcGxlLmdldCgpLCB2aWRlb0luZm8pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIEludFNpemUgc2l6ZSA9IEludFNpemUoR1NUX1ZJREVPX0lORk9fV0lEVEgoJnZpZGVv
SW5mbyksIEdTVF9WSURFT19JTkZPX0hFSUdIVCgmdmlkZW9JbmZvKSk7CkBAIC01MzgsMTYgKzUz
NCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyCiAgICAgfQogCiAjaWYgVVNFKEdTVFJFQU1F
Ul9HTCkKLSAgICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhtX3NhbXBs
ZS5nZXQoKSk7Ci0gICAgaWYgKCFjYXBzKQotICAgICAgICByZXR1cm47Ci0KICAgICBHc3RWaWRl
b0luZm8gdmlkZW9JbmZvOwotICAgIGdzdF92aWRlb19pbmZvX2luaXQoJnZpZGVvSW5mbyk7Ci0g
ICAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMoJnZpZGVvSW5mbywgY2FwcykpCisgICAg
aWYgKCFnZXRTYW1wbGVWaWRlb0luZm8obV9zYW1wbGUuZ2V0KCksIHZpZGVvSW5mbykpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVm
ZmVyKG1fc2FtcGxlLmdldCgpKTsKQEAgLTU2OCw2ICs1NTYsNDIgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXIKIH0KICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKK1Bhc3NOYXRpdmVJ
bWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkKK3sKKyNpZiAhVVNFKENBSVJPKSB8fCAhRU5BQkxFKEFDQ0VMRVJBVEVEXzJE
X0NBTlZBUykKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorCisgICAgaWYgKG1fdXNpbmdG
YWxsYmFja1ZpZGVvU2luaykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBXVEY6OkdN
dXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9zYW1wbGVNdXRleCk7CisKKyAgICBHc3RWaWRlb0lu
Zm8gdmlkZW9JbmZvOworICAgIGlmICghZ2V0U2FtcGxlVmlkZW9JbmZvKG1fc2FtcGxlLmdldCgp
LCB2aWRlb0luZm8pKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEdzdEJ1ZmZlciog
YnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlLmdldCgpKTsKKyAgICBHc3RW
aWRlb0ZyYW1lIHZpZGVvRnJhbWU7CisgICAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwKCZ2aWRl
b0ZyYW1lLCAmdmlkZW9JbmZvLCBidWZmZXIsIHN0YXRpY19jYXN0PEdzdE1hcEZsYWdzPihHU1Rf
TUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
R0xDb250ZXh0KiBjb250ZXh0ID0gR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpOworICAgIGNv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGNhaXJvX2RldmljZV90KiBkZXZpY2Ug
PSBjb250ZXh0LT5jYWlyb0RldmljZSgpOworCisgICAgLy8gVGhyZWFkLWF3YXJlbmVzcyBpcyBh
IGh1Z2UgcGVyZm9ybWFuY2UgaGl0IG9uIG5vbi1JbnRlbCBkcml2ZXJzLgorICAgIGNhaXJvX2ds
X2RldmljZV9zZXRfdGhyZWFkX2F3YXJlKGRldmljZSwgRkFMU0UpOworCisgICAgdW5zaWduZWQg
dGV4dHVyZUlEID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPih2aWRlb0ZyYW1lLmRhdGFb
MF0pOworICAgIEludFNpemUgc2l6ZSA9IEludFNpemUoR1NUX1ZJREVPX0lORk9fV0lEVEgoJnZp
ZGVvSW5mbyksIEdTVF9WSURFT19JTkZPX0hFSUdIVCgmdmlkZW9JbmZvKSk7CisgICAgY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9yX3RleHR1cmUo
ZGV2aWNlLCBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBLCB0ZXh0dXJlSUQsIHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1l
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoc3VyZmFjZSk7Cit9CisjZW5kaWYKKwogYm9vbCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAog
ewogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmgKaW5kZXggODllYWE3OS4uNzA2YTMxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0xMTEsNiArMTEx
LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgZmxvYXQpOwogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIHZpcnR1YWwg
UGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyNlbmRpZgor
CiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBs
YXllciopOwogICAgIHZpcnR1YWwgR3N0RWxlbWVudCogY3JlYXRlVmlkZW9TaW5rKCk7Ci0tIAoy
LjEuNA==
</data>
<flag name="review"
          id="274770"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>