<?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>159405</bug_id>
          
          <creation_ts>2016-07-04 05:13:40 -0700</creation_ts>
          <short_desc>[GTK] Painting a video into a canvas doesn&apos;t work when accelerated compositing is enabled</short_desc>
          <delta_ts>2016-07-07 06:04:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit 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="Miguel Gomez">magomez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1207657</commentid>
    <comment_count>0</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-04 05:13:40 -0700</bug_when>
    <thetext>When not using accelerated compositing, it&apos;s possible to paint a video&apos;s content into a canvas, but this is not working when accelerated compositing is enabled. This happens with or without the threaded compositor enabled, and also with and without using gstreamer-gl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207662</commentid>
    <comment_count>1</comment_count>
      <attachid>282712</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-04 06:31:26 -0700</bug_when>
    <thetext>Created attachment 282712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207664</commentid>
    <comment_count>2</comment_count>
      <attachid>282714</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-04 06:38:24 -0700</bug_when>
    <thetext>Created attachment 282714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207671</commentid>
    <comment_count>3</comment_count>
      <attachid>282714</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-07-04 07:28:13 -0700</bug_when>
    <thetext>Comment on attachment 282714
Patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        Delegate the painting into the player, who knows the video orientation to apply.

Why?
Can&apos;t we expose the video orientation somehow to the rendering context so that everything could be handled there without going to platform layer?

It&apos;s a bit weird to let the CG code path as-is and handle the feature differently on our side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207827</commentid>
    <comment_count>4</comment_count>
      <attachid>282786</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-05 07:54:20 -0700</bug_when>
    <thetext>Created attachment 282786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207828</commentid>
    <comment_count>5</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-05 07:56:50 -0700</bug_when>
    <thetext>I&apos;ve changed the approach to follow the same code path inside CanvasRenderingContext2D. Now MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime returs the image properly rotated according to the video orientation. This way all the orientation stuff gets managed inside that class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207832</commentid>
    <comment_count>6</comment_count>
      <attachid>282786</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-07-05 08:04:09 -0700</bug_when>
    <thetext>Comment on attachment 282786
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:708
&gt; +    double pi = 3.14159265358979323846;

Please use the constants defined in wtf/MathExtras.h :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207834</commentid>
    <comment_count>7</comment_count>
      <attachid>282789</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-05 08:06:15 -0700</bug_when>
    <thetext>Created attachment 282789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207836</commentid>
    <comment_count>8</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-05 08:06:50 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 282786 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=282786&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:708
&gt; &gt; +    double pi = 3.14159265358979323846;
&gt; 
&gt; Please use the constants defined in wtf/MathExtras.h :)

Fixed in last version of the patch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208085</commentid>
    <comment_count>9</comment_count>
      <attachid>282789</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-05 23:36:46 -0700</bug_when>
    <thetext>Comment on attachment 282789
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:-606
&gt; -#if USE(COORDINATED_GRAPHICS_THREADED)
&gt; -    return;
&gt; -#elif USE(TEXTURE_MAPPER_GL) &amp;&amp; !USE(COORDINATED_GRAPHICS)
&gt; -    if (client())
&gt; -        return;
&gt; -#endif
&gt; -

So, paint was not supposed to be called before when using AC, right? Can this still be called when using AC but not rendering in accelerated 2d canvas context?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:692
&gt; -        return nullptr;
&gt; +        return adoptRef(cairo_gl_surface_create(device, CAIRO_CONTENT_COLOR_ALPHA, 0, 0));

The caller null checks the return value, when is this supposed to return null? So, we are now returning an uninitialized surface?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:697
&gt; -        return nullptr;
&gt; +        return adoptRef(cairo_gl_surface_create(device, CAIRO_CONTENT_COLOR_ALPHA, 0, 0));

Ditto.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:702
&gt;      cairo_surface_t* surface = cairo_gl_surface_create_for_texture(device, CAIRO_CONTENT_COLOR_ALPHA, textureID, size.width(), size.height());

Instead of using raw pointers and then create the RefPtr when returning it, we could change this to use RefPtr, so that if an early return is added after this we won&apos;t leak the surface.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:703
&gt; +    cairo_surface_mark_dirty(surface);

I&apos;m surprised we need to mark the surface as dirty right after creating it, and before render into it.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:706
&gt; +    cairo_surface_t* rotatedSurface = cairo_gl_surface_create(device, CAIRO_CONTENT_COLOR_ALPHA, rotatedSize.width(), rotatedSize.height());

Use RefPtr here.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:707
&gt; +    cairo_t* cr = cairo_create(rotatedSurface);

And here.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:717
&gt; +    case OriginRightTop: {
&gt; +        cairo_translate(cr, rotatedSize.width() * 0.5, rotatedSize.height() * 0.5);
&gt; +        cairo_rotate(cr, M_PI / 2.0);
&gt; +        cairo_translate(cr, -rotatedSize.height() * 0.5, -rotatedSize.width() * 0.5);
&gt; +        break;
&gt; +    }

Why do you need {} here and not in the other cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208110</commentid>
    <comment_count>10</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-06 00:38:14 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 282789 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=282789&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:-606
&gt; &gt; -#if USE(COORDINATED_GRAPHICS_THREADED)
&gt; &gt; -    return;
&gt; &gt; -#elif USE(TEXTURE_MAPPER_GL) &amp;&amp; !USE(COORDINATED_GRAPHICS)
&gt; &gt; -    if (client())
&gt; &gt; -        return;
&gt; &gt; -#endif
&gt; &gt; -
&gt; 
&gt; So, paint was not supposed to be called before when using AC, right? Can
&gt; this still be called when using AC but not rendering in accelerated 2d
&gt; canvas context?

Yes, paint was disabled before when using AC. This was probably because VideoSinkGStreamer was delivering the frames as EGL images, so when using AC there should be a fast copy implemented and it was not there yet. But currently VideoSinkGStreamer returns the frame as normal buffers, so the code to create the image and paint is valid as long as we are not using gstreamer-gl.
Then, when painting, it doesn&apos;t matter whether we are using an accelerated canvas or not, as cairo will perform the appropriate operations for each case.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:692
&gt; &gt; -        return nullptr;
&gt; &gt; +        return adoptRef(cairo_gl_surface_create(device, CAIRO_CONTENT_COLOR_ALPHA, 0, 0));
&gt; 
&gt; The caller null checks the return value, when is this supposed to return
&gt; null? So, we are now returning an uninitialized surface?

Yes, the caller checks for null value. But hen trying to create a pattern from the video content, if null is returned CanvasRenderingContext2D will fall back to use paintCurrentFrameInContext, which may crash. I found this problem when trying to get a frame from a video that is not playing yet using gstreamer-gl. In that situation neither the frame nor the caps are available. That&apos;s why I return an empty surface instead, so the rendering context doesn&apos;t try to paint again.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:697
&gt; &gt; -        return nullptr;
&gt; &gt; +        return adoptRef(cairo_gl_surface_create(device, CAIRO_CONTENT_COLOR_ALPHA, 0, 0));
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:702
&gt; &gt;      cairo_surface_t* surface = cairo_gl_surface_create_for_texture(device, CAIRO_CONTENT_COLOR_ALPHA, textureID, size.width(), size.height());
&gt; 
&gt; Instead of using raw pointers and then create the RefPtr when returning it,
&gt; we could change this to use RefPtr, so that if an early return is added
&gt; after this we won&apos;t leak the surface.

Sure.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:703
&gt; &gt; +    cairo_surface_mark_dirty(surface);
&gt; 
&gt; I&apos;m surprised we need to mark the surface as dirty right after creating it,
&gt; and before render into it.

That&apos;s because we are creating the surface for a texture that already has content, but cairo doesn&apos;t know. So When using cairo to paint it, as there were no cairo painting operations, it assumes that there&apos;s nothing to paint. Marking it as dirty tells cairo that there&apos;s already content to use.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:706
&gt; &gt; +    cairo_surface_t* rotatedSurface = cairo_gl_surface_create(device, CAIRO_CONTENT_COLOR_ALPHA, rotatedSize.width(), rotatedSize.height());
&gt; 
&gt; Use RefPtr here.

Roger that.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:707
&gt; &gt; +    cairo_t* cr = cairo_create(rotatedSurface);
&gt; 
&gt; And here.

Ok.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:717
&gt; &gt; +    case OriginRightTop: {
&gt; &gt; +        cairo_translate(cr, rotatedSize.width() * 0.5, rotatedSize.height() * 0.5);
&gt; &gt; +        cairo_rotate(cr, M_PI / 2.0);
&gt; &gt; +        cairo_translate(cr, -rotatedSize.height() * 0.5, -rotatedSize.width() * 0.5);
&gt; &gt; +        break;
&gt; &gt; +    }
&gt; 
&gt; Why do you need {} here and not in the other cases?

Good question, I missed that :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208114</commentid>
    <comment_count>11</comment_count>
      <attachid>282858</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-06 01:01:03 -0700</bug_when>
    <thetext>Created attachment 282858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208115</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-06 01:07:27 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Comment on attachment 282789 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=282789&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:-606
&gt; &gt; &gt; -#if USE(COORDINATED_GRAPHICS_THREADED)
&gt; &gt; &gt; -    return;
&gt; &gt; &gt; -#elif USE(TEXTURE_MAPPER_GL) &amp;&amp; !USE(COORDINATED_GRAPHICS)
&gt; &gt; &gt; -    if (client())
&gt; &gt; &gt; -        return;
&gt; &gt; &gt; -#endif
&gt; &gt; &gt; -
&gt; &gt; 
&gt; &gt; So, paint was not supposed to be called before when using AC, right? Can
&gt; &gt; this still be called when using AC but not rendering in accelerated 2d
&gt; &gt; canvas context?
&gt; 
&gt; Yes, paint was disabled before when using AC. This was probably because
&gt; VideoSinkGStreamer was delivering the frames as EGL images, so when using AC
&gt; there should be a fast copy implemented and it was not there yet. But
&gt; currently VideoSinkGStreamer returns the frame as normal buffers, so the
&gt; code to create the image and paint is valid as long as we are not using
&gt; gstreamer-gl.
&gt; Then, when painting, it doesn&apos;t matter whether we are using an accelerated
&gt; canvas or not, as cairo will perform the appropriate operations for each
&gt; case.
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:692
&gt; &gt; &gt; -        return nullptr;
&gt; &gt; &gt; +        return adoptRef(cairo_gl_surface_create(device, CAIRO_CONTENT_COLOR_ALPHA, 0, 0));
&gt; &gt; 
&gt; &gt; The caller null checks the return value, when is this supposed to return
&gt; &gt; null? So, we are now returning an uninitialized surface?
&gt; 
&gt; Yes, the caller checks for null value. But hen trying to create a pattern
&gt; from the video content, if null is returned CanvasRenderingContext2D will
&gt; fall back to use paintCurrentFrameInContext, which may crash. I found this
&gt; problem when trying to get a frame from a video that is not playing yet
&gt; using gstreamer-gl. In that situation neither the frame nor the caps are
&gt; available. That&apos;s why I return an empty surface instead, so the rendering
&gt; context doesn&apos;t try to paint again.

So, maybe that should be handled in paint? I&apos;m not sure I understand how this is supposed to work. Because then paint() is not supposed to be called not either, if the canvas always uses nativeImageForCurrentTime() in case of accelerated 2d canvas, no?

&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:697
&gt; &gt; &gt; -        return nullptr;
&gt; &gt; &gt; +        return adoptRef(cairo_gl_surface_create(device, CAIRO_CONTENT_COLOR_ALPHA, 0, 0));
&gt; &gt; 
&gt; &gt; Ditto.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:702
&gt; &gt; &gt;      cairo_surface_t* surface = cairo_gl_surface_create_for_texture(device, CAIRO_CONTENT_COLOR_ALPHA, textureID, size.width(), size.height());
&gt; &gt; 
&gt; &gt; Instead of using raw pointers and then create the RefPtr when returning it,
&gt; &gt; we could change this to use RefPtr, so that if an early return is added
&gt; &gt; after this we won&apos;t leak the surface.
&gt; 
&gt; Sure.
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:703
&gt; &gt; &gt; +    cairo_surface_mark_dirty(surface);
&gt; &gt; 
&gt; &gt; I&apos;m surprised we need to mark the surface as dirty right after creating it,
&gt; &gt; and before render into it.
&gt; 
&gt; That&apos;s because we are creating the surface for a texture that already has
&gt; content, but cairo doesn&apos;t know. So When using cairo to paint it, as there
&gt; were no cairo painting operations, it assumes that there&apos;s nothing to paint.
&gt; Marking it as dirty tells cairo that there&apos;s already content to use.

This sounds to me like a cairo bug, as I understand it, mark dirty is to tell cairo that you have modified the data of an existing surface. The image backend, marks the surface as dirty when cairo_image_surface_create_for_data is called and the given data is not NULL. I guess the gl backend should do something similar when a surface is created with a texture. If this is the case, we should file a bug report in cairo, add a comment here saying this is a workaround for a cairo bug and adding bug url in the comment, and if we also fix cairo that would be awesome :-)

&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:706
&gt; &gt; &gt; +    cairo_surface_t* rotatedSurface = cairo_gl_surface_create(device, CAIRO_CONTENT_COLOR_ALPHA, rotatedSize.width(), rotatedSize.height());
&gt; &gt; 
&gt; &gt; Use RefPtr here.
&gt; 
&gt; Roger that.
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:707
&gt; &gt; &gt; +    cairo_t* cr = cairo_create(rotatedSurface);
&gt; &gt; 
&gt; &gt; And here.
&gt; 
&gt; Ok.
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:717
&gt; &gt; &gt; +    case OriginRightTop: {
&gt; &gt; &gt; +        cairo_translate(cr, rotatedSize.width() * 0.5, rotatedSize.height() * 0.5);
&gt; &gt; &gt; +        cairo_rotate(cr, M_PI / 2.0);
&gt; &gt; &gt; +        cairo_translate(cr, -rotatedSize.height() * 0.5, -rotatedSize.width() * 0.5);
&gt; &gt; &gt; +        break;
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; Why do you need {} here and not in the other cases?
&gt; 
&gt; Good question, I missed that :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208149</commentid>
    <comment_count>13</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-06 03:01:50 -0700</bug_when>
    <thetext>&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:692
&gt; &gt; &gt; &gt; -        return nullptr;
&gt; &gt; &gt; &gt; +        return adoptRef(cairo_gl_surface_create(device, CAIRO_CONTENT_COLOR_ALPHA, 0, 0));
&gt; &gt; &gt; 
&gt; &gt; &gt; The caller null checks the return value, when is this supposed to return
&gt; &gt; &gt; null? So, we are now returning an uninitialized surface?
&gt; &gt; 
&gt; &gt; Yes, the caller checks for null value. But hen trying to create a pattern
&gt; &gt; from the video content, if null is returned CanvasRenderingContext2D will
&gt; &gt; fall back to use paintCurrentFrameInContext, which may crash. I found this
&gt; &gt; problem when trying to get a frame from a video that is not playing yet
&gt; &gt; using gstreamer-gl. In that situation neither the frame nor the caps are
&gt; &gt; available. That&apos;s why I return an empty surface instead, so the rendering
&gt; &gt; context doesn&apos;t try to paint again.
&gt; 
&gt; So, maybe that should be handled in paint? I&apos;m not sure I understand how
&gt; this is supposed to work. Because then paint() is not supposed to be called
&gt; not either, if the canvas always uses nativeImageForCurrentTime() in case of
&gt; accelerated 2d canvas, no?

Ok, I&apos;ll modify the patch to return null again, and open a new bug to handle the situation where the caps are not negotiated in another bug.
 
&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:703
&gt; &gt; &gt; &gt; +    cairo_surface_mark_dirty(surface);
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m surprised we need to mark the surface as dirty right after creating it,
&gt; &gt; &gt; and before render into it.
&gt; &gt; 
&gt; &gt; That&apos;s because we are creating the surface for a texture that already has
&gt; &gt; content, but cairo doesn&apos;t know. So When using cairo to paint it, as there
&gt; &gt; were no cairo painting operations, it assumes that there&apos;s nothing to paint.
&gt; &gt; Marking it as dirty tells cairo that there&apos;s already content to use.
&gt; 
&gt; This sounds to me like a cairo bug, as I understand it, mark dirty is to
&gt; tell cairo that you have modified the data of an existing surface. The image
&gt; backend, marks the surface as dirty when cairo_image_surface_create_for_data
&gt; is called and the given data is not NULL. I guess the gl backend should do
&gt; something similar when a surface is created with a texture. If this is the
&gt; case, we should file a bug report in cairo, add a comment here saying this
&gt; is a workaround for a cairo bug and adding bug url in the comment, and if we
&gt; also fix cairo that would be awesome :-)

I&apos;ve been retesting this and seems that the mark_dirty is not necessary. I added it when using other approaches to fix the issue, but seems that with this approach it&apos;s working properly without it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208150</commentid>
    <comment_count>14</comment_count>
      <attachid>282870</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-06 03:02:54 -0700</bug_when>
    <thetext>Created attachment 282870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208157</commentid>
    <comment_count>15</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-06 03:34:14 -0700</bug_when>
    <thetext>I&apos;ve just created the bug to handle the empty caps/frames before playing state when using gstreamer-gl:

https://bugs.webkit.org/show_bug.cgi?id=159460</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208159</commentid>
    <comment_count>16</comment_count>
      <attachid>282870</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-07-06 03:37:29 -0700</bug_when>
    <thetext>Comment on attachment 282870
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:712
&gt; +        cairo_rotate(cr.get(), M_PI / 2.0);

Use piOverTwoDouble or piOverTwoFloat ?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:717
&gt; +        cairo_rotate(cr.get(), M_PI);

Use piFloat or piDouble

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:722
&gt; +        cairo_rotate(cr.get(), 3 * M_PI / 2.0);

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208197</commentid>
    <comment_count>17</comment_count>
      <attachid>282885</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-06 06:49:07 -0700</bug_when>
    <thetext>Created attachment 282885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208216</commentid>
    <comment_count>18</comment_count>
      <attachid>282885</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-07-06 08:13:49 -0700</bug_when>
    <thetext>Comment on attachment 282885
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:733
&gt; +    // Ensure that we destroy the surface before unmapping the video frame.
&gt; +    surface.release();

release() leaks the surface, it doesn&apos;t destroy it. What you want is

surface = nullptr;

but I&apos;m not sure this is enough, though. I don&apos;t know why it&apos;s needed to destroy the surface before unmapping the frame, but the cairo context owns a reference to the surface , so even if you clear the smart pointer the surface will still be alive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208563</commentid>
    <comment_count>19</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-07 00:39:48 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Comment on attachment 282885 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=282885&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:733
&gt; &gt; +    // Ensure that we destroy the surface before unmapping the video frame.
&gt; &gt; +    surface.release();
&gt; 
&gt; release() leaks the surface, it doesn&apos;t destroy it. What you want is
&gt; 
&gt; surface = nullptr;

Ooops

&gt; but I&apos;m not sure this is enough, though. I don&apos;t know why it&apos;s needed to
&gt; destroy the surface before unmapping the frame, but the cairo context owns a
&gt; reference to the surface , so even if you clear the smart pointer the
&gt; surface will still be alive.

I wanna destroy the surface created from the video frame texture before the frame unmapping because once the frame is unmapped that texture can be freed/reused by the gstreamer bin.
Curiously this isn&apos;t checked in the current code, just returning the video frame surface. I wonder if I&apos;m being too careful.
Ok, I&apos;ll keep it as in the original code, where the surface is not destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208564</commentid>
    <comment_count>20</comment_count>
      <attachid>282995</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-07 00:44:25 -0700</bug_when>
    <thetext>Created attachment 282995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208574</commentid>
    <comment_count>21</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-07-07 01:45:08 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; So, maybe that should be handled in paint? I&apos;m not sure I understand how
&gt; &gt; this is supposed to work. Because then paint() is not supposed to be called
&gt; &gt; not either, if the canvas always uses nativeImageForCurrentTime() in case of
&gt; &gt; accelerated 2d canvas, no?
&gt; 
&gt; Ok, I&apos;ll modify the patch to return null again, and open a new bug to handle
&gt; the situation where the caps are not negotiated in another bug.

Please add a FIXME comment with a reference to that bug so that we have a reference in the code too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208575</commentid>
    <comment_count>22</comment_count>
      <attachid>282995</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-07-07 01:52:34 -0700</bug_when>
    <thetext>Comment on attachment 282995
Patch

Please, add the requested comments and we are good to go</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208594</commentid>
    <comment_count>23</comment_count>
      <attachid>283005</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-07 04:07:56 -0700</bug_when>
    <thetext>Created attachment 283005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208595</commentid>
    <comment_count>24</comment_count>
      <attachid>283006</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-07-07 04:13:35 -0700</bug_when>
    <thetext>Created attachment 283006
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208597</commentid>
    <comment_count>25</comment_count>
      <attachid>283006</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-07 04:47:21 -0700</bug_when>
    <thetext>Comment on attachment 283006
Patch

Rejecting attachment 283006 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 283006, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/1640748</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208602</commentid>
    <comment_count>26</comment_count>
      <attachid>283006</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-07 06:04:38 -0700</bug_when>
    <thetext>Comment on attachment 283006
Patch

Clearing flags on attachment: 283006

Committed r202901: &lt;http://trac.webkit.org/changeset/202901&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208603</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-07 06:04:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282712</attachid>
            <date>2016-07-04 06:31:26 -0700</date>
            <delta_ts>2016-07-04 06:38:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159405-20160704153057.patch</filename>
            <type>text/plain</type>
            <size>11947</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFmZGU1OTgyYmMyNTg2
ZTI1ZThhMjQ1ZWJmZmE5MGNlNDQxMzRjOC4uODg3NWYwZjhkYWM4OTE2ODg1ZTA1MDJjYWJlOTRl
YTVmODBhZDllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE2LTA3LTA0ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gUGFpbnRpbmcg
YSB2aWRlbyBpbnRvIGEgY2FudmFzIGRvZXNuJ3Qgd29yayB3aGVuIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTQwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCB2aWRlbyBmcmFtZSBwYWludGluZyB0byB0aGUgY2FudmFzIHdo
ZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgZW5hYmxlZC4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0ZW50IHRlc3RzLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd0ltYWdlKToKKyAgICAgICAgRGVsZWdhdGUgdGhlIHBhaW50aW5nIGludG8gdGhl
IHBsYXllciwgd2hvIGtub3dzIHRoZSB2aWRlbyBvcmllbnRhdGlvbiB0byBhcHBseS4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
aGFuZGxlTWVzc2FnZSk6CisgICAgICAgIFJlcGxhY2UgY3VzdG9tIGVudW1lcmF0aW9uIGZvciB0
aGUgdmlkZW8gcm90YXRpb24gd2l0aCB0aGUgSW1hZ2VPcmllbnRhdGlvbiBjbGFzcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpuYXR1cmFsU2l6ZSk6CisgICAgICAgIFJlcGxhY2UgdGhlIG9yaWVudGF0aW9uIHZh
bHVlIGNvbXBhcmlzb24gd2l0aCBJbWFnZU9yaWVudGF0aW9uOjp1c2VzV2lkdGhBc0hlaWdodC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZp
ZGVvU291cmNlT3JpZW50YXRpb24pOgorICAgICAgICBSZXBsYWNlIGN1c3RvbSBlbnVtZXJhdGlv
biBmb3IgdGhlIHZpZGVvIHJvdGF0aW9uIHdpdGggdGhlIEltYWdlT3JpZW50YXRpb24gY2xhc3Mu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIG9y
aWVudGF0aW9uIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAg
IE1hcmsgdGhlIGNhaXJvIHN1cmZhY2UgYXMgZGlydHkgc28gY2Fpcm8ga25vd3MgdGhhdCBpdCBo
YXMgY29udGVudHMgYWxyZWFkeS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAgICAgUGVyZm9ybSB0aGUgZnJhbWUgcGFpbnRp
bmcgdGFraW5nIGludG8gYWNjb3VudCB0aGUgdmlkZW8gb3JpZW50YXRpb24gdGFnLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmg6CisgICAgICAgIFJlbW92ZSBjdXN0b20gZW51bWVyYXRpb24gZm9yIHRoZSB2aWRl
byBvcmllbnRhdGlvbi4KKwogMjAxNi0wNy0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2ltYWdlLWRlY29kZXJzXSBNYWtlIEltYWdlRGVj
b2Rlcjo6c2l6ZSgpIGxhemlseSBkZWNvZGUgdGhlIGltYWdlIGlmIG5lZWRlZCB0byByZXR1cm4g
YSB2YWxpZCBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBjYTM2ZGIxMTdkNzM3YzM1NzMyMTZmMmNm
MmI1ZGYxN2Y5MjU1Yjg0Li41OWM2NTZmNTNjNTFjNTc1NmU2MjgxNTczMmUxZTA2Y2EyYzFiYTdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAKQEAgLTE1NDYsNyArMTU0Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlkZW8sIGNvbnN0IEZs
b2F0UmVjCiAKICAgICBjaGVja09yaWdpbigmdmlkZW8pOwogCi0jaWYgVVNFKENHKSB8fCAoRU5B
QkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJiYgVVNFKEdTVFJFQU1FUl9HTCkgJiYgVVNFKENB
SVJPKSkKKyNpZiBVU0UoQ0cpCiAgICAgaWYgKE5hdGl2ZUltYWdlUHRyIGltYWdlID0gdmlkZW8u
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CiAgICAgICAgIGMtPmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQo
KSksIGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRz
dFJlY3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAppbmRleCBhMDZhZmE1YTIxYjllZTRiNGQxZTE5ZWEwMmExMzIwMjU0MzA3NzA4Li40ZjVlODYw
NmM4ZjRhYjQ1MDNiMDZiZGMwZTMyOTM4MGY5YzAyMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTAyOCwxMSArMTAyOCwxMSBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdl
KiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV90YWcobWVzc2FnZSwgJnRhZ3Mp
OwogICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NUX1RBR19JTUFH
RV9PUklFTlRBVElPTiwgJnRhZy5vdXRQdHIoKSkpIHsKICAgICAgICAgICAgIGlmICghZ19zdHJj
bXAwKHRhZy5nZXQoKSwgInJvdGF0ZS05MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291
cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3RhdGlvbjkwKTsKKyAgICAgICAgICAgICAgICBzZXRW
aWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luUmlnaHRUb3ApKTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRlLTE4MCIp
KQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3Rh
dGlvbjE4MCk7CisgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFn
ZU9yaWVudGF0aW9uKE9yaWdpbkJvdHRvbVJpZ2h0KSk7CiAgICAgICAgICAgICBlbHNlIGlmICgh
Z19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS0yNzAiKSkKLSAgICAgICAgICAgICAgICBzZXRW
aWRlb1NvdXJjZVJvdGF0aW9uKFZpZGVvU291cmNlUm90YXRpb24yNzApOworICAgICAgICAgICAg
ICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmlnaW5MZWZ0
Qm90dG9tKSk7CiAgICAgICAgIH0KICAgICAgICAgZ3N0X3RhZ19saXN0X3VucmVmKHRhZ3MpOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcAppbmRleCA2NDk0ZDBlM2IxMTNmZjIyZmNkOTE2NTJhMmRlNDA3ZjU1
MGRhYzE3Li5kMDRkNTRmZDRiNjRiYTAzNWJkNDQzYmEyODI0OGJmYzFiMjhlMWU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBA
IC0xNTMsNyArMTUzLDYgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciogcGwKICAgICAsIG1fZHJhd1Rp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnJlcGFpbnQpCiAjZW5kaWYKICAgICAsIG1fdXNpbmdGYWxsYmFja1ZpZGVvU2luayhmYWxz
ZSkKLSAgICAsIG1fdmlkZW9Tb3VyY2VSb3RhdGlvbihOb1ZpZGVvU291cmNlUm90YXRpb24pCiAj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgICwgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25G
bGFnKDApCiAjZW5kaWYKQEAgLTI5Myw3ICsyOTIsNyBAQCBGbG9hdFNpemUgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0dXJhbFNpemUoKSBjb25zdAogI2lmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKICAgICAvLyBXaGVuIHVzaW5nIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLCBp
ZiB0aGUgdmlkZW8gaXMgdGFnZ2VkIGFzIHJvdGF0ZWQgOTAgb3IgMjcwIGRlZ3JlZXMsIHN3YXAg
d2lkdGggYW5kIGhlaWdodC4KICAgICBpZiAobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVy
UmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChtX3BsYXllcikpIHsKLSAgICAgICAgaWYgKG1fdmlk
ZW9Tb3VyY2VSb3RhdGlvbiA9PSBWaWRlb1NvdXJjZVJvdGF0aW9uOTAgfHwgbV92aWRlb1NvdXJj
ZVJvdGF0aW9uID09IFZpZGVvU291cmNlUm90YXRpb24yNzApCisgICAgICAgIGlmIChtX3ZpZGVv
U291cmNlT3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgICAgIG9yaWdp
bmFsU2l6ZSA9IG9yaWdpbmFsU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwogICAgIH0KICNlbmRpZgpA
QCAtNTk3LDI5ICs1OTYsMzUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
OjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiB7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQot
ICAgIHJldHVybjsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKLSAgICBpZiAoY2xpZW50KCkpCi0gICAgICAgIHJldHVybjsKLSNlbmRp
ZgotCiAgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIW1fcGxheWVyLT52aXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAorI2lm
IFVTRShHU1RSRUFNRVJfR0wpCisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCk7CisgICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbi51c2Vz
V2lkdGhBc0hlaWdodCgpKQorICAgICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwg
bV92aWRlb1NpemUsIHJlY3QsIHJlY3QudHJhbnNwb3NlZFJlY3QoKSwgQ29tcG9zaXRlU291cmNl
T3ZlciwgQmxlbmRNb2RlTm9ybWFsLCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOworICAgIGVs
c2UKKyAgICAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIG1fdmlkZW9TaXplLCBy
ZWN0LCByZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIG1fdmlkZW9T
b3VyY2VPcmllbnRhdGlvbik7CisgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBXVEY6OkdNdXRl
eExvY2tlcjxHTXV0ZXg+IGxvY2sobV9zYW1wbGVNdXRleCk7CiAgICAgaWYgKCFHU1RfSVNfU0FN
UExFKG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgSW1hZ2VQYWludGlu
Z09wdGlvbnMgcGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZUNvcHkpOworICAgIGlmIChtX3BsYXll
ci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKG1fcGxheWVy
KSkKKyAgICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJ
bWFnZU9yaWVudGF0aW9uRW51bShtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOworCiAgICAgUmVm
UHRyPEltYWdlR1N0cmVhbWVyPiBnc3RJbWFnZSA9IEltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFn
ZShtX3NhbXBsZS5nZXQoKSk7CiAgICAgaWYgKCFnc3RJbWFnZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKEltYWdlKiBpbWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFn
ZS0+aW1hZ2UoKS5nZXQoKSkpCi0gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgcmVj
dCwgZ3N0SW1hZ2UtPnJlY3QoKSwgQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGNvbnRleHQuZHJh
d0ltYWdlKCppbWFnZSwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgcGFpbnRpbmdPcHRpb25zKTsK
IH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKQEAgLTcwMiwzMSArNzA3LDMyIEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogICAgIHVuc2ln
bmVkIHRleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4odmlkZW9GcmFtZS5k
YXRhWzBdKTsKICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRI
KCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwogICAgIGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0
dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgdGV4dHVyZUlELCBzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShzdXJm
YWNlKTsKICAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAoJnZpZGVvRnJhbWUpOwogCiAgICAgcmV0
dXJuIGFkb3B0UmVmKHN1cmZhY2UpOwogfQogI2VuZGlmCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6c2V0VmlkZW9Tb3VyY2VSb3RhdGlvbihWaWRlb1NvdXJjZVJvdGF0
aW9uIHJvdGF0aW9uKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRW
aWRlb1NvdXJjZU9yaWVudGF0aW9uKGNvbnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9u
KQogewotICAgIGlmIChtX3ZpZGVvU291cmNlUm90YXRpb24gPT0gcm90YXRpb24pCisgICAgaWYg
KG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbiA9PSBvcmllbnRhdGlvbikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV92aWRlb1NvdXJjZVJvdGF0aW9uID0gcm90YXRpb247CisgICAgbV92aWRlb1Nv
dXJjZU9yaWVudGF0aW9uID0gb3JpZW50YXRpb247CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCi0gICAgc3dpdGNoIChtX3ZpZGVvU291cmNlUm90YXRpb24pIHsKLSAgICBjYXNlIE5vVmlk
ZW9Tb3VyY2VSb3RhdGlvbjoKKyAgICBzd2l0Y2ggKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbikg
eworICAgIGNhc2UgRGVmYXVsdEltYWdlT3JpZW50YXRpb246CiAgICAgICAgIG1fdGV4dHVyZU1h
cHBlclJvdGF0aW9uRmxhZyA9IDA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlkZW9Tb3Vy
Y2VSb3RhdGlvbjkwOgorICAgIGNhc2UgT3JpZ2luUmlnaHRUb3A6CiAgICAgICAgIG1fdGV4dHVy
ZU1hcHBlclJvdGF0aW9uRmxhZyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90YXRlVGV4dHVy
ZTkwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFZpZGVvU291cmNlUm90YXRpb24xODA6Cisg
ICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdodDoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyUm90YXRp
b25GbGFnID0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlMTgwOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFZpZGVvU291cmNlUm90YXRpb24yNzA6CisgICAgY2FzZSBPcmln
aW5MZWZ0Qm90dG9tOgogICAgICAgICBtX3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcgPSBUZXh0
dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmUyNzA7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuaAppbmRleCBkNmJkOTA0YmMxNDY0ZDhjYzU3ZDA5MDcyY2M3MTc1Zjk0ZTljYTRlLi5m
ZjJjOTFjYWZkZjZlY2UwNmYyZDU3ZDBiNzNhYzA5ZTQ3YTI2ODhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAgLTYwLDEzICs2MCw2
IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlCiB7CiAKIHB1YmxpYzoKLSAgICBlbnVtIFZpZGVvU291cmNl
Um90YXRpb24gewotICAgICAgICBOb1ZpZGVvU291cmNlUm90YXRpb24sCi0gICAgICAgIFZpZGVv
U291cmNlUm90YXRpb245MCwKLSAgICAgICAgVmlkZW9Tb3VyY2VSb3RhdGlvbjE4MCwKLSAgICAg
ICAgVmlkZW9Tb3VyY2VSb3RhdGlvbjI3MAotICAgIH07Ci0KICAgICB2aXJ0dWFsIH5NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCk7CiAKICAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUo
KSBjb25zdCBvdmVycmlkZTsKQEAgLTEyNyw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgTmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAK
LSAgICB2b2lkIHNldFZpZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3RhdGlvbik7Cisg
ICAgdm9pZCBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKGNvbnN0IEltYWdlT3JpZW50YXRpb24m
KTsKIAogcHJvdGVjdGVkOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoTWVk
aWFQbGF5ZXIqKTsKQEAgLTIwNyw3ICsyMDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgTG9jayBtX2Ry
YXdNdXRleDsKICNlbmRpZgogCi0gICAgVmlkZW9Tb3VyY2VSb3RhdGlvbiBtX3ZpZGVvU291cmNl
Um90YXRpb247CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX3ZpZGVvU291cmNlT3JpZW50YXRpb247
CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3Mg
bV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnOwogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDJkODU5Yzg1OGZi
Njk1ODk0ZmM4MzkxNTQ5NmIyZDMwNWU5ZWJkMC4uNTNhODBlNzQxNDdhNTNjNTA5NzJkZTRlMzlj
ODc1OTRmZmVkNjY4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA3LTA0ICBNaWd1ZWwg
R29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gUGFpbnRpbmcgYSB2
aWRlbyBpbnRvIGEgY2FudmFzIGRvZXNuJ3Qgd29yayB3aGVuIGFjY2VsZXJhdGVkIGNvbXBvc2l0
aW5nIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1OTQwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogbWVkaWEvdmlkZW8tY2FudmFzLWNyZWF0ZVBhdHRlcm4uaHRtbDoKKyAgICAgICAg
SW5jcmVhc2VkIHRoZSB0b2xlcmFuY2UgZm9yIHRoZSBjb21wYXJpc29uIHRvIDYsIGFzIHRoZSB2
aWRlbyBkZWNvZGVyIHVzZWQgaW4gR1N0cmVhbWVyCisgICAgICAgIHByb2R1Y2VzIHNsaWdodGx5
IGRpZmZlcmVudCBwaXhlbCB2YWx1ZXMuCisKIDIwMTYtMDctMDEgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gTWFjcm9Bc3NlbWJsZXJYODY6
OmJyYW5jaDggc2hvdWxkIGFjY2VwdCB1bnNpZ25lZCA4Yml0IHZhbHVlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1jYW52YXMtY3JlYXRlUGF0dGVybi5odG1sIGIvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tY2FudmFzLWNyZWF0ZVBhdHRlcm4uaHRtbAppbmRleCA5OWI2ZGNi
ODU4MGIyNWY5Yzk4Yzg1YmEyMzM4ZTY2YTExODJkYTYyLi4yOWIyOGY4NWRlZjc0ZThlZmFiZmVh
NmQwNDM3MGIzOTRkMTY5NDU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1j
YW52YXMtY3JlYXRlUGF0dGVybi5odG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNh
bnZhcy1jcmVhdGVQYXR0ZXJuLmh0bWwKQEAgLTUyLDcgKzUyLDcgQEAKICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzZXMnKS5hcHBlbmRDaGlsZChjYW52YXMp
OwogCiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRSZXN1bHRzLmZvckVhY2goZnVuY3Rpb24oZWxl
bWVudCkgewotICAgICAgICAgICAgICAgICAgICBjaGVja0NvbG9yQXRMb2NhdGlvbihjdHgsIGVs
ZW1lbnRbMF0sIGVsZW1lbnRbMV0sIGVsZW1lbnRbMl0sIGVsZW1lbnRbM10sIGVsZW1lbnRbNF0s
IDIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0NvbG9yQXRMb2NhdGlvbihjdHgsIGVsZW1l
bnRbMF0sIGVsZW1lbnRbMV0sIGVsZW1lbnRbMl0sIGVsZW1lbnRbM10sIGVsZW1lbnRbNF0sIDYp
OwogICAgICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQg
dGhlIHRlc3Qgc2Vla3MgYSBjb3VwbGUgb2YgdGltZXMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282714</attachid>
            <date>2016-07-04 06:38:24 -0700</date>
            <delta_ts>2016-07-05 07:54:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159405-20160704153755.patch</filename>
            <type>text/plain</type>
            <size>10354</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFmZGU1OTgyYmMyNTg2
ZTI1ZThhMjQ1ZWJmZmE5MGNlNDQxMzRjOC4uODg3NWYwZjhkYWM4OTE2ODg1ZTA1MDJjYWJlOTRl
YTVmODBhZDllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE2LTA3LTA0ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gUGFpbnRpbmcg
YSB2aWRlbyBpbnRvIGEgY2FudmFzIGRvZXNuJ3Qgd29yayB3aGVuIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTQwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCB2aWRlbyBmcmFtZSBwYWludGluZyB0byB0aGUgY2FudmFzIHdo
ZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgZW5hYmxlZC4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0ZW50IHRlc3RzLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd0ltYWdlKToKKyAgICAgICAgRGVsZWdhdGUgdGhlIHBhaW50aW5nIGludG8gdGhl
IHBsYXllciwgd2hvIGtub3dzIHRoZSB2aWRlbyBvcmllbnRhdGlvbiB0byBhcHBseS4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
aGFuZGxlTWVzc2FnZSk6CisgICAgICAgIFJlcGxhY2UgY3VzdG9tIGVudW1lcmF0aW9uIGZvciB0
aGUgdmlkZW8gcm90YXRpb24gd2l0aCB0aGUgSW1hZ2VPcmllbnRhdGlvbiBjbGFzcy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpuYXR1cmFsU2l6ZSk6CisgICAgICAgIFJlcGxhY2UgdGhlIG9yaWVudGF0aW9uIHZh
bHVlIGNvbXBhcmlzb24gd2l0aCBJbWFnZU9yaWVudGF0aW9uOjp1c2VzV2lkdGhBc0hlaWdodC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZp
ZGVvU291cmNlT3JpZW50YXRpb24pOgorICAgICAgICBSZXBsYWNlIGN1c3RvbSBlbnVtZXJhdGlv
biBmb3IgdGhlIHZpZGVvIHJvdGF0aW9uIHdpdGggdGhlIEltYWdlT3JpZW50YXRpb24gY2xhc3Mu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIG9y
aWVudGF0aW9uIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAg
IE1hcmsgdGhlIGNhaXJvIHN1cmZhY2UgYXMgZGlydHkgc28gY2Fpcm8ga25vd3MgdGhhdCBpdCBo
YXMgY29udGVudHMgYWxyZWFkeS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAgICAgUGVyZm9ybSB0aGUgZnJhbWUgcGFpbnRp
bmcgdGFraW5nIGludG8gYWNjb3VudCB0aGUgdmlkZW8gb3JpZW50YXRpb24gdGFnLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmg6CisgICAgICAgIFJlbW92ZSBjdXN0b20gZW51bWVyYXRpb24gZm9yIHRoZSB2aWRl
byBvcmllbnRhdGlvbi4KKwogMjAxNi0wNy0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2ltYWdlLWRlY29kZXJzXSBNYWtlIEltYWdlRGVj
b2Rlcjo6c2l6ZSgpIGxhemlseSBkZWNvZGUgdGhlIGltYWdlIGlmIG5lZWRlZCB0byByZXR1cm4g
YSB2YWxpZCBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBjYTM2ZGIxMTdkNzM3YzM1NzMyMTZmMmNm
MmI1ZGYxN2Y5MjU1Yjg0Li41OWM2NTZmNTNjNTFjNTc1NmU2MjgxNTczMmUxZTA2Y2EyYzFiYTdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAKQEAgLTE1NDYsNyArMTU0Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlkZW8sIGNvbnN0IEZs
b2F0UmVjCiAKICAgICBjaGVja09yaWdpbigmdmlkZW8pOwogCi0jaWYgVVNFKENHKSB8fCAoRU5B
QkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJiYgVVNFKEdTVFJFQU1FUl9HTCkgJiYgVVNFKENB
SVJPKSkKKyNpZiBVU0UoQ0cpCiAgICAgaWYgKE5hdGl2ZUltYWdlUHRyIGltYWdlID0gdmlkZW8u
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CiAgICAgICAgIGMtPmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlkZW8udmlkZW9IZWlnaHQo
KSksIGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRz
dFJlY3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAppbmRleCBhMDZhZmE1YTIxYjllZTRiNGQxZTE5ZWEwMmExMzIwMjU0MzA3NzA4Li40ZjVlODYw
NmM4ZjRhYjQ1MDNiMDZiZGMwZTMyOTM4MGY5YzAyMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTAyOCwxMSArMTAyOCwxMSBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdl
KiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV90YWcobWVzc2FnZSwgJnRhZ3Mp
OwogICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NUX1RBR19JTUFH
RV9PUklFTlRBVElPTiwgJnRhZy5vdXRQdHIoKSkpIHsKICAgICAgICAgICAgIGlmICghZ19zdHJj
bXAwKHRhZy5nZXQoKSwgInJvdGF0ZS05MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291
cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3RhdGlvbjkwKTsKKyAgICAgICAgICAgICAgICBzZXRW
aWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luUmlnaHRUb3ApKTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRlLTE4MCIp
KQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3Rh
dGlvbjE4MCk7CisgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihJbWFn
ZU9yaWVudGF0aW9uKE9yaWdpbkJvdHRvbVJpZ2h0KSk7CiAgICAgICAgICAgICBlbHNlIGlmICgh
Z19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS0yNzAiKSkKLSAgICAgICAgICAgICAgICBzZXRW
aWRlb1NvdXJjZVJvdGF0aW9uKFZpZGVvU291cmNlUm90YXRpb24yNzApOworICAgICAgICAgICAg
ICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmlnaW5MZWZ0
Qm90dG9tKSk7CiAgICAgICAgIH0KICAgICAgICAgZ3N0X3RhZ19saXN0X3VucmVmKHRhZ3MpOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcAppbmRleCA2NDk0ZDBlM2IxMTNmZjIyZmNkOTE2NTJhMmRlNDA3ZjU1
MGRhYzE3Li5kMDRkNTRmZDRiNjRiYTAzNWJkNDQzYmEyODI0OGJmYzFiMjhlMWU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBA
IC0xNTMsNyArMTUzLDYgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciogcGwKICAgICAsIG1fZHJhd1Rp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnJlcGFpbnQpCiAjZW5kaWYKICAgICAsIG1fdXNpbmdGYWxsYmFja1ZpZGVvU2luayhmYWxz
ZSkKLSAgICAsIG1fdmlkZW9Tb3VyY2VSb3RhdGlvbihOb1ZpZGVvU291cmNlUm90YXRpb24pCiAj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgICwgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25G
bGFnKDApCiAjZW5kaWYKQEAgLTI5Myw3ICsyOTIsNyBAQCBGbG9hdFNpemUgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0dXJhbFNpemUoKSBjb25zdAogI2lmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKICAgICAvLyBXaGVuIHVzaW5nIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLCBp
ZiB0aGUgdmlkZW8gaXMgdGFnZ2VkIGFzIHJvdGF0ZWQgOTAgb3IgMjcwIGRlZ3JlZXMsIHN3YXAg
d2lkdGggYW5kIGhlaWdodC4KICAgICBpZiAobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlhUGxheWVy
UmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChtX3BsYXllcikpIHsKLSAgICAgICAgaWYgKG1fdmlk
ZW9Tb3VyY2VSb3RhdGlvbiA9PSBWaWRlb1NvdXJjZVJvdGF0aW9uOTAgfHwgbV92aWRlb1NvdXJj
ZVJvdGF0aW9uID09IFZpZGVvU291cmNlUm90YXRpb24yNzApCisgICAgICAgIGlmIChtX3ZpZGVv
U291cmNlT3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgICAgIG9yaWdp
bmFsU2l6ZSA9IG9yaWdpbmFsU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwogICAgIH0KICNlbmRpZgpA
QCAtNTk3LDI5ICs1OTYsMzUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
OjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiB7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQot
ICAgIHJldHVybjsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKLSAgICBpZiAoY2xpZW50KCkpCi0gICAgICAgIHJldHVybjsKLSNlbmRp
ZgotCiAgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIW1fcGxheWVyLT52aXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAorI2lm
IFVTRShHU1RSRUFNRVJfR0wpCisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCk7CisgICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbi51c2Vz
V2lkdGhBc0hlaWdodCgpKQorICAgICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwg
bV92aWRlb1NpemUsIHJlY3QsIHJlY3QudHJhbnNwb3NlZFJlY3QoKSwgQ29tcG9zaXRlU291cmNl
T3ZlciwgQmxlbmRNb2RlTm9ybWFsLCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOworICAgIGVs
c2UKKyAgICAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIG1fdmlkZW9TaXplLCBy
ZWN0LCByZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIG1fdmlkZW9T
b3VyY2VPcmllbnRhdGlvbik7CisgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBXVEY6OkdNdXRl
eExvY2tlcjxHTXV0ZXg+IGxvY2sobV9zYW1wbGVNdXRleCk7CiAgICAgaWYgKCFHU1RfSVNfU0FN
UExFKG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgSW1hZ2VQYWludGlu
Z09wdGlvbnMgcGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZUNvcHkpOworICAgIGlmIChtX3BsYXll
ci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKG1fcGxheWVy
KSkKKyAgICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJ
bWFnZU9yaWVudGF0aW9uRW51bShtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOworCiAgICAgUmVm
UHRyPEltYWdlR1N0cmVhbWVyPiBnc3RJbWFnZSA9IEltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFn
ZShtX3NhbXBsZS5nZXQoKSk7CiAgICAgaWYgKCFnc3RJbWFnZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKEltYWdlKiBpbWFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFn
ZS0+aW1hZ2UoKS5nZXQoKSkpCi0gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgcmVj
dCwgZ3N0SW1hZ2UtPnJlY3QoKSwgQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGNvbnRleHQuZHJh
d0ltYWdlKCppbWFnZSwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgcGFpbnRpbmdPcHRpb25zKTsK
IH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKQEAgLTcwMiwzMSArNzA3LDMyIEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogICAgIHVuc2ln
bmVkIHRleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4odmlkZW9GcmFtZS5k
YXRhWzBdKTsKICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRI
KCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwogICAgIGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0
dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgdGV4dHVyZUlELCBzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShzdXJm
YWNlKTsKICAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAoJnZpZGVvRnJhbWUpOwogCiAgICAgcmV0
dXJuIGFkb3B0UmVmKHN1cmZhY2UpOwogfQogI2VuZGlmCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6c2V0VmlkZW9Tb3VyY2VSb3RhdGlvbihWaWRlb1NvdXJjZVJvdGF0
aW9uIHJvdGF0aW9uKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRW
aWRlb1NvdXJjZU9yaWVudGF0aW9uKGNvbnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9u
KQogewotICAgIGlmIChtX3ZpZGVvU291cmNlUm90YXRpb24gPT0gcm90YXRpb24pCisgICAgaWYg
KG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbiA9PSBvcmllbnRhdGlvbikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV92aWRlb1NvdXJjZVJvdGF0aW9uID0gcm90YXRpb247CisgICAgbV92aWRlb1Nv
dXJjZU9yaWVudGF0aW9uID0gb3JpZW50YXRpb247CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCi0gICAgc3dpdGNoIChtX3ZpZGVvU291cmNlUm90YXRpb24pIHsKLSAgICBjYXNlIE5vVmlk
ZW9Tb3VyY2VSb3RhdGlvbjoKKyAgICBzd2l0Y2ggKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbikg
eworICAgIGNhc2UgRGVmYXVsdEltYWdlT3JpZW50YXRpb246CiAgICAgICAgIG1fdGV4dHVyZU1h
cHBlclJvdGF0aW9uRmxhZyA9IDA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlkZW9Tb3Vy
Y2VSb3RhdGlvbjkwOgorICAgIGNhc2UgT3JpZ2luUmlnaHRUb3A6CiAgICAgICAgIG1fdGV4dHVy
ZU1hcHBlclJvdGF0aW9uRmxhZyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90YXRlVGV4dHVy
ZTkwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFZpZGVvU291cmNlUm90YXRpb24xODA6Cisg
ICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdodDoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyUm90YXRp
b25GbGFnID0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlMTgwOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFZpZGVvU291cmNlUm90YXRpb24yNzA6CisgICAgY2FzZSBPcmln
aW5MZWZ0Qm90dG9tOgogICAgICAgICBtX3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcgPSBUZXh0
dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmUyNzA7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuaAppbmRleCBkNmJkOTA0YmMxNDY0ZDhjYzU3ZDA5MDcyY2M3MTc1Zjk0ZTljYTRlLi5m
ZjJjOTFjYWZkZjZlY2UwNmYyZDU3ZDBiNzNhYzA5ZTQ3YTI2ODhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAgLTYwLDEzICs2MCw2
IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlCiB7CiAKIHB1YmxpYzoKLSAgICBlbnVtIFZpZGVvU291cmNl
Um90YXRpb24gewotICAgICAgICBOb1ZpZGVvU291cmNlUm90YXRpb24sCi0gICAgICAgIFZpZGVv
U291cmNlUm90YXRpb245MCwKLSAgICAgICAgVmlkZW9Tb3VyY2VSb3RhdGlvbjE4MCwKLSAgICAg
ICAgVmlkZW9Tb3VyY2VSb3RhdGlvbjI3MAotICAgIH07Ci0KICAgICB2aXJ0dWFsIH5NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCk7CiAKICAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUo
KSBjb25zdCBvdmVycmlkZTsKQEAgLTEyNyw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgTmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAK
LSAgICB2b2lkIHNldFZpZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3RhdGlvbik7Cisg
ICAgdm9pZCBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKGNvbnN0IEltYWdlT3JpZW50YXRpb24m
KTsKIAogcHJvdGVjdGVkOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoTWVk
aWFQbGF5ZXIqKTsKQEAgLTIwNyw3ICsyMDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgTG9jayBtX2Ry
YXdNdXRleDsKICNlbmRpZgogCi0gICAgVmlkZW9Tb3VyY2VSb3RhdGlvbiBtX3ZpZGVvU291cmNl
Um90YXRpb247CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX3ZpZGVvU291cmNlT3JpZW50YXRpb247
CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3Mg
bV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282786</attachid>
            <date>2016-07-05 07:54:20 -0700</date>
            <delta_ts>2016-07-05 08:06:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159405-20160705165349.patch</filename>
            <type>text/plain</type>
            <size>11464</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhkYzM0ZmQzMWM4NzQy
NTcwNTM2NDA3ZDBjODdhOWJmNDNkMmVkYS4uYTZkNzQ1MDM2MTQ0Zjc0ZmZlNGU5OTVjMmFjNzgz
MDEwMDllMWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA3LTA1ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gUGFpbnRpbmcg
YSB2aWRlbyBpbnRvIGEgY2FudmFzIGRvZXNuJ3Qgd29yayB3aGVuIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTQwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCB2aWRlbyBmcmFtZSBwYWludGluZyB0byB0aGUgY2FudmFzIHdo
ZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgZW5hYmxlZC4KKworICAgICAgICBBbHJlYWR5
IGNvdmVyZWQgYnkgZXhpc3RlbnQgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6CisgICAg
ICAgIFJlcGxhY2UgY3VzdG9tIGVudW1lcmF0aW9uIGZvciB0aGUgdmlkZW8gcm90YXRpb24gd2l0
aCB0aGUgSW1hZ2VPcmllbnRhdGlvbiBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6
CisgICAgICAgIFJlcGxhY2UgdGhlIG9yaWVudGF0aW9uIHZhbHVlIGNvbXBhcmlzb24gd2l0aCBJ
bWFnZU9yaWVudGF0aW9uOjp1c2VzV2lkdGhBc0hlaWdodCgpLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQpOgorICAgICAgICBQZXJmb3Jt
IHRoZSBmcmFtZSBwYWludGluZyB0YWtpbmcgaW50byBhY2NvdW50IHRoZSB2aWRlbyBvcmllbnRh
dGlvbiB0YWcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUm90YXRlIHRoZSBuYXRp
dmUgaW1hZ2UgYmVmb3JlIHJldHVybmluZyBpdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24pOgorICAg
ICAgICBSZXBsYWNlIGN1c3RvbSBlbnVtZXJhdGlvbiBmb3IgdGhlIHZpZGVvIHJvdGF0aW9uIHdp
dGggdGhlIEltYWdlT3JpZW50YXRpb24gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
KTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIG9yaWVudGF0aW9uIGluaXRpYWxpemF0aW9uLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmg6CisgICAgICAgIFJlbW92ZSBjdXN0b20gZW51bWVyYXRpb24gZm9yIHRo
ZSB2aWRlbyBvcmllbnRhdGlvbi4KKwogMjAxNi0wNy0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENyZWRlbnRpYWxSZXF1ZXN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBhMDZhZmE1YTIxYjllZTRiNGQxZTE5ZWEwMmExMzIwMjU0MzA3NzA4Li40
ZjVlODYwNmM4ZjRhYjQ1MDNiMDZiZGMwZTMyOTM4MGY5YzAyMGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTAyOCwxMSArMTAyOCwx
MSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RN
ZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV90YWcobWVzc2FnZSwg
JnRhZ3MpOwogICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NUX1RB
R19JTUFHRV9PUklFTlRBVElPTiwgJnRhZy5vdXRQdHIoKSkpIHsKICAgICAgICAgICAgIGlmICgh
Z19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS05MCIpKQotICAgICAgICAgICAgICAgIHNldFZp
ZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3RhdGlvbjkwKTsKKyAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luUmlnaHRU
b3ApKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRl
LTE4MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3Vy
Y2VSb3RhdGlvbjE4MCk7CisgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlv
bihJbWFnZU9yaWVudGF0aW9uKE9yaWdpbkJvdHRvbVJpZ2h0KSk7CiAgICAgICAgICAgICBlbHNl
IGlmICghZ19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS0yNzAiKSkKLSAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZVJvdGF0aW9uKFZpZGVvU291cmNlUm90YXRpb24yNzApOworICAgICAg
ICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmln
aW5MZWZ0Qm90dG9tKSk7CiAgICAgICAgIH0KICAgICAgICAgZ3N0X3RhZ19saXN0X3VucmVmKHRh
Z3MpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA2NDk0ZDBlM2IxMTNmZjIyZmNkOTE2NTJhMmRl
NDA3ZjU1MGRhYzE3Li5lOTM4NTk5ZTYxMDY2NGVhZmM0NGFmZTE1ZmU0MDQxMjA3NTFhNmFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCkBAIC0xNTMsNyArMTUzLDYgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciogcGwKICAgICAsIG1f
ZHJhd1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OnJlcGFpbnQpCiAjZW5kaWYKICAgICAsIG1fdXNpbmdGYWxsYmFja1ZpZGVvU2lu
ayhmYWxzZSkKLSAgICAsIG1fdmlkZW9Tb3VyY2VSb3RhdGlvbihOb1ZpZGVvU291cmNlUm90YXRp
b24pCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgICwgbV90ZXh0dXJlTWFwcGVyUm90
YXRpb25GbGFnKDApCiAjZW5kaWYKQEAgLTI5Myw3ICsyOTIsNyBAQCBGbG9hdFNpemUgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0dXJhbFNpemUoKSBjb25zdAogI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKICAgICAvLyBXaGVuIHVzaW5nIGFjY2VsZXJhdGVkIGNvbXBvc2l0
aW5nLCBpZiB0aGUgdmlkZW8gaXMgdGFnZ2VkIGFzIHJvdGF0ZWQgOTAgb3IgMjcwIGRlZ3JlZXMs
IHN3YXAgd2lkdGggYW5kIGhlaWdodC4KICAgICBpZiAobV9wbGF5ZXItPmNsaWVudCgpLm1lZGlh
UGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChtX3BsYXllcikpIHsKLSAgICAgICAgaWYg
KG1fdmlkZW9Tb3VyY2VSb3RhdGlvbiA9PSBWaWRlb1NvdXJjZVJvdGF0aW9uOTAgfHwgbV92aWRl
b1NvdXJjZVJvdGF0aW9uID09IFZpZGVvU291cmNlUm90YXRpb24yNzApCisgICAgICAgIGlmICht
X3ZpZGVvU291cmNlT3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgICAg
IG9yaWdpbmFsU2l6ZSA9IG9yaWdpbmFsU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwogICAgIH0KICNl
bmRpZgpAQCAtNTk3LDEzICs1OTYsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFE
RUQpCi0gICAgcmV0dXJuOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQotICAgIGlmIChjbGllbnQoKSkKLSAgICAgICAgcmV0dXJuOwot
I2VuZGlmCi0KICAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtNjE0LDEyICs2MDYsMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2EKICAg
ICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWludGluZ09wdGlvbnMoQ29tcG9zaXRlQ29weSk7
CisgICAgaWYgKG1fcGxheWVyLT5jbGllbnQoKS5tZWRpYVBsYXllclJlbmRlcmluZ0NhbkJlQWNj
ZWxlcmF0ZWQobV9wbGF5ZXIpKQorICAgICAgICBwYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlv
bkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKG1fdmlkZW9Tb3VyY2VPcmllbnRh
dGlvbik7CisKICAgICBSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+IGdzdEltYWdlID0gSW1hZ2VHU3Ry
ZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdlKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoSW1hZ2UqIGltYWdlID0gcmVpbnRlcnByZXRfY2Fz
dDxJbWFnZSo+KGdzdEltYWdlLT5pbWFnZSgpLmdldCgpKSkKLSAgICAgICAgY29udGV4dC5kcmF3
SW1hZ2UoKmltYWdlLCByZWN0LCBnc3RJbWFnZS0+cmVjdCgpLCBDb21wb3NpdGVDb3B5KTsKKyAg
ICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCByZWN0LCBnc3RJbWFnZS0+cmVjdCgpLCBw
YWludGluZ09wdGlvbnMpOwogfQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQpAQCAtNjgzLDUwICs2NzksODYgQEAgTmF0aXZlSW1hZ2VQ
dHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSgpCiAKICAgICBXVEY6OkdNdXRleExvY2tlcjxHTXV0ZXg+IGxvY2sobV9zYW1wbGVNdXRl
eCk7CiAKKyAgICBHTENvbnRleHQqIGNvbnRleHQgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0
KCk7CisgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgY2Fpcm9fZGV2aWNl
X3QqIGRldmljZSA9IGNvbnRleHQtPmNhaXJvRGV2aWNlKCk7CisKKyAgICAvLyBUaHJlYWQtYXdh
cmVuZXNzIGlzIGEgaHVnZSBwZXJmb3JtYW5jZSBoaXQgb24gbm9uLUludGVsIGRyaXZlcnMuCisg
ICAgY2Fpcm9fZ2xfZGV2aWNlX3NldF90aHJlYWRfYXdhcmUoZGV2aWNlLCBGQUxTRSk7CisKICAg
ICBHc3RWaWRlb0luZm8gdmlkZW9JbmZvOwogICAgIGlmICghZ2V0U2FtcGxlVmlkZW9JbmZvKG1f
c2FtcGxlLmdldCgpLCB2aWRlb0luZm8pKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlKGRldmljZSwgQ0FJUk9f
Q09OVEVOVF9DT0xPUl9BTFBIQSwgMCwgMCkpOwogCiAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBn
c3Rfc2FtcGxlX2dldF9idWZmZXIobV9zYW1wbGUuZ2V0KCkpOwogICAgIEdzdFZpZGVvRnJhbWUg
dmlkZW9GcmFtZTsKICAgICBpZiAoIWdzdF92aWRlb19mcmFtZV9tYXAoJnZpZGVvRnJhbWUsICZ2
aWRlb0luZm8sIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8R3N0TWFwRmxhZ3M+KEdTVF9NQVBfUkVBRCB8
IEdTVF9NQVBfR0wpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihjYWlyb19nbF9zdXJmYWNlX2NyZWF0ZShkZXZpY2UsIENBSVJPX0NPTlRFTlRfQ09M
T1JfQUxQSEEsIDAsIDApKTsKIAotICAgIEdMQ29udGV4dCogY29udGV4dCA9IEdMQ29udGV4dDo6
c2hhcmluZ0NvbnRleHQoKTsKLSAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICBjYWlyb19kZXZpY2VfdCogZGV2aWNlID0gY29udGV4dC0+Y2Fpcm9EZXZpY2UoKTsKLQotICAg
IC8vIFRocmVhZC1hd2FyZW5lc3MgaXMgYSBodWdlIHBlcmZvcm1hbmNlIGhpdCBvbiBub24tSW50
ZWwgZHJpdmVycy4KLSAgICBjYWlyb19nbF9kZXZpY2Vfc2V0X3RocmVhZF9hd2FyZShkZXZpY2Us
IEZBTFNFKTsKIAogICAgIHVuc2lnbmVkIHRleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PHVu
c2lnbmVkKj4odmlkZW9GcmFtZS5kYXRhWzBdKTsKICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXpl
KEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQo
JnZpZGVvSW5mbykpOwogICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2dsX3N1
cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBI
QSwgdGV4dHVyZUlELCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIGNhaXJvX3N1
cmZhY2VfbWFya19kaXJ0eShzdXJmYWNlKTsKKworICAgIEludFNpemUgcm90YXRlZFNpemUgPSBt
X3ZpZGVvU291cmNlT3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNpemUudHJhbnNw
b3NlZFNpemUoKSA6IHNpemU7CisgICAgY2Fpcm9fc3VyZmFjZV90KiByb3RhdGVkU3VyZmFjZSA9
IGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBI
QSwgcm90YXRlZFNpemUud2lkdGgoKSwgcm90YXRlZFNpemUuaGVpZ2h0KCkpOworICAgIGNhaXJv
X3QqIGNyID0gY2Fpcm9fY3JlYXRlKHJvdGF0ZWRTdXJmYWNlKTsKKworICAgIGRvdWJsZSBwaSA9
IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisgICAgc3dpdGNoIChtX3ZpZGVvU291cmNlT3JpZW50
YXRpb24pIHsKKyAgICBjYXNlIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOgorICAgICAgICBicmVh
azsKKyAgICBjYXNlIE9yaWdpblJpZ2h0VG9wOiB7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShj
ciwgcm90YXRlZFNpemUud2lkdGgoKSAqIDAuNSwgcm90YXRlZFNpemUuaGVpZ2h0KCkgKiAwLjUp
OworICAgICAgICBjYWlyb19yb3RhdGUoY3IsIHBpIC8gMi4wKTsKKyAgICAgICAgY2Fpcm9fdHJh
bnNsYXRlKGNyLCAtcm90YXRlZFNpemUuaGVpZ2h0KCkgKiAwLjUsIC1yb3RhdGVkU2l6ZS53aWR0
aCgpICogMC41KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgT3JpZ2luQm90dG9t
UmlnaHQ6CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgcm90YXRlZFNpemUud2lkdGgoKSAq
IDAuNSwgcm90YXRlZFNpemUuaGVpZ2h0KCkgKiAwLjUpOworICAgICAgICBjYWlyb19yb3RhdGUo
Y3IsIHBpKTsKKyAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCAtcm90YXRlZFNpemUud2lkdGgo
KSAqIDAuNSwgLXJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgorICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IsIHJv
dGF0ZWRTaXplLndpZHRoKCkgKiAwLjUsIHJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41KTsKKyAg
ICAgICAgY2Fpcm9fcm90YXRlKGNyLCAzICogcGkgLyAyLjApOworICAgICAgICBjYWlyb190cmFu
c2xhdGUoY3IsIC1yb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSwgLXJvdGF0ZWRTaXplLndpZHRo
KCkgKiAwLjUpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhaXJvX3NldF9zb3Vy
Y2Vfc3VyZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNy
LCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGNhaXJvX3BhaW50KGNyKTsKKyAgICBjYWly
b19kZXN0cm95KGNyKTsKKyAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7CiAgICAg
Z3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsKIAotICAgIHJldHVybiBhZG9wdFJl
ZihzdXJmYWNlKTsKKyAgICByZXR1cm4gYWRvcHRSZWYocm90YXRlZFN1cmZhY2UpOwogfQogI2Vu
ZGlmCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0VmlkZW9Tb3Vy
Y2VSb3RhdGlvbihWaWRlb1NvdXJjZVJvdGF0aW9uIHJvdGF0aW9uKQordm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKGNvbnN0IElt
YWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9uKQogewotICAgIGlmIChtX3ZpZGVvU291cmNlUm90
YXRpb24gPT0gcm90YXRpb24pCisgICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbiA9PSBv
cmllbnRhdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb1NvdXJjZVJvdGF0aW9u
ID0gcm90YXRpb247CisgICAgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uID0gb3JpZW50YXRpb247
CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgc3dpdGNoIChtX3ZpZGVvU291cmNl
Um90YXRpb24pIHsKLSAgICBjYXNlIE5vVmlkZW9Tb3VyY2VSb3RhdGlvbjoKKyAgICBzd2l0Y2gg
KG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbikgeworICAgIGNhc2UgRGVmYXVsdEltYWdlT3JpZW50
YXRpb246CiAgICAgICAgIG1fdGV4dHVyZU1hcHBlclJvdGF0aW9uRmxhZyA9IDA7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgVmlkZW9Tb3VyY2VSb3RhdGlvbjkwOgorICAgIGNhc2UgT3JpZ2lu
UmlnaHRUb3A6CiAgICAgICAgIG1fdGV4dHVyZU1hcHBlclJvdGF0aW9uRmxhZyA9IFRleHR1cmVN
YXBwZXJHTDo6U2hvdWxkUm90YXRlVGV4dHVyZTkwOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFZpZGVvU291cmNlUm90YXRpb24xODA6CisgICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdodDoKICAg
ICAgICAgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnID0gVGV4dHVyZU1hcHBlckdMOjpTaG91
bGRSb3RhdGVUZXh0dXJlMTgwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFZpZGVvU291cmNl
Um90YXRpb24yNzA6CisgICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgogICAgICAgICBtX3RleHR1
cmVNYXBwZXJSb3RhdGlvbkZsYWcgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1
cmUyNzA7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCBkNmJkOTA0YmMxNDY0ZDhj
YzU3ZDA5MDcyY2M3MTc1Zjk0ZTljYTRlLi5mZjJjOTFjYWZkZjZlY2UwNmYyZDU3ZDBiNzNhYzA5
ZTQ3YTI2ODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmgKQEAgLTYwLDEzICs2MCw2IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiB7CiAKIHB1
YmxpYzoKLSAgICBlbnVtIFZpZGVvU291cmNlUm90YXRpb24gewotICAgICAgICBOb1ZpZGVvU291
cmNlUm90YXRpb24sCi0gICAgICAgIFZpZGVvU291cmNlUm90YXRpb245MCwKLSAgICAgICAgVmlk
ZW9Tb3VyY2VSb3RhdGlvbjE4MCwKLSAgICAgICAgVmlkZW9Tb3VyY2VSb3RhdGlvbjI3MAotICAg
IH07Ci0KICAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCk7CiAK
ICAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUoKSBjb25zdCBvdmVycmlkZTsKQEAgLTEyNyw3ICsx
MjAsNyBAQCBwdWJsaWM6CiAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIHNldFZpZGVvU291cmNlUm90YXRp
b24oVmlkZW9Tb3VyY2VSb3RhdGlvbik7CisgICAgdm9pZCBzZXRWaWRlb1NvdXJjZU9yaWVudGF0
aW9uKGNvbnN0IEltYWdlT3JpZW50YXRpb24mKTsKIAogcHJvdGVjdGVkOgogICAgIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoTWVkaWFQbGF5ZXIqKTsKQEAgLTIwNyw3ICsyMDAsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgTG9jayBtX2RyYXdNdXRleDsKICNlbmRpZgogCi0gICAgVmlkZW9T
b3VyY2VSb3RhdGlvbiBtX3ZpZGVvU291cmNlUm90YXRpb247CisgICAgSW1hZ2VPcmllbnRhdGlv
biBtX3ZpZGVvU291cmNlT3JpZW50YXRpb247CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQog
ICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnOwog
I2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282789</attachid>
            <date>2016-07-05 08:06:15 -0700</date>
            <delta_ts>2016-07-06 01:00:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159405-20160705170544.patch</filename>
            <type>text/plain</type>
            <size>11641</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhkYzM0ZmQzMWM4NzQy
NTcwNTM2NDA3ZDBjODdhOWJmNDNkMmVkYS4uYTZkNzQ1MDM2MTQ0Zjc0ZmZlNGU5OTVjMmFjNzgz
MDEwMDllMWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA3LTA1ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gUGFpbnRpbmcg
YSB2aWRlbyBpbnRvIGEgY2FudmFzIGRvZXNuJ3Qgd29yayB3aGVuIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTQwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCB2aWRlbyBmcmFtZSBwYWludGluZyB0byB0aGUgY2FudmFzIHdo
ZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgZW5hYmxlZC4KKworICAgICAgICBBbHJlYWR5
IGNvdmVyZWQgYnkgZXhpc3RlbnQgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6CisgICAg
ICAgIFJlcGxhY2UgY3VzdG9tIGVudW1lcmF0aW9uIGZvciB0aGUgdmlkZW8gcm90YXRpb24gd2l0
aCB0aGUgSW1hZ2VPcmllbnRhdGlvbiBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6
CisgICAgICAgIFJlcGxhY2UgdGhlIG9yaWVudGF0aW9uIHZhbHVlIGNvbXBhcmlzb24gd2l0aCBJ
bWFnZU9yaWVudGF0aW9uOjp1c2VzV2lkdGhBc0hlaWdodCgpLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQpOgorICAgICAgICBQZXJmb3Jt
IHRoZSBmcmFtZSBwYWludGluZyB0YWtpbmcgaW50byBhY2NvdW50IHRoZSB2aWRlbyBvcmllbnRh
dGlvbiB0YWcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUm90YXRlIHRoZSBuYXRp
dmUgaW1hZ2UgYmVmb3JlIHJldHVybmluZyBpdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24pOgorICAg
ICAgICBSZXBsYWNlIGN1c3RvbSBlbnVtZXJhdGlvbiBmb3IgdGhlIHZpZGVvIHJvdGF0aW9uIHdp
dGggdGhlIEltYWdlT3JpZW50YXRpb24gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
KTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIG9yaWVudGF0aW9uIGluaXRpYWxpemF0aW9uLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmg6CisgICAgICAgIFJlbW92ZSBjdXN0b20gZW51bWVyYXRpb24gZm9yIHRo
ZSB2aWRlbyBvcmllbnRhdGlvbi4KKwogMjAxNi0wNy0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENyZWRlbnRpYWxSZXF1ZXN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBhMDZhZmE1YTIxYjllZTRiNGQxZTE5ZWEwMmExMzIwMjU0MzA3NzA4Li40
ZjVlODYwNmM4ZjRhYjQ1MDNiMDZiZGMwZTMyOTM4MGY5YzAyMGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTAyOCwxMSArMTAyOCwx
MSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RN
ZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV90YWcobWVzc2FnZSwg
JnRhZ3MpOwogICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NUX1RB
R19JTUFHRV9PUklFTlRBVElPTiwgJnRhZy5vdXRQdHIoKSkpIHsKICAgICAgICAgICAgIGlmICgh
Z19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS05MCIpKQotICAgICAgICAgICAgICAgIHNldFZp
ZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3RhdGlvbjkwKTsKKyAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luUmlnaHRU
b3ApKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRl
LTE4MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3Vy
Y2VSb3RhdGlvbjE4MCk7CisgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlv
bihJbWFnZU9yaWVudGF0aW9uKE9yaWdpbkJvdHRvbVJpZ2h0KSk7CiAgICAgICAgICAgICBlbHNl
IGlmICghZ19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS0yNzAiKSkKLSAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZVJvdGF0aW9uKFZpZGVvU291cmNlUm90YXRpb24yNzApOworICAgICAg
ICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmln
aW5MZWZ0Qm90dG9tKSk7CiAgICAgICAgIH0KICAgICAgICAgZ3N0X3RhZ19saXN0X3VucmVmKHRh
Z3MpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA2NDk0ZDBlM2IxMTNmZjIyZmNkOTE2NTJhMmRl
NDA3ZjU1MGRhYzE3Li42YmY1YjBhMDQ2NDQ4OWVkZjkxZjJjMDcxOGI2NGMyNzQ3MDA3ZWJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dNdXRleExvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL3N0cmVhbXZv
bHVtZS5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KQEAgLTE1Myw3ICsx
NTQsNiBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKiBwbAogICAgICwgbV9kcmF3VGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cmVwYWlu
dCkKICNlbmRpZgogICAgICwgbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKGZhbHNlKQotICAgICwg
bV92aWRlb1NvdXJjZVJvdGF0aW9uKE5vVmlkZW9Tb3VyY2VSb3RhdGlvbikKICNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpCiAgICAgLCBtX3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcoMCkKICNl
bmRpZgpAQCAtMjkzLDcgKzI5Myw3IEBAIEZsb2F0U2l6ZSBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQogICAgIC8vIFdoZW4gdXNpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcsIGlmIHRoZSB2aWRl
byBpcyB0YWdnZWQgYXMgcm90YXRlZCA5MCBvciAyNzAgZGVncmVlcywgc3dhcCB3aWR0aCBhbmQg
aGVpZ2h0LgogICAgIGlmIChtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdD
YW5CZUFjY2VsZXJhdGVkKG1fcGxheWVyKSkgewotICAgICAgICBpZiAobV92aWRlb1NvdXJjZVJv
dGF0aW9uID09IFZpZGVvU291cmNlUm90YXRpb245MCB8fCBtX3ZpZGVvU291cmNlUm90YXRpb24g
PT0gVmlkZW9Tb3VyY2VSb3RhdGlvbjI3MCkKKyAgICAgICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKQogICAgICAgICAgICAgb3JpZ2luYWxTaXplID0g
b3JpZ2luYWxTaXplLnRyYW5zcG9zZWRTaXplKCk7CiAgICAgfQogI2VuZGlmCkBAIC01OTcsMTMg
KzU5Nyw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLSAgICByZXR1cm47
Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCi0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQogICAgIGlm
IChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MTQs
MTIgKzYwNywxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgIGlmICghR1NUX0lTX1NB
TVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zIHBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVDb3B5KTsKKyAgICBpZiAobV9wbGF5
ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChtX3BsYXll
cikpCisgICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0
SW1hZ2VPcmllbnRhdGlvbkVudW0obV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKKwogICAgIFJl
ZlB0cjxJbWFnZUdTdHJlYW1lcj4gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1h
Z2UobV9zYW1wbGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSByZWludGVycHJldF9jYXN0PEltYWdlKj4oZ3N0SW1h
Z2UtPmltYWdlKCkuZ2V0KCkpKQotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHJl
Y3QsIGdzdEltYWdlLT5yZWN0KCksIENvbXBvc2l0ZUNvcHkpOworICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZSgqaW1hZ2UsIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHBhaW50aW5nT3B0aW9ucyk7
CiB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCkBAIC02ODMsNTAgKzY4MCw4NSBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIAogICAgIFdU
Rjo6R011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtX3NhbXBsZU11dGV4KTsKIAorICAgIEdMQ29u
dGV4dCogY29udGV4dCA9IEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKTsKKyAgICBjb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBjYWlyb19kZXZpY2VfdCogZGV2aWNlID0gY29u
dGV4dC0+Y2Fpcm9EZXZpY2UoKTsKKworICAgIC8vIFRocmVhZC1hd2FyZW5lc3MgaXMgYSBodWdl
IHBlcmZvcm1hbmNlIGhpdCBvbiBub24tSW50ZWwgZHJpdmVycy4KKyAgICBjYWlyb19nbF9kZXZp
Y2Vfc2V0X3RocmVhZF9hd2FyZShkZXZpY2UsIEZBTFNFKTsKKwogICAgIEdzdFZpZGVvSW5mbyB2
aWRlb0luZm87CiAgICAgaWYgKCFnZXRTYW1wbGVWaWRlb0luZm8obV9zYW1wbGUuZ2V0KCksIHZp
ZGVvSW5mbykpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGUoZGV2aWNlLCBDQUlST19DT05URU5UX0NPTE9SX0FM
UEhBLCAwLCAwKSk7CiAKICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1
ZmZlcihtX3NhbXBsZS5nZXQoKSk7CiAgICAgR3N0VmlkZW9GcmFtZSB2aWRlb0ZyYW1lOwogICAg
IGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCgmdmlkZW9GcmFtZSwgJnZpZGVvSW5mbywgYnVmZmVy
LCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4oR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKGNhaXJvX2ds
X3N1cmZhY2VfY3JlYXRlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgMCwgMCkp
OwogCi0gICAgR0xDb250ZXh0KiBjb250ZXh0ID0gR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgp
OwotICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIGNhaXJvX2RldmljZV90
KiBkZXZpY2UgPSBjb250ZXh0LT5jYWlyb0RldmljZSgpOwotCi0gICAgLy8gVGhyZWFkLWF3YXJl
bmVzcyBpcyBhIGh1Z2UgcGVyZm9ybWFuY2UgaGl0IG9uIG5vbi1JbnRlbCBkcml2ZXJzLgotICAg
IGNhaXJvX2dsX2RldmljZV9zZXRfdGhyZWFkX2F3YXJlKGRldmljZSwgRkFMU0UpOwogCiAgICAg
dW5zaWduZWQgdGV4dHVyZUlEID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPih2aWRlb0Zy
YW1lLmRhdGFbMF0pOwogICAgIEludFNpemUgc2l6ZSA9IEludFNpemUoR1NUX1ZJREVPX0lORk9f
V0lEVEgoJnZpZGVvSW5mbyksIEdTVF9WSURFT19JTkZPX0hFSUdIVCgmdmlkZW9JbmZvKSk7CiAg
ICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9y
X3RleHR1cmUoZGV2aWNlLCBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBLCB0ZXh0dXJlSUQsIHNp
emUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5
KHN1cmZhY2UpOworCisgICAgSW50U2l6ZSByb3RhdGVkU2l6ZSA9IG1fdmlkZW9Tb3VyY2VPcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpIDogc2l6
ZTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHJvdGF0ZWRTdXJmYWNlID0gY2Fpcm9fZ2xfc3VyZmFj
ZV9jcmVhdGUoZGV2aWNlLCBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBLCByb3RhdGVkU2l6ZS53
aWR0aCgpLCByb3RhdGVkU2l6ZS5oZWlnaHQoKSk7CisgICAgY2Fpcm9fdCogY3IgPSBjYWlyb19j
cmVhdGUocm90YXRlZFN1cmZhY2UpOworCisgICAgc3dpdGNoIChtX3ZpZGVvU291cmNlT3JpZW50
YXRpb24pIHsKKyAgICBjYXNlIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOgorICAgICAgICBicmVh
azsKKyAgICBjYXNlIE9yaWdpblJpZ2h0VG9wOiB7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShj
ciwgcm90YXRlZFNpemUud2lkdGgoKSAqIDAuNSwgcm90YXRlZFNpemUuaGVpZ2h0KCkgKiAwLjUp
OworICAgICAgICBjYWlyb19yb3RhdGUoY3IsIE1fUEkgLyAyLjApOworICAgICAgICBjYWlyb190
cmFuc2xhdGUoY3IsIC1yb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSwgLXJvdGF0ZWRTaXplLndp
ZHRoKCkgKiAwLjUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBPcmlnaW5Cb3R0
b21SaWdodDoKKyAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCByb3RhdGVkU2l6ZS53aWR0aCgp
ICogMC41LCByb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSk7CisgICAgICAgIGNhaXJvX3JvdGF0
ZShjciwgTV9QSSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgLXJvdGF0ZWRTaXplLndp
ZHRoKCkgKiAwLjUsIC1yb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKKyAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNy
LCByb3RhdGVkU2l6ZS53aWR0aCgpICogMC41LCByb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSk7
CisgICAgICAgIGNhaXJvX3JvdGF0ZShjciwgMyAqIE1fUEkgLyAyLjApOworICAgICAgICBjYWly
b190cmFuc2xhdGUoY3IsIC1yb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSwgLXJvdGF0ZWRTaXpl
LndpZHRoKCkgKiAwLjUpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhaXJvX3Nl
dF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJh
dG9yKGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGNhaXJvX3BhaW50KGNyKTsKKyAg
ICBjYWlyb19kZXN0cm95KGNyKTsKKyAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7
CiAgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsKIAotICAgIHJldHVybiBh
ZG9wdFJlZihzdXJmYWNlKTsKKyAgICByZXR1cm4gYWRvcHRSZWYocm90YXRlZFN1cmZhY2UpOwog
fQogI2VuZGlmCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0Vmlk
ZW9Tb3VyY2VSb3RhdGlvbihWaWRlb1NvdXJjZVJvdGF0aW9uIHJvdGF0aW9uKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKGNv
bnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9uKQogewotICAgIGlmIChtX3ZpZGVvU291
cmNlUm90YXRpb24gPT0gcm90YXRpb24pCisgICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlv
biA9PSBvcmllbnRhdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb1NvdXJjZVJv
dGF0aW9uID0gcm90YXRpb247CisgICAgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uID0gb3JpZW50
YXRpb247CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgc3dpdGNoIChtX3ZpZGVv
U291cmNlUm90YXRpb24pIHsKLSAgICBjYXNlIE5vVmlkZW9Tb3VyY2VSb3RhdGlvbjoKKyAgICBz
d2l0Y2ggKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbikgeworICAgIGNhc2UgRGVmYXVsdEltYWdl
T3JpZW50YXRpb246CiAgICAgICAgIG1fdGV4dHVyZU1hcHBlclJvdGF0aW9uRmxhZyA9IDA7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlkZW9Tb3VyY2VSb3RhdGlvbjkwOgorICAgIGNhc2Ug
T3JpZ2luUmlnaHRUb3A6CiAgICAgICAgIG1fdGV4dHVyZU1hcHBlclJvdGF0aW9uRmxhZyA9IFRl
eHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90YXRlVGV4dHVyZTkwOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFZpZGVvU291cmNlUm90YXRpb24xODA6CisgICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdo
dDoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnID0gVGV4dHVyZU1hcHBlckdM
OjpTaG91bGRSb3RhdGVUZXh0dXJlMTgwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFZpZGVv
U291cmNlUm90YXRpb24yNzA6CisgICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgogICAgICAgICBt
X3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0
ZVRleHR1cmUyNzA7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCBkNmJkOTA0YmMx
NDY0ZDhjYzU3ZDA5MDcyY2M3MTc1Zjk0ZTljYTRlLi5mZjJjOTFjYWZkZjZlY2UwNmYyZDU3ZDBi
NzNhYzA5ZTQ3YTI2ODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmgKQEAgLTYwLDEzICs2MCw2IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiB7
CiAKIHB1YmxpYzoKLSAgICBlbnVtIFZpZGVvU291cmNlUm90YXRpb24gewotICAgICAgICBOb1Zp
ZGVvU291cmNlUm90YXRpb24sCi0gICAgICAgIFZpZGVvU291cmNlUm90YXRpb245MCwKLSAgICAg
ICAgVmlkZW9Tb3VyY2VSb3RhdGlvbjE4MCwKLSAgICAgICAgVmlkZW9Tb3VyY2VSb3RhdGlvbjI3
MAotICAgIH07Ci0KICAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
KCk7CiAKICAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUoKSBjb25zdCBvdmVycmlkZTsKQEAgLTEy
Nyw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIHNldFZpZGVvU291cmNl
Um90YXRpb24oVmlkZW9Tb3VyY2VSb3RhdGlvbik7CisgICAgdm9pZCBzZXRWaWRlb1NvdXJjZU9y
aWVudGF0aW9uKGNvbnN0IEltYWdlT3JpZW50YXRpb24mKTsKIAogcHJvdGVjdGVkOgogICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoTWVkaWFQbGF5ZXIqKTsKQEAgLTIwNyw3ICsy
MDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgTG9jayBtX2RyYXdNdXRleDsKICNlbmRpZgogCi0gICAg
VmlkZW9Tb3VyY2VSb3RhdGlvbiBtX3ZpZGVvU291cmNlUm90YXRpb247CisgICAgSW1hZ2VPcmll
bnRhdGlvbiBtX3ZpZGVvU291cmNlT3JpZW50YXRpb247CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25G
bGFnOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282858</attachid>
            <date>2016-07-06 01:01:03 -0700</date>
            <delta_ts>2016-07-06 03:02:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159405-20160706100031.patch</filename>
            <type>text/plain</type>
            <size>12068</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhkYzM0ZmQzMWM4NzQy
NTcwNTM2NDA3ZDBjODdhOWJmNDNkMmVkYS4uYTZkNzQ1MDM2MTQ0Zjc0ZmZlNGU5OTVjMmFjNzgz
MDEwMDllMWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA3LTA1ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gUGFpbnRpbmcg
YSB2aWRlbyBpbnRvIGEgY2FudmFzIGRvZXNuJ3Qgd29yayB3aGVuIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTQwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCB2aWRlbyBmcmFtZSBwYWludGluZyB0byB0aGUgY2FudmFzIHdo
ZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgZW5hYmxlZC4KKworICAgICAgICBBbHJlYWR5
IGNvdmVyZWQgYnkgZXhpc3RlbnQgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6CisgICAg
ICAgIFJlcGxhY2UgY3VzdG9tIGVudW1lcmF0aW9uIGZvciB0aGUgdmlkZW8gcm90YXRpb24gd2l0
aCB0aGUgSW1hZ2VPcmllbnRhdGlvbiBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6
CisgICAgICAgIFJlcGxhY2UgdGhlIG9yaWVudGF0aW9uIHZhbHVlIGNvbXBhcmlzb24gd2l0aCBJ
bWFnZU9yaWVudGF0aW9uOjp1c2VzV2lkdGhBc0hlaWdodCgpLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQpOgorICAgICAgICBQZXJmb3Jt
IHRoZSBmcmFtZSBwYWludGluZyB0YWtpbmcgaW50byBhY2NvdW50IHRoZSB2aWRlbyBvcmllbnRh
dGlvbiB0YWcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUm90YXRlIHRoZSBuYXRp
dmUgaW1hZ2UgYmVmb3JlIHJldHVybmluZyBpdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24pOgorICAg
ICAgICBSZXBsYWNlIGN1c3RvbSBlbnVtZXJhdGlvbiBmb3IgdGhlIHZpZGVvIHJvdGF0aW9uIHdp
dGggdGhlIEltYWdlT3JpZW50YXRpb24gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
KTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIG9yaWVudGF0aW9uIGluaXRpYWxpemF0aW9uLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmg6CisgICAgICAgIFJlbW92ZSBjdXN0b20gZW51bWVyYXRpb24gZm9yIHRo
ZSB2aWRlbyBvcmllbnRhdGlvbi4KKwogMjAxNi0wNy0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENyZWRlbnRpYWxSZXF1ZXN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBhMDZhZmE1YTIxYjllZTRiNGQxZTE5ZWEwMmExMzIwMjU0MzA3NzA4Li40
ZjVlODYwNmM4ZjRhYjQ1MDNiMDZiZGMwZTMyOTM4MGY5YzAyMGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTAyOCwxMSArMTAyOCwx
MSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RN
ZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV90YWcobWVzc2FnZSwg
JnRhZ3MpOwogICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NUX1RB
R19JTUFHRV9PUklFTlRBVElPTiwgJnRhZy5vdXRQdHIoKSkpIHsKICAgICAgICAgICAgIGlmICgh
Z19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS05MCIpKQotICAgICAgICAgICAgICAgIHNldFZp
ZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3RhdGlvbjkwKTsKKyAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luUmlnaHRU
b3ApKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRl
LTE4MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3Vy
Y2VSb3RhdGlvbjE4MCk7CisgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlv
bihJbWFnZU9yaWVudGF0aW9uKE9yaWdpbkJvdHRvbVJpZ2h0KSk7CiAgICAgICAgICAgICBlbHNl
IGlmICghZ19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS0yNzAiKSkKLSAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZVJvdGF0aW9uKFZpZGVvU291cmNlUm90YXRpb24yNzApOworICAgICAg
ICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmln
aW5MZWZ0Qm90dG9tKSk7CiAgICAgICAgIH0KICAgICAgICAgZ3N0X3RhZ19saXN0X3VucmVmKHRh
Z3MpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA2NDk0ZDBlM2IxMTNmZjIyZmNkOTE2NTJhMmRl
NDA3ZjU1MGRhYzE3Li43YTEwZDg2ODRkYTI2ZjA1MDlhMzdhY2Y3NzY3NWU4NDc4YjBhMDg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dNdXRleExvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL3N0cmVhbXZv
bHVtZS5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KQEAgLTE1Myw3ICsx
NTQsNiBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKiBwbAogICAgICwgbV9kcmF3VGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cmVwYWlu
dCkKICNlbmRpZgogICAgICwgbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKGZhbHNlKQotICAgICwg
bV92aWRlb1NvdXJjZVJvdGF0aW9uKE5vVmlkZW9Tb3VyY2VSb3RhdGlvbikKICNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpCiAgICAgLCBtX3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcoMCkKICNl
bmRpZgpAQCAtMjkzLDcgKzI5Myw3IEBAIEZsb2F0U2l6ZSBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQogICAgIC8vIFdoZW4gdXNpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcsIGlmIHRoZSB2aWRl
byBpcyB0YWdnZWQgYXMgcm90YXRlZCA5MCBvciAyNzAgZGVncmVlcywgc3dhcCB3aWR0aCBhbmQg
aGVpZ2h0LgogICAgIGlmIChtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdD
YW5CZUFjY2VsZXJhdGVkKG1fcGxheWVyKSkgewotICAgICAgICBpZiAobV92aWRlb1NvdXJjZVJv
dGF0aW9uID09IFZpZGVvU291cmNlUm90YXRpb245MCB8fCBtX3ZpZGVvU291cmNlUm90YXRpb24g
PT0gVmlkZW9Tb3VyY2VSb3RhdGlvbjI3MCkKKyAgICAgICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKQogICAgICAgICAgICAgb3JpZ2luYWxTaXplID0g
b3JpZ2luYWxTaXplLnRyYW5zcG9zZWRTaXplKCk7CiAgICAgfQogI2VuZGlmCkBAIC01OTcsMTMg
KzU5Nyw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLSAgICByZXR1cm47
Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCi0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQogICAgIGlm
IChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MTQs
MTIgKzYwNywxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgIGlmICghR1NUX0lTX1NB
TVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zIHBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVDb3B5KTsKKyAgICBpZiAobV9wbGF5
ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChtX3BsYXll
cikpCisgICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0
SW1hZ2VPcmllbnRhdGlvbkVudW0obV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKKwogICAgIFJl
ZlB0cjxJbWFnZUdTdHJlYW1lcj4gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1h
Z2UobV9zYW1wbGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSByZWludGVycHJldF9jYXN0PEltYWdlKj4oZ3N0SW1h
Z2UtPmltYWdlKCkuZ2V0KCkpKQotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHJl
Y3QsIGdzdEltYWdlLT5yZWN0KCksIENvbXBvc2l0ZUNvcHkpOworICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZSgqaW1hZ2UsIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHBhaW50aW5nT3B0aW9ucyk7
CiB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCkBAIC02ODMsMTUgKzY4MCw2IEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogCiAgICAgV1RG
OjpHTXV0ZXhMb2NrZXI8R011dGV4PiBsb2NrKG1fc2FtcGxlTXV0ZXgpOwogCi0gICAgR3N0Vmlk
ZW9JbmZvIHZpZGVvSW5mbzsKLSAgICBpZiAoIWdldFNhbXBsZVZpZGVvSW5mbyhtX3NhbXBsZS5n
ZXQoKSwgdmlkZW9JbmZvKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBHc3RCdWZm
ZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihtX3NhbXBsZS5nZXQoKSk7Ci0gICAg
R3N0VmlkZW9GcmFtZSB2aWRlb0ZyYW1lOwotICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCgm
dmlkZW9GcmFtZSwgJnZpZGVvSW5mbywgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4o
R1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQog
ICAgIEdMQ29udGV4dCogY29udGV4dCA9IEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKTsKICAg
ICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBjYWlyb19kZXZpY2VfdCogZGV2
aWNlID0gY29udGV4dC0+Y2Fpcm9EZXZpY2UoKTsKQEAgLTY5OSwzNCArNjg3LDc2IEBAIE5hdGl2
ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKQogICAgIC8vIFRocmVhZC1hd2FyZW5lc3MgaXMgYSBodWdlIHBlcmZvcm1h
bmNlIGhpdCBvbiBub24tSW50ZWwgZHJpdmVycy4KICAgICBjYWlyb19nbF9kZXZpY2Vfc2V0X3Ro
cmVhZF9hd2FyZShkZXZpY2UsIEZBTFNFKTsKIAorICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87
CisgICAgaWYgKCFnZXRTYW1wbGVWaWRlb0luZm8obV9zYW1wbGUuZ2V0KCksIHZpZGVvSW5mbykp
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19nbF9zdXJmYWNlX2NyZWF0ZShkZXZpY2Us
IENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIDAsIDApKTsKKworICAgIEdzdEJ1ZmZlciogYnVm
ZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlLmdldCgpKTsKKyAgICBHc3RWaWRl
b0ZyYW1lIHZpZGVvRnJhbWU7CisgICAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwKCZ2aWRlb0Zy
YW1lLCAmdmlkZW9JbmZvLCBidWZmZXIsIHN0YXRpY19jYXN0PEdzdE1hcEZsYWdzPihHU1RfTUFQ
X1JFQUQgfCBHU1RfTUFQX0dMKSkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19nbF9z
dXJmYWNlX2NyZWF0ZShkZXZpY2UsIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIDAsIDApKTsK
KwogICAgIHVuc2lnbmVkIHRleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4o
dmlkZW9GcmFtZS5kYXRhWzBdKTsKICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURF
T19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5m
bykpOwotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2dsX3N1cmZhY2VfY3Jl
YXRlX2Zvcl90ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgdGV4dHVy
ZUlELCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IHN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19nbF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4
dHVyZShkZXZpY2UsIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIHRleHR1cmVJRCwgc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KHN1
cmZhY2UuZ2V0KCkpOworCisgICAgSW50U2l6ZSByb3RhdGVkU2l6ZSA9IG1fdmlkZW9Tb3VyY2VP
cmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpIDog
c2l6ZTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiByb3RhdGVkU3VyZmFjZSA9IGFkb3B0
UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9B
TFBIQSwgcm90YXRlZFNpemUud2lkdGgoKSwgcm90YXRlZFNpemUuaGVpZ2h0KCkpKTsKKyAgICBS
ZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUocm90YXRlZFN1cmZhY2Uu
Z2V0KCkpKTsKKworICAgIHN3aXRjaCAobV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKSB7CisgICAg
Y2FzZSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBP
cmlnaW5SaWdodFRvcDoKKyAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLmdldCgpLCByb3RhdGVk
U2l6ZS53aWR0aCgpICogMC41LCByb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSk7CisgICAgICAg
IGNhaXJvX3JvdGF0ZShjci5nZXQoKSwgTV9QSSAvIDIuMCk7CisgICAgICAgIGNhaXJvX3RyYW5z
bGF0ZShjci5nZXQoKSwgLXJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41LCAtcm90YXRlZFNpemUu
d2lkdGgoKSAqIDAuNSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3JpZ2luQm90dG9tUmln
aHQ6CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjci5nZXQoKSwgcm90YXRlZFNpemUud2lkdGgo
KSAqIDAuNSwgcm90YXRlZFNpemUuaGVpZ2h0KCkgKiAwLjUpOworICAgICAgICBjYWlyb19yb3Rh
dGUoY3IuZ2V0KCksIE1fUEkpOworICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IuZ2V0KCksIC1y
b3RhdGVkU2l6ZS53aWR0aCgpICogMC41LCAtcm90YXRlZFNpemUuaGVpZ2h0KCkgKiAwLjUpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIE9yaWdpbkxlZnRCb3R0b206CisgICAgICAgIGNhaXJv
X3RyYW5zbGF0ZShjci5nZXQoKSwgcm90YXRlZFNpemUud2lkdGgoKSAqIDAuNSwgcm90YXRlZFNp
emUuaGVpZ2h0KCkgKiAwLjUpOworICAgICAgICBjYWlyb19yb3RhdGUoY3IuZ2V0KCksIDMgKiBN
X1BJIC8gMi4wKTsKKyAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLmdldCgpLCAtcm90YXRlZFNp
emUuaGVpZ2h0KCkgKiAwLjUsIC1yb3RhdGVkU2l6ZS53aWR0aCgpICogMC41KTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0KCks
IHN1cmZhY2UuZ2V0KCksIDAsIDApOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihjci5nZXQoKSwg
Q0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICBjYWlyb19wYWludChjci5nZXQoKSk7CisgICAg
Ly8gRW5zdXJlIHRoYXQgd2UgZGVzdHJveSB0aGUgc3VyZmFjZSBiZWZvcmUgdW5tYXBwaW5nIHRo
ZSB2aWRlbyBmcmFtZS4KKyAgICBzdXJmYWNlLnJlbGVhc2UoKTsKICAgICBnc3RfdmlkZW9fZnJh
bWVfdW5tYXAoJnZpZGVvRnJhbWUpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKHN1cmZhY2UpOwor
ICAgIHJldHVybiByb3RhdGVkU3VyZmFjZTsKIH0KICNlbmRpZgogCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VS
b3RhdGlvbiByb3RhdGlvbikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
c2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRh
dGlvbikKIHsKLSAgICBpZiAobV92aWRlb1NvdXJjZVJvdGF0aW9uID09IHJvdGF0aW9uKQorICAg
IGlmIChtX3ZpZGVvU291cmNlT3JpZW50YXRpb24gPT0gb3JpZW50YXRpb24pCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fdmlkZW9Tb3VyY2VSb3RhdGlvbiA9IHJvdGF0aW9uOworICAgIG1fdmlk
ZW9Tb3VyY2VPcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOwogCiAjaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQotICAgIHN3aXRjaCAobV92aWRlb1NvdXJjZVJvdGF0aW9uKSB7Ci0gICAgY2FzZSBO
b1ZpZGVvU291cmNlUm90YXRpb246CisgICAgc3dpdGNoIChtX3ZpZGVvU291cmNlT3JpZW50YXRp
b24pIHsKKyAgICBjYXNlIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOgogICAgICAgICBtX3RleHR1
cmVNYXBwZXJSb3RhdGlvbkZsYWcgPSAwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFZpZGVv
U291cmNlUm90YXRpb245MDoKKyAgICBjYXNlIE9yaWdpblJpZ2h0VG9wOgogICAgICAgICBtX3Rl
eHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRl
eHR1cmU5MDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWaWRlb1NvdXJjZVJvdGF0aW9uMTgw
OgorICAgIGNhc2UgT3JpZ2luQm90dG9tUmlnaHQ6CiAgICAgICAgIG1fdGV4dHVyZU1hcHBlclJv
dGF0aW9uRmxhZyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90YXRlVGV4dHVyZTE4MDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWaWRlb1NvdXJjZVJvdGF0aW9uMjcwOgorICAgIGNhc2Ug
T3JpZ2luTGVmdEJvdHRvbToKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnID0g
VGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlMjcwOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmgKaW5kZXggZDZiZDkwNGJjMTQ2NGQ4Y2M1N2QwOTA3MmNjNzE3NWY5NGU5Y2E0
ZS4uZmYyYzkxY2FmZGY2ZWNlMDZmMmQ1N2QwYjczYWMwOWU0N2EyNjg4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC02MCwxMyAr
NjAsNiBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlIDogcHVibGljIE1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZQogewogCiBwdWJsaWM6Ci0gICAgZW51bSBWaWRlb1Nv
dXJjZVJvdGF0aW9uIHsKLSAgICAgICAgTm9WaWRlb1NvdXJjZVJvdGF0aW9uLAotICAgICAgICBW
aWRlb1NvdXJjZVJvdGF0aW9uOTAsCi0gICAgICAgIFZpZGVvU291cmNlUm90YXRpb24xODAsCi0g
ICAgICAgIFZpZGVvU291cmNlUm90YXRpb24yNzAKLSAgICB9OwotCiAgICAgdmlydHVhbCB+TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSgpOwogCiAgICAgRmxvYXRTaXplIG5hdHVyYWxT
aXplKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xMjcsNyArMTIwLDcgQEAgcHVibGljOgogICAgIE5h
dGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKICNlbmRp
ZgogCi0gICAgdm9pZCBzZXRWaWRlb1NvdXJjZVJvdGF0aW9uKFZpZGVvU291cmNlUm90YXRpb24p
OworICAgIHZvaWQgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihjb25zdCBJbWFnZU9yaWVudGF0
aW9uJik7CiAKIHByb3RlY3RlZDoKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
KE1lZGlhUGxheWVyKik7CkBAIC0yMDcsNyArMjAwLDcgQEAgcHJvdGVjdGVkOgogICAgIExvY2sg
bV9kcmF3TXV0ZXg7CiAjZW5kaWYKIAotICAgIFZpZGVvU291cmNlUm90YXRpb24gbV92aWRlb1Nv
dXJjZVJvdGF0aW9uOworICAgIEltYWdlT3JpZW50YXRpb24gbV92aWRlb1NvdXJjZU9yaWVudGF0
aW9uOwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZs
YWdzIG1fdGV4dHVyZU1hcHBlclJvdGF0aW9uRmxhZzsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282870</attachid>
            <date>2016-07-06 03:02:54 -0700</date>
            <delta_ts>2016-07-06 06:48:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159405-20160706120222.patch</filename>
            <type>text/plain</type>
            <size>10759</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhkYzM0ZmQzMWM4NzQy
NTcwNTM2NDA3ZDBjODdhOWJmNDNkMmVkYS4uYTZkNzQ1MDM2MTQ0Zjc0ZmZlNGU5OTVjMmFjNzgz
MDEwMDllMWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA3LTA1ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gUGFpbnRpbmcg
YSB2aWRlbyBpbnRvIGEgY2FudmFzIGRvZXNuJ3Qgd29yayB3aGVuIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTQwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCB2aWRlbyBmcmFtZSBwYWludGluZyB0byB0aGUgY2FudmFzIHdo
ZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgZW5hYmxlZC4KKworICAgICAgICBBbHJlYWR5
IGNvdmVyZWQgYnkgZXhpc3RlbnQgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6CisgICAg
ICAgIFJlcGxhY2UgY3VzdG9tIGVudW1lcmF0aW9uIGZvciB0aGUgdmlkZW8gcm90YXRpb24gd2l0
aCB0aGUgSW1hZ2VPcmllbnRhdGlvbiBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6
CisgICAgICAgIFJlcGxhY2UgdGhlIG9yaWVudGF0aW9uIHZhbHVlIGNvbXBhcmlzb24gd2l0aCBJ
bWFnZU9yaWVudGF0aW9uOjp1c2VzV2lkdGhBc0hlaWdodCgpLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQpOgorICAgICAgICBQZXJmb3Jt
IHRoZSBmcmFtZSBwYWludGluZyB0YWtpbmcgaW50byBhY2NvdW50IHRoZSB2aWRlbyBvcmllbnRh
dGlvbiB0YWcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUm90YXRlIHRoZSBuYXRp
dmUgaW1hZ2UgYmVmb3JlIHJldHVybmluZyBpdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24pOgorICAg
ICAgICBSZXBsYWNlIGN1c3RvbSBlbnVtZXJhdGlvbiBmb3IgdGhlIHZpZGVvIHJvdGF0aW9uIHdp
dGggdGhlIEltYWdlT3JpZW50YXRpb24gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
KTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIG9yaWVudGF0aW9uIGluaXRpYWxpemF0aW9uLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmg6CisgICAgICAgIFJlbW92ZSBjdXN0b20gZW51bWVyYXRpb24gZm9yIHRo
ZSB2aWRlbyBvcmllbnRhdGlvbi4KKwogMjAxNi0wNy0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENyZWRlbnRpYWxSZXF1ZXN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBhMDZhZmE1YTIxYjllZTRiNGQxZTE5ZWEwMmExMzIwMjU0MzA3NzA4Li40
ZjVlODYwNmM4ZjRhYjQ1MDNiMDZiZGMwZTMyOTM4MGY5YzAyMGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTAyOCwxMSArMTAyOCwx
MSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RN
ZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV90YWcobWVzc2FnZSwg
JnRhZ3MpOwogICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NUX1RB
R19JTUFHRV9PUklFTlRBVElPTiwgJnRhZy5vdXRQdHIoKSkpIHsKICAgICAgICAgICAgIGlmICgh
Z19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS05MCIpKQotICAgICAgICAgICAgICAgIHNldFZp
ZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3RhdGlvbjkwKTsKKyAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luUmlnaHRU
b3ApKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRl
LTE4MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3Vy
Y2VSb3RhdGlvbjE4MCk7CisgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlv
bihJbWFnZU9yaWVudGF0aW9uKE9yaWdpbkJvdHRvbVJpZ2h0KSk7CiAgICAgICAgICAgICBlbHNl
IGlmICghZ19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS0yNzAiKSkKLSAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZVJvdGF0aW9uKFZpZGVvU291cmNlUm90YXRpb24yNzApOworICAgICAg
ICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmln
aW5MZWZ0Qm90dG9tKSk7CiAgICAgICAgIH0KICAgICAgICAgZ3N0X3RhZ19saXN0X3VucmVmKHRh
Z3MpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA2NDk0ZDBlM2IxMTNmZjIyZmNkOTE2NTJhMmRl
NDA3ZjU1MGRhYzE3Li45ZjZlMjNlZjBjMmQ4NjE4ZmUyOTQxMTU5NDZjMDcwNWVhNmQ2NjEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dNdXRleExvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL3N0cmVhbXZv
bHVtZS5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KQEAgLTE1Myw3ICsx
NTQsNiBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKiBwbAogICAgICwgbV9kcmF3VGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cmVwYWlu
dCkKICNlbmRpZgogICAgICwgbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKGZhbHNlKQotICAgICwg
bV92aWRlb1NvdXJjZVJvdGF0aW9uKE5vVmlkZW9Tb3VyY2VSb3RhdGlvbikKICNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpCiAgICAgLCBtX3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcoMCkKICNl
bmRpZgpAQCAtMjkzLDcgKzI5Myw3IEBAIEZsb2F0U2l6ZSBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQogICAgIC8vIFdoZW4gdXNpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcsIGlmIHRoZSB2aWRl
byBpcyB0YWdnZWQgYXMgcm90YXRlZCA5MCBvciAyNzAgZGVncmVlcywgc3dhcCB3aWR0aCBhbmQg
aGVpZ2h0LgogICAgIGlmIChtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdD
YW5CZUFjY2VsZXJhdGVkKG1fcGxheWVyKSkgewotICAgICAgICBpZiAobV92aWRlb1NvdXJjZVJv
dGF0aW9uID09IFZpZGVvU291cmNlUm90YXRpb245MCB8fCBtX3ZpZGVvU291cmNlUm90YXRpb24g
PT0gVmlkZW9Tb3VyY2VSb3RhdGlvbjI3MCkKKyAgICAgICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKQogICAgICAgICAgICAgb3JpZ2luYWxTaXplID0g
b3JpZ2luYWxTaXplLnRyYW5zcG9zZWRTaXplKCk7CiAgICAgfQogI2VuZGlmCkBAIC01OTcsMTMg
KzU5Nyw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLSAgICByZXR1cm47
Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCi0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQogICAgIGlm
IChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MTQs
MTIgKzYwNywxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgIGlmICghR1NUX0lTX1NB
TVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zIHBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVDb3B5KTsKKyAgICBpZiAobV9wbGF5
ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChtX3BsYXll
cikpCisgICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0
SW1hZ2VPcmllbnRhdGlvbkVudW0obV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKKwogICAgIFJl
ZlB0cjxJbWFnZUdTdHJlYW1lcj4gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1h
Z2UobV9zYW1wbGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSByZWludGVycHJldF9jYXN0PEltYWdlKj4oZ3N0SW1h
Z2UtPmltYWdlKCkuZ2V0KCkpKQotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHJl
Y3QsIGdzdEltYWdlLT5yZWN0KCksIENvbXBvc2l0ZUNvcHkpOworICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZSgqaW1hZ2UsIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHBhaW50aW5nT3B0aW9ucyk7
CiB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCkBAIC03MDEsMzIgKzY5OCw2NCBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIAogICAgIHVu
c2lnbmVkIHRleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4odmlkZW9GcmFt
ZS5kYXRhWzBdKTsKICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJ
RFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwotICAg
IGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90
ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgdGV4dHVyZUlELCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1
cmZhY2UgPSBhZG9wdFJlZihjYWlyb19nbF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShkZXZp
Y2UsIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIHRleHR1cmVJRCwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKSk7CisKKyAgICBJbnRTaXplIHJvdGF0ZWRTaXplID0gbV92aWRlb1NvdXJj
ZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkg
OiBzaXplOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHJvdGF0ZWRTdXJmYWNlID0gYWRv
cHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGUoZGV2aWNlLCBDQUlST19DT05URU5UX0NPTE9S
X0FMUEhBLCByb3RhdGVkU2l6ZS53aWR0aCgpLCByb3RhdGVkU2l6ZS5oZWlnaHQoKSkpOworICAg
IFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShyb3RhdGVkU3VyZmFj
ZS5nZXQoKSkpOworCisgICAgc3dpdGNoIChtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pIHsKKyAg
ICBjYXNlIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOgorICAgICAgICBicmVhazsKKyAgICBjYXNl
IE9yaWdpblJpZ2h0VG9wOgorICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IuZ2V0KCksIHJvdGF0
ZWRTaXplLndpZHRoKCkgKiAwLjUsIHJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41KTsKKyAgICAg
ICAgY2Fpcm9fcm90YXRlKGNyLmdldCgpLCBNX1BJIC8gMi4wKTsKKyAgICAgICAgY2Fpcm9fdHJh
bnNsYXRlKGNyLmdldCgpLCAtcm90YXRlZFNpemUuaGVpZ2h0KCkgKiAwLjUsIC1yb3RhdGVkU2l6
ZS53aWR0aCgpICogMC41KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcmlnaW5Cb3R0b21S
aWdodDoKKyAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLmdldCgpLCByb3RhdGVkU2l6ZS53aWR0
aCgpICogMC41LCByb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSk7CisgICAgICAgIGNhaXJvX3Jv
dGF0ZShjci5nZXQoKSwgTV9QSSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjci5nZXQoKSwg
LXJvdGF0ZWRTaXplLndpZHRoKCkgKiAwLjUsIC1yb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKKyAgICAgICAgY2Fp
cm9fdHJhbnNsYXRlKGNyLmdldCgpLCByb3RhdGVkU2l6ZS53aWR0aCgpICogMC41LCByb3RhdGVk
U2l6ZS5oZWlnaHQoKSAqIDAuNSk7CisgICAgICAgIGNhaXJvX3JvdGF0ZShjci5nZXQoKSwgMyAq
IE1fUEkgLyAyLjApOworICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IuZ2V0KCksIC1yb3RhdGVk
U2l6ZS5oZWlnaHQoKSAqIDAuNSwgLXJvdGF0ZWRTaXplLndpZHRoKCkgKiAwLjUpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQo
KSwgc3VyZmFjZS5nZXQoKSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLmdldCgp
LCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGNhaXJvX3BhaW50KGNyLmdldCgpKTsKKyAg
ICAvLyBFbnN1cmUgdGhhdCB3ZSBkZXN0cm95IHRoZSBzdXJmYWNlIGJlZm9yZSB1bm1hcHBpbmcg
dGhlIHZpZGVvIGZyYW1lLgorICAgIHN1cmZhY2UucmVsZWFzZSgpOwogICAgIGdzdF92aWRlb19m
cmFtZV91bm1hcCgmdmlkZW9GcmFtZSk7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoc3VyZmFjZSk7
CisgICAgcmV0dXJuIHJvdGF0ZWRTdXJmYWNlOwogfQogI2VuZGlmCiAKLXZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0VmlkZW9Tb3VyY2VSb3RhdGlvbihWaWRlb1NvdXJj
ZVJvdGF0aW9uIHJvdGF0aW9uKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
OjpzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKGNvbnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVu
dGF0aW9uKQogewotICAgIGlmIChtX3ZpZGVvU291cmNlUm90YXRpb24gPT0gcm90YXRpb24pCisg
ICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbiA9PSBvcmllbnRhdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV92aWRlb1NvdXJjZVJvdGF0aW9uID0gcm90YXRpb247CisgICAgbV92
aWRlb1NvdXJjZU9yaWVudGF0aW9uID0gb3JpZW50YXRpb247CiAKICNpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpCi0gICAgc3dpdGNoIChtX3ZpZGVvU291cmNlUm90YXRpb24pIHsKLSAgICBjYXNl
IE5vVmlkZW9Tb3VyY2VSb3RhdGlvbjoKKyAgICBzd2l0Y2ggKG1fdmlkZW9Tb3VyY2VPcmllbnRh
dGlvbikgeworICAgIGNhc2UgRGVmYXVsdEltYWdlT3JpZW50YXRpb246CiAgICAgICAgIG1fdGV4
dHVyZU1hcHBlclJvdGF0aW9uRmxhZyA9IDA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlk
ZW9Tb3VyY2VSb3RhdGlvbjkwOgorICAgIGNhc2UgT3JpZ2luUmlnaHRUb3A6CiAgICAgICAgIG1f
dGV4dHVyZU1hcHBlclJvdGF0aW9uRmxhZyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90YXRl
VGV4dHVyZTkwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFZpZGVvU291cmNlUm90YXRpb24x
ODA6CisgICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdodDoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVy
Um90YXRpb25GbGFnID0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlMTgwOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFZpZGVvU291cmNlUm90YXRpb24yNzA6CisgICAgY2Fz
ZSBPcmlnaW5MZWZ0Qm90dG9tOgogICAgICAgICBtX3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcg
PSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmUyNzA7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuaAppbmRleCBkNmJkOTA0YmMxNDY0ZDhjYzU3ZDA5MDcyY2M3MTc1Zjk0ZTlj
YTRlLi5mZjJjOTFjYWZkZjZlY2UwNmYyZDU3ZDBiNzNhYzA5ZTQ3YTI2ODhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAgLTYwLDEz
ICs2MCw2IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UgOiBwdWJsaWMg
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiB7CiAKIHB1YmxpYzoKLSAgICBlbnVtIFZpZGVv
U291cmNlUm90YXRpb24gewotICAgICAgICBOb1ZpZGVvU291cmNlUm90YXRpb24sCi0gICAgICAg
IFZpZGVvU291cmNlUm90YXRpb245MCwKLSAgICAgICAgVmlkZW9Tb3VyY2VSb3RhdGlvbjE4MCwK
LSAgICAgICAgVmlkZW9Tb3VyY2VSb3RhdGlvbjI3MAotICAgIH07Ci0KICAgICB2aXJ0dWFsIH5N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKCk7CiAKICAgICBGbG9hdFNpemUgbmF0dXJh
bFNpemUoKSBjb25zdCBvdmVycmlkZTsKQEAgLTEyNyw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAg
TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSAgICB2b2lkIHNldFZpZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3RhdGlv
bik7CisgICAgdm9pZCBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKGNvbnN0IEltYWdlT3JpZW50
YXRpb24mKTsKIAogcHJvdGVjdGVkOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UoTWVkaWFQbGF5ZXIqKTsKQEAgLTIwNyw3ICsyMDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgTG9j
ayBtX2RyYXdNdXRleDsKICNlbmRpZgogCi0gICAgVmlkZW9Tb3VyY2VSb3RhdGlvbiBtX3ZpZGVv
U291cmNlUm90YXRpb247CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX3ZpZGVvU291cmNlT3JpZW50
YXRpb247CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIFRleHR1cmVNYXBwZXJHTDo6
RmxhZ3MgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282885</attachid>
            <date>2016-07-06 06:49:07 -0700</date>
            <delta_ts>2016-07-07 00:44:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159405-20160706154835.patch</filename>
            <type>text/plain</type>
            <size>10773</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhkYzM0ZmQzMWM4NzQy
NTcwNTM2NDA3ZDBjODdhOWJmNDNkMmVkYS4uYTZkNzQ1MDM2MTQ0Zjc0ZmZlNGU5OTVjMmFjNzgz
MDEwMDllMWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA3LTA1ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gUGFpbnRpbmcg
YSB2aWRlbyBpbnRvIGEgY2FudmFzIGRvZXNuJ3Qgd29yayB3aGVuIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTQwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCB2aWRlbyBmcmFtZSBwYWludGluZyB0byB0aGUgY2FudmFzIHdo
ZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgZW5hYmxlZC4KKworICAgICAgICBBbHJlYWR5
IGNvdmVyZWQgYnkgZXhpc3RlbnQgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6CisgICAg
ICAgIFJlcGxhY2UgY3VzdG9tIGVudW1lcmF0aW9uIGZvciB0aGUgdmlkZW8gcm90YXRpb24gd2l0
aCB0aGUgSW1hZ2VPcmllbnRhdGlvbiBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6
CisgICAgICAgIFJlcGxhY2UgdGhlIG9yaWVudGF0aW9uIHZhbHVlIGNvbXBhcmlzb24gd2l0aCBJ
bWFnZU9yaWVudGF0aW9uOjp1c2VzV2lkdGhBc0hlaWdodCgpLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQpOgorICAgICAgICBQZXJmb3Jt
IHRoZSBmcmFtZSBwYWludGluZyB0YWtpbmcgaW50byBhY2NvdW50IHRoZSB2aWRlbyBvcmllbnRh
dGlvbiB0YWcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUm90YXRlIHRoZSBuYXRp
dmUgaW1hZ2UgYmVmb3JlIHJldHVybmluZyBpdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24pOgorICAg
ICAgICBSZXBsYWNlIGN1c3RvbSBlbnVtZXJhdGlvbiBmb3IgdGhlIHZpZGVvIHJvdGF0aW9uIHdp
dGggdGhlIEltYWdlT3JpZW50YXRpb24gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
KTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIG9yaWVudGF0aW9uIGluaXRpYWxpemF0aW9uLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmg6CisgICAgICAgIFJlbW92ZSBjdXN0b20gZW51bWVyYXRpb24gZm9yIHRo
ZSB2aWRlbyBvcmllbnRhdGlvbi4KKwogMjAxNi0wNy0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENyZWRlbnRpYWxSZXF1ZXN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBhMDZhZmE1YTIxYjllZTRiNGQxZTE5ZWEwMmExMzIwMjU0MzA3NzA4Li40
ZjVlODYwNmM4ZjRhYjQ1MDNiMDZiZGMwZTMyOTM4MGY5YzAyMGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTAyOCwxMSArMTAyOCwx
MSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RN
ZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV90YWcobWVzc2FnZSwg
JnRhZ3MpOwogICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NUX1RB
R19JTUFHRV9PUklFTlRBVElPTiwgJnRhZy5vdXRQdHIoKSkpIHsKICAgICAgICAgICAgIGlmICgh
Z19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS05MCIpKQotICAgICAgICAgICAgICAgIHNldFZp
ZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3RhdGlvbjkwKTsKKyAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luUmlnaHRU
b3ApKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRl
LTE4MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3Vy
Y2VSb3RhdGlvbjE4MCk7CisgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlv
bihJbWFnZU9yaWVudGF0aW9uKE9yaWdpbkJvdHRvbVJpZ2h0KSk7CiAgICAgICAgICAgICBlbHNl
IGlmICghZ19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS0yNzAiKSkKLSAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZVJvdGF0aW9uKFZpZGVvU291cmNlUm90YXRpb24yNzApOworICAgICAg
ICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmln
aW5MZWZ0Qm90dG9tKSk7CiAgICAgICAgIH0KICAgICAgICAgZ3N0X3RhZ19saXN0X3VucmVmKHRh
Z3MpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA2NDk0ZDBlM2IxMTNmZjIyZmNkOTE2NTJhMmRl
NDA3ZjU1MGRhYzE3Li5jOGNlYzhjNWEwMDQ0ODgxMWE5ZTE5ZTY0NWI2Nzg0YTViOTAwMjc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dNdXRleExvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL3N0cmVhbXZv
bHVtZS5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KQEAgLTE1Myw3ICsx
NTQsNiBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKiBwbAogICAgICwgbV9kcmF3VGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cmVwYWlu
dCkKICNlbmRpZgogICAgICwgbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKGZhbHNlKQotICAgICwg
bV92aWRlb1NvdXJjZVJvdGF0aW9uKE5vVmlkZW9Tb3VyY2VSb3RhdGlvbikKICNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpCiAgICAgLCBtX3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcoMCkKICNl
bmRpZgpAQCAtMjkzLDcgKzI5Myw3IEBAIEZsb2F0U2l6ZSBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQogICAgIC8vIFdoZW4gdXNpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcsIGlmIHRoZSB2aWRl
byBpcyB0YWdnZWQgYXMgcm90YXRlZCA5MCBvciAyNzAgZGVncmVlcywgc3dhcCB3aWR0aCBhbmQg
aGVpZ2h0LgogICAgIGlmIChtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdD
YW5CZUFjY2VsZXJhdGVkKG1fcGxheWVyKSkgewotICAgICAgICBpZiAobV92aWRlb1NvdXJjZVJv
dGF0aW9uID09IFZpZGVvU291cmNlUm90YXRpb245MCB8fCBtX3ZpZGVvU291cmNlUm90YXRpb24g
PT0gVmlkZW9Tb3VyY2VSb3RhdGlvbjI3MCkKKyAgICAgICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKQogICAgICAgICAgICAgb3JpZ2luYWxTaXplID0g
b3JpZ2luYWxTaXplLnRyYW5zcG9zZWRTaXplKCk7CiAgICAgfQogI2VuZGlmCkBAIC01OTcsMTMg
KzU5Nyw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLSAgICByZXR1cm47
Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCi0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQogICAgIGlm
IChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MTQs
MTIgKzYwNywxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgIGlmICghR1NUX0lTX1NB
TVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zIHBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVDb3B5KTsKKyAgICBpZiAobV9wbGF5
ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChtX3BsYXll
cikpCisgICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0
SW1hZ2VPcmllbnRhdGlvbkVudW0obV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKKwogICAgIFJl
ZlB0cjxJbWFnZUdTdHJlYW1lcj4gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1h
Z2UobV9zYW1wbGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSByZWludGVycHJldF9jYXN0PEltYWdlKj4oZ3N0SW1h
Z2UtPmltYWdlKCkuZ2V0KCkpKQotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHJl
Y3QsIGdzdEltYWdlLT5yZWN0KCksIENvbXBvc2l0ZUNvcHkpOworICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZSgqaW1hZ2UsIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHBhaW50aW5nT3B0aW9ucyk7
CiB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCkBAIC03MDEsMzIgKzY5OCw2NCBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIAogICAgIHVu
c2lnbmVkIHRleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4odmlkZW9GcmFt
ZS5kYXRhWzBdKTsKICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJ
RFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwotICAg
IGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90
ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgdGV4dHVyZUlELCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1
cmZhY2UgPSBhZG9wdFJlZihjYWlyb19nbF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShkZXZp
Y2UsIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIHRleHR1cmVJRCwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKSk7CisKKyAgICBJbnRTaXplIHJvdGF0ZWRTaXplID0gbV92aWRlb1NvdXJj
ZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkg
OiBzaXplOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHJvdGF0ZWRTdXJmYWNlID0gYWRv
cHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGUoZGV2aWNlLCBDQUlST19DT05URU5UX0NPTE9S
X0FMUEhBLCByb3RhdGVkU2l6ZS53aWR0aCgpLCByb3RhdGVkU2l6ZS5oZWlnaHQoKSkpOworICAg
IFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShyb3RhdGVkU3VyZmFj
ZS5nZXQoKSkpOworCisgICAgc3dpdGNoIChtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pIHsKKyAg
ICBjYXNlIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOgorICAgICAgICBicmVhazsKKyAgICBjYXNl
IE9yaWdpblJpZ2h0VG9wOgorICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IuZ2V0KCksIHJvdGF0
ZWRTaXplLndpZHRoKCkgKiAwLjUsIHJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41KTsKKyAgICAg
ICAgY2Fpcm9fcm90YXRlKGNyLmdldCgpLCBwaU92ZXJUd29Eb3VibGUpOworICAgICAgICBjYWly
b190cmFuc2xhdGUoY3IuZ2V0KCksIC1yb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSwgLXJvdGF0
ZWRTaXplLndpZHRoKCkgKiAwLjUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9yaWdpbkJv
dHRvbVJpZ2h0OgorICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IuZ2V0KCksIHJvdGF0ZWRTaXpl
LndpZHRoKCkgKiAwLjUsIHJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41KTsKKyAgICAgICAgY2Fp
cm9fcm90YXRlKGNyLmdldCgpLCBwaURvdWJsZSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShj
ci5nZXQoKSwgLXJvdGF0ZWRTaXplLndpZHRoKCkgKiAwLjUsIC1yb3RhdGVkU2l6ZS5oZWlnaHQo
KSAqIDAuNSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKKyAg
ICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLmdldCgpLCByb3RhdGVkU2l6ZS53aWR0aCgpICogMC41
LCByb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSk7CisgICAgICAgIGNhaXJvX3JvdGF0ZShjci5n
ZXQoKSwgMyAqIHBpT3ZlclR3b0RvdWJsZSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjci5n
ZXQoKSwgLXJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41LCAtcm90YXRlZFNpemUud2lkdGgoKSAq
IDAuNSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9z
dXJmYWNlKGNyLmdldCgpLCBzdXJmYWNlLmdldCgpLCAwLCAwKTsKKyAgICBjYWlyb19zZXRfb3Bl
cmF0b3IoY3IuZ2V0KCksIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CisgICAgY2Fpcm9fcGFpbnQo
Y3IuZ2V0KCkpOworICAgIC8vIEVuc3VyZSB0aGF0IHdlIGRlc3Ryb3kgdGhlIHN1cmZhY2UgYmVm
b3JlIHVubWFwcGluZyB0aGUgdmlkZW8gZnJhbWUuCisgICAgc3VyZmFjZS5yZWxlYXNlKCk7CiAg
ICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsKIAotICAgIHJldHVybiBhZG9w
dFJlZihzdXJmYWNlKTsKKyAgICByZXR1cm4gcm90YXRlZFN1cmZhY2U7CiB9CiAjZW5kaWYKIAot
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRWaWRlb1NvdXJjZVJvdGF0
aW9uKFZpZGVvU291cmNlUm90YXRpb24gcm90YXRpb24pCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24oY29uc3QgSW1hZ2VPcmll
bnRhdGlvbiYgb3JpZW50YXRpb24pCiB7Ci0gICAgaWYgKG1fdmlkZW9Tb3VyY2VSb3RhdGlvbiA9
PSByb3RhdGlvbikKKyAgICBpZiAobV92aWRlb1NvdXJjZU9yaWVudGF0aW9uID09IG9yaWVudGF0
aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvU291cmNlUm90YXRpb24gPSByb3Rh
dGlvbjsKKyAgICBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsKIAogI2lm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBzd2l0Y2ggKG1fdmlkZW9Tb3VyY2VSb3RhdGlv
bikgewotICAgIGNhc2UgTm9WaWRlb1NvdXJjZVJvdGF0aW9uOgorICAgIHN3aXRjaCAobV92aWRl
b1NvdXJjZU9yaWVudGF0aW9uKSB7CisgICAgY2FzZSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjoK
ICAgICAgICAgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnID0gMDsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBWaWRlb1NvdXJjZVJvdGF0aW9uOTA6CisgICAgY2FzZSBPcmlnaW5SaWdodFRv
cDoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnID0gVGV4dHVyZU1hcHBlckdM
OjpTaG91bGRSb3RhdGVUZXh0dXJlOTA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlkZW9T
b3VyY2VSb3RhdGlvbjE4MDoKKyAgICBjYXNlIE9yaWdpbkJvdHRvbVJpZ2h0OgogICAgICAgICBt
X3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0
ZVRleHR1cmUxODA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlkZW9Tb3VyY2VSb3RhdGlv
bjI3MDoKKyAgICBjYXNlIE9yaWdpbkxlZnRCb3R0b206CiAgICAgICAgIG1fdGV4dHVyZU1hcHBl
clJvdGF0aW9uRmxhZyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90YXRlVGV4dHVyZTI3MDsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IGQ2YmQ5MDRiYzE0NjRkOGNjNTdkMDkw
NzJjYzcxNzVmOTRlOWNhNGUuLmZmMmM5MWNhZmRmNmVjZTA2ZjJkNTdkMGI3M2FjMDllNDdhMjY4
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuaApAQCAtNjAsMTMgKzYwLDYgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKIHsKIAogcHVibGljOgot
ICAgIGVudW0gVmlkZW9Tb3VyY2VSb3RhdGlvbiB7Ci0gICAgICAgIE5vVmlkZW9Tb3VyY2VSb3Rh
dGlvbiwKLSAgICAgICAgVmlkZW9Tb3VyY2VSb3RhdGlvbjkwLAotICAgICAgICBWaWRlb1NvdXJj
ZVJvdGF0aW9uMTgwLAotICAgICAgICBWaWRlb1NvdXJjZVJvdGF0aW9uMjcwCi0gICAgfTsKLQog
ICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoKTsKIAogICAgIEZs
b2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTI3LDcgKzEyMCw3IEBA
IHB1YmxpYzoKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkg
b3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0VmlkZW9Tb3VyY2VSb3RhdGlvbihWaWRl
b1NvdXJjZVJvdGF0aW9uKTsKKyAgICB2b2lkIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oY29u
c3QgSW1hZ2VPcmllbnRhdGlvbiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciopOwpAQCAtMjA3LDcgKzIwMCw3IEBAIHByb3Rl
Y3RlZDoKICAgICBMb2NrIG1fZHJhd011dGV4OwogI2VuZGlmCiAKLSAgICBWaWRlb1NvdXJjZVJv
dGF0aW9uIG1fdmlkZW9Tb3VyY2VSb3RhdGlvbjsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fdmlk
ZW9Tb3VyY2VPcmllbnRhdGlvbjsKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgVGV4
dHVyZU1hcHBlckdMOjpGbGFncyBtX3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWc7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282995</attachid>
            <date>2016-07-07 00:44:25 -0700</date>
            <delta_ts>2016-07-07 04:07:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159405-20160707094351.patch</filename>
            <type>text/plain</type>
            <size>10674</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhkYzM0ZmQzMWM4NzQy
NTcwNTM2NDA3ZDBjODdhOWJmNDNkMmVkYS4uYTZkNzQ1MDM2MTQ0Zjc0ZmZlNGU5OTVjMmFjNzgz
MDEwMDllMWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA3LTA1ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gUGFpbnRpbmcg
YSB2aWRlbyBpbnRvIGEgY2FudmFzIGRvZXNuJ3Qgd29yayB3aGVuIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTQwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCB2aWRlbyBmcmFtZSBwYWludGluZyB0byB0aGUgY2FudmFzIHdo
ZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgZW5hYmxlZC4KKworICAgICAgICBBbHJlYWR5
IGNvdmVyZWQgYnkgZXhpc3RlbnQgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6CisgICAg
ICAgIFJlcGxhY2UgY3VzdG9tIGVudW1lcmF0aW9uIGZvciB0aGUgdmlkZW8gcm90YXRpb24gd2l0
aCB0aGUgSW1hZ2VPcmllbnRhdGlvbiBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6
CisgICAgICAgIFJlcGxhY2UgdGhlIG9yaWVudGF0aW9uIHZhbHVlIGNvbXBhcmlzb24gd2l0aCBJ
bWFnZU9yaWVudGF0aW9uOjp1c2VzV2lkdGhBc0hlaWdodCgpLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQpOgorICAgICAgICBQZXJmb3Jt
IHRoZSBmcmFtZSBwYWludGluZyB0YWtpbmcgaW50byBhY2NvdW50IHRoZSB2aWRlbyBvcmllbnRh
dGlvbiB0YWcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUm90YXRlIHRoZSBuYXRp
dmUgaW1hZ2UgYmVmb3JlIHJldHVybmluZyBpdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24pOgorICAg
ICAgICBSZXBsYWNlIGN1c3RvbSBlbnVtZXJhdGlvbiBmb3IgdGhlIHZpZGVvIHJvdGF0aW9uIHdp
dGggdGhlIEltYWdlT3JpZW50YXRpb24gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
KTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIG9yaWVudGF0aW9uIGluaXRpYWxpemF0aW9uLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmg6CisgICAgICAgIFJlbW92ZSBjdXN0b20gZW51bWVyYXRpb24gZm9yIHRo
ZSB2aWRlbyBvcmllbnRhdGlvbi4KKwogMjAxNi0wNy0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENyZWRlbnRpYWxSZXF1ZXN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBhMDZhZmE1YTIxYjllZTRiNGQxZTE5ZWEwMmExMzIwMjU0MzA3NzA4Li40
ZjVlODYwNmM4ZjRhYjQ1MDNiMDZiZGMwZTMyOTM4MGY5YzAyMGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTAyOCwxMSArMTAyOCwx
MSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RN
ZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV90YWcobWVzc2FnZSwg
JnRhZ3MpOwogICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NUX1RB
R19JTUFHRV9PUklFTlRBVElPTiwgJnRhZy5vdXRQdHIoKSkpIHsKICAgICAgICAgICAgIGlmICgh
Z19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS05MCIpKQotICAgICAgICAgICAgICAgIHNldFZp
ZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3RhdGlvbjkwKTsKKyAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luUmlnaHRU
b3ApKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRl
LTE4MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3Vy
Y2VSb3RhdGlvbjE4MCk7CisgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlv
bihJbWFnZU9yaWVudGF0aW9uKE9yaWdpbkJvdHRvbVJpZ2h0KSk7CiAgICAgICAgICAgICBlbHNl
IGlmICghZ19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS0yNzAiKSkKLSAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZVJvdGF0aW9uKFZpZGVvU291cmNlUm90YXRpb24yNzApOworICAgICAg
ICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmln
aW5MZWZ0Qm90dG9tKSk7CiAgICAgICAgIH0KICAgICAgICAgZ3N0X3RhZ19saXN0X3VucmVmKHRh
Z3MpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA2NDk0ZDBlM2IxMTNmZjIyZmNkOTE2NTJhMmRl
NDA3ZjU1MGRhYzE3Li5hZGE0MmYzYzgzY2M5ODg5YzA1M2U3Mzc3NWZlNDU0YWRjMTRjYjA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dNdXRleExvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL3N0cmVhbXZv
bHVtZS5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KQEAgLTE1Myw3ICsx
NTQsNiBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKiBwbAogICAgICwgbV9kcmF3VGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cmVwYWlu
dCkKICNlbmRpZgogICAgICwgbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKGZhbHNlKQotICAgICwg
bV92aWRlb1NvdXJjZVJvdGF0aW9uKE5vVmlkZW9Tb3VyY2VSb3RhdGlvbikKICNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpCiAgICAgLCBtX3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcoMCkKICNl
bmRpZgpAQCAtMjkzLDcgKzI5Myw3IEBAIEZsb2F0U2l6ZSBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQogICAgIC8vIFdoZW4gdXNpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcsIGlmIHRoZSB2aWRl
byBpcyB0YWdnZWQgYXMgcm90YXRlZCA5MCBvciAyNzAgZGVncmVlcywgc3dhcCB3aWR0aCBhbmQg
aGVpZ2h0LgogICAgIGlmIChtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdD
YW5CZUFjY2VsZXJhdGVkKG1fcGxheWVyKSkgewotICAgICAgICBpZiAobV92aWRlb1NvdXJjZVJv
dGF0aW9uID09IFZpZGVvU291cmNlUm90YXRpb245MCB8fCBtX3ZpZGVvU291cmNlUm90YXRpb24g
PT0gVmlkZW9Tb3VyY2VSb3RhdGlvbjI3MCkKKyAgICAgICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKQogICAgICAgICAgICAgb3JpZ2luYWxTaXplID0g
b3JpZ2luYWxTaXplLnRyYW5zcG9zZWRTaXplKCk7CiAgICAgfQogI2VuZGlmCkBAIC01OTcsMTMg
KzU5Nyw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLSAgICByZXR1cm47
Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCi0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQogICAgIGlm
IChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MTQs
MTIgKzYwNywxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgIGlmICghR1NUX0lTX1NB
TVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zIHBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVDb3B5KTsKKyAgICBpZiAobV9wbGF5
ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChtX3BsYXll
cikpCisgICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0
SW1hZ2VPcmllbnRhdGlvbkVudW0obV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKKwogICAgIFJl
ZlB0cjxJbWFnZUdTdHJlYW1lcj4gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1h
Z2UobV9zYW1wbGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSByZWludGVycHJldF9jYXN0PEltYWdlKj4oZ3N0SW1h
Z2UtPmltYWdlKCkuZ2V0KCkpKQotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHJl
Y3QsIGdzdEltYWdlLT5yZWN0KCksIENvbXBvc2l0ZUNvcHkpOworICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZSgqaW1hZ2UsIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHBhaW50aW5nT3B0aW9ucyk7
CiB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCkBAIC03MDEsMzIgKzY5OCw2MyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIAogICAgIHVu
c2lnbmVkIHRleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4odmlkZW9GcmFt
ZS5kYXRhWzBdKTsKICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJ
RFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwotICAg
IGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90
ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgdGV4dHVyZUlELCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1
cmZhY2UgPSBhZG9wdFJlZihjYWlyb19nbF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShkZXZp
Y2UsIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIHRleHR1cmVJRCwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKSk7CisKKyAgICBJbnRTaXplIHJvdGF0ZWRTaXplID0gbV92aWRlb1NvdXJj
ZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkg
OiBzaXplOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHJvdGF0ZWRTdXJmYWNlID0gYWRv
cHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGUoZGV2aWNlLCBDQUlST19DT05URU5UX0NPTE9S
X0FMUEhBLCByb3RhdGVkU2l6ZS53aWR0aCgpLCByb3RhdGVkU2l6ZS5oZWlnaHQoKSkpOworICAg
IFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShyb3RhdGVkU3VyZmFj
ZS5nZXQoKSkpOworCisgICAgc3dpdGNoIChtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pIHsKKyAg
ICBjYXNlIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOgorICAgICAgICBicmVhazsKKyAgICBjYXNl
IE9yaWdpblJpZ2h0VG9wOgorICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IuZ2V0KCksIHJvdGF0
ZWRTaXplLndpZHRoKCkgKiAwLjUsIHJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41KTsKKyAgICAg
ICAgY2Fpcm9fcm90YXRlKGNyLmdldCgpLCBwaU92ZXJUd29Eb3VibGUpOworICAgICAgICBjYWly
b190cmFuc2xhdGUoY3IuZ2V0KCksIC1yb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSwgLXJvdGF0
ZWRTaXplLndpZHRoKCkgKiAwLjUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9yaWdpbkJv
dHRvbVJpZ2h0OgorICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IuZ2V0KCksIHJvdGF0ZWRTaXpl
LndpZHRoKCkgKiAwLjUsIHJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41KTsKKyAgICAgICAgY2Fp
cm9fcm90YXRlKGNyLmdldCgpLCBwaURvdWJsZSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShj
ci5nZXQoKSwgLXJvdGF0ZWRTaXplLndpZHRoKCkgKiAwLjUsIC1yb3RhdGVkU2l6ZS5oZWlnaHQo
KSAqIDAuNSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKKyAg
ICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLmdldCgpLCByb3RhdGVkU2l6ZS53aWR0aCgpICogMC41
LCByb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSk7CisgICAgICAgIGNhaXJvX3JvdGF0ZShjci5n
ZXQoKSwgMyAqIHBpT3ZlclR3b0RvdWJsZSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjci5n
ZXQoKSwgLXJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41LCAtcm90YXRlZFNpemUud2lkdGgoKSAq
IDAuNSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9z
dXJmYWNlKGNyLmdldCgpLCBzdXJmYWNlLmdldCgpLCAwLCAwKTsKKyAgICBjYWlyb19zZXRfb3Bl
cmF0b3IoY3IuZ2V0KCksIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CisgICAgY2Fpcm9fcGFpbnQo
Y3IuZ2V0KCkpOworCiAgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsKIAot
ICAgIHJldHVybiBhZG9wdFJlZihzdXJmYWNlKTsKKyAgICByZXR1cm4gcm90YXRlZFN1cmZhY2U7
CiB9CiAjZW5kaWYKIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRW
aWRlb1NvdXJjZVJvdGF0aW9uKFZpZGVvU291cmNlUm90YXRpb24gcm90YXRpb24pCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24o
Y29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3JpZW50YXRpb24pCiB7Ci0gICAgaWYgKG1fdmlkZW9T
b3VyY2VSb3RhdGlvbiA9PSByb3RhdGlvbikKKyAgICBpZiAobV92aWRlb1NvdXJjZU9yaWVudGF0
aW9uID09IG9yaWVudGF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvU291cmNl
Um90YXRpb24gPSByb3RhdGlvbjsKKyAgICBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24gPSBvcmll
bnRhdGlvbjsKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBzd2l0Y2ggKG1fdmlk
ZW9Tb3VyY2VSb3RhdGlvbikgewotICAgIGNhc2UgTm9WaWRlb1NvdXJjZVJvdGF0aW9uOgorICAg
IHN3aXRjaCAobV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKSB7CisgICAgY2FzZSBEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbjoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnID0gMDsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWaWRlb1NvdXJjZVJvdGF0aW9uOTA6CisgICAgY2Fz
ZSBPcmlnaW5SaWdodFRvcDoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnID0g
VGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlOTA7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgVmlkZW9Tb3VyY2VSb3RhdGlvbjE4MDoKKyAgICBjYXNlIE9yaWdpbkJvdHRvbVJp
Z2h0OgogICAgICAgICBtX3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcgPSBUZXh0dXJlTWFwcGVy
R0w6OlNob3VsZFJvdGF0ZVRleHR1cmUxODA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlk
ZW9Tb3VyY2VSb3RhdGlvbjI3MDoKKyAgICBjYXNlIE9yaWdpbkxlZnRCb3R0b206CiAgICAgICAg
IG1fdGV4dHVyZU1hcHBlclJvdGF0aW9uRmxhZyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90
YXRlVGV4dHVyZTI3MDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IGQ2YmQ5MDRi
YzE0NjRkOGNjNTdkMDkwNzJjYzcxNzVmOTRlOWNhNGUuLmZmMmM5MWNhZmRmNmVjZTA2ZjJkNTdk
MGI3M2FjMDllNDdhMjY4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuaApAQCAtNjAsMTMgKzYwLDYgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UK
IHsKIAogcHVibGljOgotICAgIGVudW0gVmlkZW9Tb3VyY2VSb3RhdGlvbiB7Ci0gICAgICAgIE5v
VmlkZW9Tb3VyY2VSb3RhdGlvbiwKLSAgICAgICAgVmlkZW9Tb3VyY2VSb3RhdGlvbjkwLAotICAg
ICAgICBWaWRlb1NvdXJjZVJvdGF0aW9uMTgwLAotICAgICAgICBWaWRlb1NvdXJjZVJvdGF0aW9u
MjcwCi0gICAgfTsKLQogICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UoKTsKIAogICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAt
MTI3LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0VmlkZW9Tb3Vy
Y2VSb3RhdGlvbihWaWRlb1NvdXJjZVJvdGF0aW9uKTsKKyAgICB2b2lkIHNldFZpZGVvU291cmNl
T3JpZW50YXRpb24oY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciopOwpAQCAtMjA3LDcg
KzIwMCw3IEBAIHByb3RlY3RlZDoKICAgICBMb2NrIG1fZHJhd011dGV4OwogI2VuZGlmCiAKLSAg
ICBWaWRlb1NvdXJjZVJvdGF0aW9uIG1fdmlkZW9Tb3VyY2VSb3RhdGlvbjsKKyAgICBJbWFnZU9y
aWVudGF0aW9uIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbjsKICNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBtX3RleHR1cmVNYXBwZXJSb3RhdGlv
bkZsYWc7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283005</attachid>
            <date>2016-07-07 04:07:56 -0700</date>
            <delta_ts>2016-07-07 04:13:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159405-20160707130722.patch</filename>
            <type>text/plain</type>
            <size>11307</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhkYzM0ZmQzMWM4NzQy
NTcwNTM2NDA3ZDBjODdhOWJmNDNkMmVkYS4uYTZkNzQ1MDM2MTQ0Zjc0ZmZlNGU5OTVjMmFjNzgz
MDEwMDllMWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA3LTA1ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gUGFpbnRpbmcg
YSB2aWRlbyBpbnRvIGEgY2FudmFzIGRvZXNuJ3Qgd29yayB3aGVuIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTQwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCB2aWRlbyBmcmFtZSBwYWludGluZyB0byB0aGUgY2FudmFzIHdo
ZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgZW5hYmxlZC4KKworICAgICAgICBBbHJlYWR5
IGNvdmVyZWQgYnkgZXhpc3RlbnQgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6CisgICAg
ICAgIFJlcGxhY2UgY3VzdG9tIGVudW1lcmF0aW9uIGZvciB0aGUgdmlkZW8gcm90YXRpb24gd2l0
aCB0aGUgSW1hZ2VPcmllbnRhdGlvbiBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6
CisgICAgICAgIFJlcGxhY2UgdGhlIG9yaWVudGF0aW9uIHZhbHVlIGNvbXBhcmlzb24gd2l0aCBJ
bWFnZU9yaWVudGF0aW9uOjp1c2VzV2lkdGhBc0hlaWdodCgpLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQpOgorICAgICAgICBQZXJmb3Jt
IHRoZSBmcmFtZSBwYWludGluZyB0YWtpbmcgaW50byBhY2NvdW50IHRoZSB2aWRlbyBvcmllbnRh
dGlvbiB0YWcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUm90YXRlIHRoZSBuYXRp
dmUgaW1hZ2UgYmVmb3JlIHJldHVybmluZyBpdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24pOgorICAg
ICAgICBSZXBsYWNlIGN1c3RvbSBlbnVtZXJhdGlvbiBmb3IgdGhlIHZpZGVvIHJvdGF0aW9uIHdp
dGggdGhlIEltYWdlT3JpZW50YXRpb24gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
KTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIG9yaWVudGF0aW9uIGluaXRpYWxpemF0aW9uLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmg6CisgICAgICAgIFJlbW92ZSBjdXN0b20gZW51bWVyYXRpb24gZm9yIHRo
ZSB2aWRlbyBvcmllbnRhdGlvbi4KKwogMjAxNi0wNy0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENyZWRlbnRpYWxSZXF1ZXN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBhMDZhZmE1YTIxYjllZTRiNGQxZTE5ZWEwMmExMzIwMjU0MzA3NzA4Li40
ZjVlODYwNmM4ZjRhYjQ1MDNiMDZiZGMwZTMyOTM4MGY5YzAyMGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTAyOCwxMSArMTAyOCwx
MSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RN
ZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV90YWcobWVzc2FnZSwg
JnRhZ3MpOwogICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NUX1RB
R19JTUFHRV9PUklFTlRBVElPTiwgJnRhZy5vdXRQdHIoKSkpIHsKICAgICAgICAgICAgIGlmICgh
Z19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS05MCIpKQotICAgICAgICAgICAgICAgIHNldFZp
ZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3RhdGlvbjkwKTsKKyAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luUmlnaHRU
b3ApKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRl
LTE4MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3Vy
Y2VSb3RhdGlvbjE4MCk7CisgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlv
bihJbWFnZU9yaWVudGF0aW9uKE9yaWdpbkJvdHRvbVJpZ2h0KSk7CiAgICAgICAgICAgICBlbHNl
IGlmICghZ19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS0yNzAiKSkKLSAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZVJvdGF0aW9uKFZpZGVvU291cmNlUm90YXRpb24yNzApOworICAgICAg
ICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmln
aW5MZWZ0Qm90dG9tKSk7CiAgICAgICAgIH0KICAgICAgICAgZ3N0X3RhZ19saXN0X3VucmVmKHRh
Z3MpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA2NDk0ZDBlM2IxMTNmZjIyZmNkOTE2NTJhMmRl
NDA3ZjU1MGRhYzE3Li4zMzVlMDA2MjFmNDk2NDM0OTdiOGQxZTA1OTJmZTZhZTA5ZTU5ZGE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dNdXRleExvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL3N0cmVhbXZv
bHVtZS5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KQEAgLTE1Myw3ICsx
NTQsNiBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKiBwbAogICAgICwgbV9kcmF3VGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cmVwYWlu
dCkKICNlbmRpZgogICAgICwgbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKGZhbHNlKQotICAgICwg
bV92aWRlb1NvdXJjZVJvdGF0aW9uKE5vVmlkZW9Tb3VyY2VSb3RhdGlvbikKICNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpCiAgICAgLCBtX3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcoMCkKICNl
bmRpZgpAQCAtMjkzLDcgKzI5Myw3IEBAIEZsb2F0U2l6ZSBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQogICAgIC8vIFdoZW4gdXNpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcsIGlmIHRoZSB2aWRl
byBpcyB0YWdnZWQgYXMgcm90YXRlZCA5MCBvciAyNzAgZGVncmVlcywgc3dhcCB3aWR0aCBhbmQg
aGVpZ2h0LgogICAgIGlmIChtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdD
YW5CZUFjY2VsZXJhdGVkKG1fcGxheWVyKSkgewotICAgICAgICBpZiAobV92aWRlb1NvdXJjZVJv
dGF0aW9uID09IFZpZGVvU291cmNlUm90YXRpb245MCB8fCBtX3ZpZGVvU291cmNlUm90YXRpb24g
PT0gVmlkZW9Tb3VyY2VSb3RhdGlvbjI3MCkKKyAgICAgICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKQogICAgICAgICAgICAgb3JpZ2luYWxTaXplID0g
b3JpZ2luYWxTaXplLnRyYW5zcG9zZWRTaXplKCk7CiAgICAgfQogI2VuZGlmCkBAIC01OTcsMTMg
KzU5Nyw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLSAgICByZXR1cm47
Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCi0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQogICAgIGlm
IChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MTQs
MTIgKzYwNywxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgIGlmICghR1NUX0lTX1NB
TVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zIHBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVDb3B5KTsKKyAgICBpZiAobV9wbGF5
ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChtX3BsYXll
cikpCisgICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0
SW1hZ2VPcmllbnRhdGlvbkVudW0obV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKKwogICAgIFJl
ZlB0cjxJbWFnZUdTdHJlYW1lcj4gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1h
Z2UobV9zYW1wbGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSByZWludGVycHJldF9jYXN0PEltYWdlKj4oZ3N0SW1h
Z2UtPmltYWdlKCkuZ2V0KCkpKQotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHJl
Y3QsIGdzdEltYWdlLT5yZWN0KCksIENvbXBvc2l0ZUNvcHkpOworICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZSgqaW1hZ2UsIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHBhaW50aW5nT3B0aW9ucyk7
CiB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCkBAIC03MDEsMzIgKzY5OCw2MyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIAogICAgIHVu
c2lnbmVkIHRleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4odmlkZW9GcmFt
ZS5kYXRhWzBdKTsKICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJ
RFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwotICAg
IGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90
ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgdGV4dHVyZUlELCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1
cmZhY2UgPSBhZG9wdFJlZihjYWlyb19nbF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShkZXZp
Y2UsIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIHRleHR1cmVJRCwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKSk7CisKKyAgICBJbnRTaXplIHJvdGF0ZWRTaXplID0gbV92aWRlb1NvdXJj
ZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkg
OiBzaXplOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHJvdGF0ZWRTdXJmYWNlID0gYWRv
cHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGUoZGV2aWNlLCBDQUlST19DT05URU5UX0NPTE9S
X0FMUEhBLCByb3RhdGVkU2l6ZS53aWR0aCgpLCByb3RhdGVkU2l6ZS5oZWlnaHQoKSkpOworICAg
IFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShyb3RhdGVkU3VyZmFj
ZS5nZXQoKSkpOworCisgICAgc3dpdGNoIChtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pIHsKKyAg
ICBjYXNlIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOgorICAgICAgICBicmVhazsKKyAgICBjYXNl
IE9yaWdpblJpZ2h0VG9wOgorICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IuZ2V0KCksIHJvdGF0
ZWRTaXplLndpZHRoKCkgKiAwLjUsIHJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41KTsKKyAgICAg
ICAgY2Fpcm9fcm90YXRlKGNyLmdldCgpLCBwaU92ZXJUd29Eb3VibGUpOworICAgICAgICBjYWly
b190cmFuc2xhdGUoY3IuZ2V0KCksIC1yb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSwgLXJvdGF0
ZWRTaXplLndpZHRoKCkgKiAwLjUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9yaWdpbkJv
dHRvbVJpZ2h0OgorICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IuZ2V0KCksIHJvdGF0ZWRTaXpl
LndpZHRoKCkgKiAwLjUsIHJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41KTsKKyAgICAgICAgY2Fp
cm9fcm90YXRlKGNyLmdldCgpLCBwaURvdWJsZSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShj
ci5nZXQoKSwgLXJvdGF0ZWRTaXplLndpZHRoKCkgKiAwLjUsIC1yb3RhdGVkU2l6ZS5oZWlnaHQo
KSAqIDAuNSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKKyAg
ICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLmdldCgpLCByb3RhdGVkU2l6ZS53aWR0aCgpICogMC41
LCByb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSk7CisgICAgICAgIGNhaXJvX3JvdGF0ZShjci5n
ZXQoKSwgMyAqIHBpT3ZlclR3b0RvdWJsZSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjci5n
ZXQoKSwgLXJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41LCAtcm90YXRlZFNpemUud2lkdGgoKSAq
IDAuNSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9z
dXJmYWNlKGNyLmdldCgpLCBzdXJmYWNlLmdldCgpLCAwLCAwKTsKKyAgICBjYWlyb19zZXRfb3Bl
cmF0b3IoY3IuZ2V0KCksIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CisgICAgY2Fpcm9fcGFpbnQo
Y3IuZ2V0KCkpOworCiAgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsKIAot
ICAgIHJldHVybiBhZG9wdFJlZihzdXJmYWNlKTsKKyAgICByZXR1cm4gcm90YXRlZFN1cmZhY2U7
CiB9CiAjZW5kaWYKIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRW
aWRlb1NvdXJjZVJvdGF0aW9uKFZpZGVvU291cmNlUm90YXRpb24gcm90YXRpb24pCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24o
Y29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3JpZW50YXRpb24pCiB7Ci0gICAgaWYgKG1fdmlkZW9T
b3VyY2VSb3RhdGlvbiA9PSByb3RhdGlvbikKKyAgICBpZiAobV92aWRlb1NvdXJjZU9yaWVudGF0
aW9uID09IG9yaWVudGF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvU291cmNl
Um90YXRpb24gPSByb3RhdGlvbjsKKyAgICBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24gPSBvcmll
bnRhdGlvbjsKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBzd2l0Y2ggKG1fdmlk
ZW9Tb3VyY2VSb3RhdGlvbikgewotICAgIGNhc2UgTm9WaWRlb1NvdXJjZVJvdGF0aW9uOgorICAg
IHN3aXRjaCAobV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKSB7CisgICAgY2FzZSBEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbjoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnID0gMDsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWaWRlb1NvdXJjZVJvdGF0aW9uOTA6CisgICAgY2Fz
ZSBPcmlnaW5SaWdodFRvcDoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnID0g
VGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlOTA7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgVmlkZW9Tb3VyY2VSb3RhdGlvbjE4MDoKKyAgICBjYXNlIE9yaWdpbkJvdHRvbVJp
Z2h0OgogICAgICAgICBtX3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcgPSBUZXh0dXJlTWFwcGVy
R0w6OlNob3VsZFJvdGF0ZVRleHR1cmUxODA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlk
ZW9Tb3VyY2VSb3RhdGlvbjI3MDoKKyAgICBjYXNlIE9yaWdpbkxlZnRCb3R0b206CiAgICAgICAg
IG1fdGV4dHVyZU1hcHBlclJvdGF0aW9uRmxhZyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90
YXRlVGV4dHVyZTI3MDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTc2MCw2ICs3
ODgsMTAgQEAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6bW92aWVMb2FkVHlwZSgpIGNvbnMKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQog
R3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlVmlkZW9T
aW5rR0woKQogeworICAgIC8vIEZJWE1FOiBjdXJyZW50bHkgaXQncyBub3QgcG9zc2libGUgdG8g
Z2V0IHRoZSB2aWRlbyBmcmFtZXMgYW5kIGNhcHMgdXNpbmcgdGhpcyBhcHByb2FjaCB1bnRpbAor
ICAgIC8vIHRoZSBwaXBlbGluZSBnZXRzIGludG8gcGxheWluZyBzdGF0ZS4gRHVlIHRvIHRoaXMs
IHRyeWluZyB0byBncmFiIGEgZnJhbWUgYW5kIHBhaW50aW5nIGl0IGJ5IHNvbWUKKyAgICAvLyBv
dGhlciBtZWFuIChjYW52YXMgb3Igd2ViZ2wpIGJlZm9yZSBwbGF5aW5nIHN0YXRlIGNhbiByZXN1
bHQgaW4gYSBjcmFzaC4KKyAgICAvLyBUaGlzIGlzIGJlaW5nIGhhbmRsZWQgaW4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTQ2MC4KICAgICBpZiAoIXdlYmtpdEdz
dENoZWNrVmVyc2lvbigxLCA4LCAwKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IGQ2
YmQ5MDRiYzE0NjRkOGNjNTdkMDkwNzJjYzcxNzVmOTRlOWNhNGUuLmZmMmM5MWNhZmRmNmVjZTA2
ZjJkNTdkMGI3M2FjMDllNDdhMjY4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaApAQCAtNjAsMTMgKzYwLDYgQEAgY2xhc3MgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2UKIHsKIAogcHVibGljOgotICAgIGVudW0gVmlkZW9Tb3VyY2VSb3RhdGlvbiB7Ci0gICAg
ICAgIE5vVmlkZW9Tb3VyY2VSb3RhdGlvbiwKLSAgICAgICAgVmlkZW9Tb3VyY2VSb3RhdGlvbjkw
LAotICAgICAgICBWaWRlb1NvdXJjZVJvdGF0aW9uMTgwLAotICAgICAgICBWaWRlb1NvdXJjZVJv
dGF0aW9uMjcwCi0gICAgfTsKLQogICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UoKTsKIAogICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IG92ZXJyaWRl
OwpAQCAtMTI3LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0Vmlk
ZW9Tb3VyY2VSb3RhdGlvbihWaWRlb1NvdXJjZVJvdGF0aW9uKTsKKyAgICB2b2lkIHNldFZpZGVv
U291cmNlT3JpZW50YXRpb24oY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpOwogCiBwcm90ZWN0ZWQ6
CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciopOwpAQCAt
MjA3LDcgKzIwMCw3IEBAIHByb3RlY3RlZDoKICAgICBMb2NrIG1fZHJhd011dGV4OwogI2VuZGlm
CiAKLSAgICBWaWRlb1NvdXJjZVJvdGF0aW9uIG1fdmlkZW9Tb3VyY2VSb3RhdGlvbjsKKyAgICBJ
bWFnZU9yaWVudGF0aW9uIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbjsKICNpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBtX3RleHR1cmVNYXBwZXJS
b3RhdGlvbkZsYWc7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283006</attachid>
            <date>2016-07-07 04:13:35 -0700</date>
            <delta_ts>2016-07-07 06:04:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159405-20160707131301.patch</filename>
            <type>text/plain</type>
            <size>11307</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhkYzM0ZmQzMWM4NzQy
NTcwNTM2NDA3ZDBjODdhOWJmNDNkMmVkYS4uYTZkNzQ1MDM2MTQ0Zjc0ZmZlNGU5OTVjMmFjNzgz
MDEwMDllMWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA3LTA1ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gUGFpbnRpbmcg
YSB2aWRlbyBpbnRvIGEgY2FudmFzIGRvZXNuJ3Qgd29yayB3aGVuIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTQwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCB2aWRlbyBmcmFtZSBwYWludGluZyB0byB0aGUgY2FudmFzIHdo
ZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgZW5hYmxlZC4KKworICAgICAgICBBbHJlYWR5
IGNvdmVyZWQgYnkgZXhpc3RlbnQgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6CisgICAg
ICAgIFJlcGxhY2UgY3VzdG9tIGVudW1lcmF0aW9uIGZvciB0aGUgdmlkZW8gcm90YXRpb24gd2l0
aCB0aGUgSW1hZ2VPcmllbnRhdGlvbiBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSk6
CisgICAgICAgIFJlcGxhY2UgdGhlIG9yaWVudGF0aW9uIHZhbHVlIGNvbXBhcmlzb24gd2l0aCBJ
bWFnZU9yaWVudGF0aW9uOjp1c2VzV2lkdGhBc0hlaWdodCgpLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQpOgorICAgICAgICBQZXJmb3Jt
IHRoZSBmcmFtZSBwYWludGluZyB0YWtpbmcgaW50byBhY2NvdW50IHRoZSB2aWRlbyBvcmllbnRh
dGlvbiB0YWcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUm90YXRlIHRoZSBuYXRp
dmUgaW1hZ2UgYmVmb3JlIHJldHVybmluZyBpdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24pOgorICAg
ICAgICBSZXBsYWNlIGN1c3RvbSBlbnVtZXJhdGlvbiBmb3IgdGhlIHZpZGVvIHJvdGF0aW9uIHdp
dGggdGhlIEltYWdlT3JpZW50YXRpb24gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
KTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIG9yaWVudGF0aW9uIGluaXRpYWxpemF0aW9uLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmg6CisgICAgICAgIFJlbW92ZSBjdXN0b20gZW51bWVyYXRpb24gZm9yIHRo
ZSB2aWRlbyBvcmllbnRhdGlvbi4KKwogMjAxNi0wNy0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENyZWRlbnRpYWxSZXF1ZXN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBhMDZhZmE1YTIxYjllZTRiNGQxZTE5ZWEwMmExMzIwMjU0MzA3NzA4Li40
ZjVlODYwNmM4ZjRhYjQ1MDNiMDZiZGMwZTMyOTM4MGY5YzAyMGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTAyOCwxMSArMTAyOCwx
MSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RN
ZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV90YWcobWVzc2FnZSwg
JnRhZ3MpOwogICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NUX1RB
R19JTUFHRV9PUklFTlRBVElPTiwgJnRhZy5vdXRQdHIoKSkpIHsKICAgICAgICAgICAgIGlmICgh
Z19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS05MCIpKQotICAgICAgICAgICAgICAgIHNldFZp
ZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3VyY2VSb3RhdGlvbjkwKTsKKyAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24oT3JpZ2luUmlnaHRU
b3ApKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAodGFnLmdldCgpLCAicm90YXRl
LTE4MCIpKQotICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlUm90YXRpb24oVmlkZW9Tb3Vy
Y2VSb3RhdGlvbjE4MCk7CisgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlv
bihJbWFnZU9yaWVudGF0aW9uKE9yaWdpbkJvdHRvbVJpZ2h0KSk7CiAgICAgICAgICAgICBlbHNl
IGlmICghZ19zdHJjbXAwKHRhZy5nZXQoKSwgInJvdGF0ZS0yNzAiKSkKLSAgICAgICAgICAgICAg
ICBzZXRWaWRlb1NvdXJjZVJvdGF0aW9uKFZpZGVvU291cmNlUm90YXRpb24yNzApOworICAgICAg
ICAgICAgICAgIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbihPcmln
aW5MZWZ0Qm90dG9tKSk7CiAgICAgICAgIH0KICAgICAgICAgZ3N0X3RhZ19saXN0X3VucmVmKHRh
Z3MpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA2NDk0ZDBlM2IxMTNmZjIyZmNkOTE2NTJhMmRl
NDA3ZjU1MGRhYzE3Li4yOTg3MjVlMWRiZDkzOGY5ZGRmOTYzOGVlNzg4YmQ3ZWY4NDkzYTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dNdXRleExvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL3N0cmVhbXZv
bHVtZS5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KQEAgLTE1Myw3ICsx
NTQsNiBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKiBwbAogICAgICwgbV9kcmF3VGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cmVwYWlu
dCkKICNlbmRpZgogICAgICwgbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKGZhbHNlKQotICAgICwg
bV92aWRlb1NvdXJjZVJvdGF0aW9uKE5vVmlkZW9Tb3VyY2VSb3RhdGlvbikKICNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpCiAgICAgLCBtX3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcoMCkKICNl
bmRpZgpAQCAtMjkzLDcgKzI5Myw3IEBAIEZsb2F0U2l6ZSBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQogICAgIC8vIFdoZW4gdXNpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcsIGlmIHRoZSB2aWRl
byBpcyB0YWdnZWQgYXMgcm90YXRlZCA5MCBvciAyNzAgZGVncmVlcywgc3dhcCB3aWR0aCBhbmQg
aGVpZ2h0LgogICAgIGlmIChtX3BsYXllci0+Y2xpZW50KCkubWVkaWFQbGF5ZXJSZW5kZXJpbmdD
YW5CZUFjY2VsZXJhdGVkKG1fcGxheWVyKSkgewotICAgICAgICBpZiAobV92aWRlb1NvdXJjZVJv
dGF0aW9uID09IFZpZGVvU291cmNlUm90YXRpb245MCB8fCBtX3ZpZGVvU291cmNlUm90YXRpb24g
PT0gVmlkZW9Tb3VyY2VSb3RhdGlvbjI3MCkKKyAgICAgICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKQogICAgICAgICAgICAgb3JpZ2luYWxTaXplID0g
b3JpZ2luYWxTaXplLnRyYW5zcG9zZWRTaXplKCk7CiAgICAgfQogI2VuZGlmCkBAIC01OTcsMTMg
KzU5Nyw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLSAgICByZXR1cm47
Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCi0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQogICAgIGlm
IChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MTQs
MTIgKzYwNywxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgIGlmICghR1NUX0lTX1NB
TVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zIHBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVDb3B5KTsKKyAgICBpZiAobV9wbGF5
ZXItPmNsaWVudCgpLm1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChtX3BsYXll
cikpCisgICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0
SW1hZ2VPcmllbnRhdGlvbkVudW0obV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKKwogICAgIFJl
ZlB0cjxJbWFnZUdTdHJlYW1lcj4gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1h
Z2UobV9zYW1wbGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSByZWludGVycHJldF9jYXN0PEltYWdlKj4oZ3N0SW1h
Z2UtPmltYWdlKCkuZ2V0KCkpKQotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHJl
Y3QsIGdzdEltYWdlLT5yZWN0KCksIENvbXBvc2l0ZUNvcHkpOworICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZSgqaW1hZ2UsIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHBhaW50aW5nT3B0aW9ucyk7
CiB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCkBAIC03MDEsMzIgKzY5OCw2MyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIAogICAgIHVu
c2lnbmVkIHRleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4odmlkZW9GcmFt
ZS5kYXRhWzBdKTsKICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJ
RFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwotICAg
IGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90
ZXh0dXJlKGRldmljZSwgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSwgdGV4dHVyZUlELCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1
cmZhY2UgPSBhZG9wdFJlZihjYWlyb19nbF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShkZXZp
Y2UsIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIHRleHR1cmVJRCwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKSk7CisKKyAgICBJbnRTaXplIHJvdGF0ZWRTaXplID0gbV92aWRlb1NvdXJj
ZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkg
OiBzaXplOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHJvdGF0ZWRTdXJmYWNlID0gYWRv
cHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGUoZGV2aWNlLCBDQUlST19DT05URU5UX0NPTE9S
X0FMUEhBLCByb3RhdGVkU2l6ZS53aWR0aCgpLCByb3RhdGVkU2l6ZS5oZWlnaHQoKSkpOworICAg
IFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShyb3RhdGVkU3VyZmFj
ZS5nZXQoKSkpOworCisgICAgc3dpdGNoIChtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pIHsKKyAg
ICBjYXNlIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOgorICAgICAgICBicmVhazsKKyAgICBjYXNl
IE9yaWdpblJpZ2h0VG9wOgorICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IuZ2V0KCksIHJvdGF0
ZWRTaXplLndpZHRoKCkgKiAwLjUsIHJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41KTsKKyAgICAg
ICAgY2Fpcm9fcm90YXRlKGNyLmdldCgpLCBwaU92ZXJUd29Eb3VibGUpOworICAgICAgICBjYWly
b190cmFuc2xhdGUoY3IuZ2V0KCksIC1yb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSwgLXJvdGF0
ZWRTaXplLndpZHRoKCkgKiAwLjUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9yaWdpbkJv
dHRvbVJpZ2h0OgorICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IuZ2V0KCksIHJvdGF0ZWRTaXpl
LndpZHRoKCkgKiAwLjUsIHJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41KTsKKyAgICAgICAgY2Fp
cm9fcm90YXRlKGNyLmdldCgpLCBwaURvdWJsZSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShj
ci5nZXQoKSwgLXJvdGF0ZWRTaXplLndpZHRoKCkgKiAwLjUsIC1yb3RhdGVkU2l6ZS5oZWlnaHQo
KSAqIDAuNSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3JpZ2luTGVmdEJvdHRvbToKKyAg
ICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLmdldCgpLCByb3RhdGVkU2l6ZS53aWR0aCgpICogMC41
LCByb3RhdGVkU2l6ZS5oZWlnaHQoKSAqIDAuNSk7CisgICAgICAgIGNhaXJvX3JvdGF0ZShjci5n
ZXQoKSwgMyAqIHBpT3ZlclR3b0RvdWJsZSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjci5n
ZXQoKSwgLXJvdGF0ZWRTaXplLmhlaWdodCgpICogMC41LCAtcm90YXRlZFNpemUud2lkdGgoKSAq
IDAuNSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9z
dXJmYWNlKGNyLmdldCgpLCBzdXJmYWNlLmdldCgpLCAwLCAwKTsKKyAgICBjYWlyb19zZXRfb3Bl
cmF0b3IoY3IuZ2V0KCksIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CisgICAgY2Fpcm9fcGFpbnQo
Y3IuZ2V0KCkpOworCiAgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsKIAot
ICAgIHJldHVybiBhZG9wdFJlZihzdXJmYWNlKTsKKyAgICByZXR1cm4gcm90YXRlZFN1cmZhY2U7
CiB9CiAjZW5kaWYKIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRW
aWRlb1NvdXJjZVJvdGF0aW9uKFZpZGVvU291cmNlUm90YXRpb24gcm90YXRpb24pCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFZpZGVvU291cmNlT3JpZW50YXRpb24o
Y29uc3QgSW1hZ2VPcmllbnRhdGlvbiYgb3JpZW50YXRpb24pCiB7Ci0gICAgaWYgKG1fdmlkZW9T
b3VyY2VSb3RhdGlvbiA9PSByb3RhdGlvbikKKyAgICBpZiAobV92aWRlb1NvdXJjZU9yaWVudGF0
aW9uID09IG9yaWVudGF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvU291cmNl
Um90YXRpb24gPSByb3RhdGlvbjsKKyAgICBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24gPSBvcmll
bnRhdGlvbjsKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBzd2l0Y2ggKG1fdmlk
ZW9Tb3VyY2VSb3RhdGlvbikgewotICAgIGNhc2UgTm9WaWRlb1NvdXJjZVJvdGF0aW9uOgorICAg
IHN3aXRjaCAobV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKSB7CisgICAgY2FzZSBEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbjoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnID0gMDsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBWaWRlb1NvdXJjZVJvdGF0aW9uOTA6CisgICAgY2Fz
ZSBPcmlnaW5SaWdodFRvcDoKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyUm90YXRpb25GbGFnID0g
VGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlOTA7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgVmlkZW9Tb3VyY2VSb3RhdGlvbjE4MDoKKyAgICBjYXNlIE9yaWdpbkJvdHRvbVJp
Z2h0OgogICAgICAgICBtX3RleHR1cmVNYXBwZXJSb3RhdGlvbkZsYWcgPSBUZXh0dXJlTWFwcGVy
R0w6OlNob3VsZFJvdGF0ZVRleHR1cmUxODA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmlk
ZW9Tb3VyY2VSb3RhdGlvbjI3MDoKKyAgICBjYXNlIE9yaWdpbkxlZnRCb3R0b206CiAgICAgICAg
IG1fdGV4dHVyZU1hcHBlclJvdGF0aW9uRmxhZyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90
YXRlVGV4dHVyZTI3MDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTc2MCw2ICs3
ODgsMTAgQEAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6bW92aWVMb2FkVHlwZSgpIGNvbnMKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQog
R3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlVmlkZW9T
aW5rR0woKQogeworICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgaXQncyBub3QgcG9zc2libGUgdG8g
Z2V0IHRoZSB2aWRlbyBmcmFtZXMgYW5kIGNhcHMgdXNpbmcgdGhpcyBhcHByb2FjaCB1bnRpbAor
ICAgIC8vIHRoZSBwaXBlbGluZSBnZXRzIGludG8gcGxheWluZyBzdGF0ZS4gRHVlIHRvIHRoaXMs
IHRyeWluZyB0byBncmFiIGEgZnJhbWUgYW5kIHBhaW50aW5nIGl0IGJ5IHNvbWUKKyAgICAvLyBv
dGhlciBtZWFuIChjYW52YXMgb3Igd2ViZ2wpIGJlZm9yZSBwbGF5aW5nIHN0YXRlIGNhbiByZXN1
bHQgaW4gYSBjcmFzaC4KKyAgICAvLyBUaGlzIGlzIGJlaW5nIGhhbmRsZWQgaW4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTQ2MC4KICAgICBpZiAoIXdlYmtpdEdz
dENoZWNrVmVyc2lvbigxLCA4LCAwKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IGQ2
YmQ5MDRiYzE0NjRkOGNjNTdkMDkwNzJjYzcxNzVmOTRlOWNhNGUuLmZmMmM5MWNhZmRmNmVjZTA2
ZjJkNTdkMGI3M2FjMDllNDdhMjY4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaApAQCAtNjAsMTMgKzYwLDYgQEAgY2xhc3MgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2UKIHsKIAogcHVibGljOgotICAgIGVudW0gVmlkZW9Tb3VyY2VSb3RhdGlvbiB7Ci0gICAg
ICAgIE5vVmlkZW9Tb3VyY2VSb3RhdGlvbiwKLSAgICAgICAgVmlkZW9Tb3VyY2VSb3RhdGlvbjkw
LAotICAgICAgICBWaWRlb1NvdXJjZVJvdGF0aW9uMTgwLAotICAgICAgICBWaWRlb1NvdXJjZVJv
dGF0aW9uMjcwCi0gICAgfTsKLQogICAgIHZpcnR1YWwgfk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UoKTsKIAogICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IG92ZXJyaWRl
OwpAQCAtMTI3LDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0Vmlk
ZW9Tb3VyY2VSb3RhdGlvbihWaWRlb1NvdXJjZVJvdGF0aW9uKTsKKyAgICB2b2lkIHNldFZpZGVv
U291cmNlT3JpZW50YXRpb24oY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpOwogCiBwcm90ZWN0ZWQ6
CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciopOwpAQCAt
MjA3LDcgKzIwMCw3IEBAIHByb3RlY3RlZDoKICAgICBMb2NrIG1fZHJhd011dGV4OwogI2VuZGlm
CiAKLSAgICBWaWRlb1NvdXJjZVJvdGF0aW9uIG1fdmlkZW9Tb3VyY2VSb3RhdGlvbjsKKyAgICBJ
bWFnZU9yaWVudGF0aW9uIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbjsKICNpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBtX3RleHR1cmVNYXBwZXJS
b3RhdGlvbkZsYWc7CiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>