<?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>142693</bug_id>
          
          <creation_ts>2015-03-14 08:01:23 -0700</creation_ts>
          <short_desc>[GStreamer] share GL context in pipeline</short_desc>
          <delta_ts>2015-03-30 09:12:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=143049</see_also>
          <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="Víctor M. Jáquez L.">vjaquez</reporter>
          <assigned_to name="Víctor M. Jáquez L.">vjaquez</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1077147</commentid>
    <comment_count>0</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-03-14 08:01:23 -0700</bug_when>
    <thetext>When dealing with GstGL elements, they need the display and the gl context to work on. These parameters are held by the application and it needs to share it to the pipeline through a GstContext message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077148</commentid>
    <comment_count>1</comment_count>
      <attachid>248649</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-03-14 08:30:53 -0700</bug_when>
    <thetext>Created attachment 248649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077149</commentid>
    <comment_count>2</comment_count>
      <attachid>248650</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-03-14 08:37:48 -0700</bug_when>
    <thetext>Created attachment 248650
hack for adding glfiltersobel as video filter in the pipeline

This is a hack for adding a GL sobel filter in the pipeline, causing the sharing of GL context. After that all the videos only shows the image&apos;s edges :)

I tested it with the gst-libav decoders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077152</commentid>
    <comment_count>3</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-03-14 09:01:20 -0700</bug_when>
    <thetext>It seems that we need to enable the XInitThreads() for make this working correctly:

--- a/Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp
+++ b/Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp
@@ -51,7 +51,7 @@ public:
             sleep(30);
 #endif
 
-#if USE(COORDINATED_GRAPHICS_THREADED) &amp;&amp; PLATFORM(X11)
+#if PLATFORM(X11)
         XInitThreads();
 #endif
         gtk_init(nullptr, nullptr);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077154</commentid>
    <comment_count>4</comment_count>
      <attachid>248649</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-03-14 09:01:39 -0700</bug_when>
    <thetext>Comment on attachment 248649
Patch

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

Looks good, only a few small fixes needed

&gt; Source/WebCore/ChangeLog:4
&gt; +        Bug 142693 - [GStreamer] share GL context in pipeline
&gt; +

Please remove these 2 lines

&gt; Source/WebCore/ChangeLog:11
&gt; +        In order to the gstreamer pipeline could use gstreamer-gl elements,
&gt; +        the must be aware of the application display and GL context. This

I&apos;m not a native English speaker but it seems this sentence could use some rewording :)

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:943
&gt; +    case GST_MESSAGE_NEED_CONTEXT: {
&gt; +#if USE(GSTREAMER_GL)

Hum perhaps include the case statement inside the ifdef?

&gt; ChangeLog:4
&gt; +        Bug 142693 - [GStreamer] share GL context in pipeline
&gt; +

Please remove these 2 lines as well</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077157</commentid>
    <comment_count>5</comment_count>
      <attachid>248651</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-03-14 09:50:39 -0700</bug_when>
    <thetext>Created attachment 248651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077172</commentid>
    <comment_count>6</comment_count>
      <attachid>248651</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-14 11:26:31 -0700</bug_when>
    <thetext>Comment on attachment 248651
Patch

Clearing flags on attachment: 248651

Committed r181499: &lt;http://trac.webkit.org/changeset/181499&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077173</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-14 11:26:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077360</commentid>
    <comment_count>8</comment_count>
      <attachid>248651</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-03-16 00:24:25 -0700</bug_when>
    <thetext>Comment on attachment 248651
Patch

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

Sorry to be late here, but I have some comments/questions.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:938
&gt; +gboolean MediaPlayerPrivateGStreamer::handleSyncMessage(GstMessage* message)

Nit: This should probably be bool.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:944
&gt; +        const gchar* contextType;
&gt; +        gst_message_parse_context_type(message, &amp;contextType);

Could this contextType be something different than GST_GL_DISPLAY_CONTEXT_TYPE or gst.gl.app_context? In that case we should probably return early here and avoid creating (and leaking) the contexts. Otherwise, it should probably be moved before the if (!g_strcmp0

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:957
&gt; +            m_glDisplay = reinterpret_cast&lt;GstGLDisplay*&gt;(gstGLDisplay);

You could use GST_GL_DISPLAY instead of the C++ style cast here, and then yu don&apos;t need to cast again in gst_gl_context_new_wrapped(), using m_glDisplay instead.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:960
&gt; +            GLXContext* glxSharingContext = reinterpret_cast&lt;GLXContext*&gt;(webkitContext-&gt;platformContext());

This is only defined when 3D_GRAPHICS is defined, so you need to use #if USE(3D_GRAPHICS). platformContext() is a pure virtual method, you don&apos;t need to do this inside the GLX/EGL ifdefs using casts, you could do that before using PlatformGraphicsContext3D or auto.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:961
&gt; +            if (glxSharingContext &amp;&amp; !m_glContext)

Can glxSharingContext really be nullptr? what happens in that case? we might be using a null m_glContext below.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:966
&gt; +                m_glContext = gst_gl_context_new_wrapped(GST_GL_DISPLAY(gstGLDisplay), reinterpret_cast&lt;guintptr&gt;(eglSharingContext), GST_GL_PLATFORM_EGL, GST_GL_API_GLES2);

hmm, I&apos;m not OpenGL expert, but I think it&apos;s possible to use OpenGL API with EGL, so instead of hardcoding GST_GL_API_GLES2 here, you should be using GST_GL_API_OPENGL or GST_GL_API_GLES2 depending on ENABLE(GLES2)

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:972
&gt; +            gst_context_set_gl_display(displayContext, m_glDisplay);

So, here the GstContext takes the ownership of the m_glDisplay by consuming the sink reference, right? Is there any guarantee that the GstContext is not going to release its ref while the media player object is alive? Because otherwise we should consume the sink ref and let the GstContext take its own.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:979
&gt; +            gst_structure_set(structure, &quot;context&quot;, GST_GL_TYPE_CONTEXT, m_glContext, nullptr);

Same for the m_glContext

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:983
&gt; +        break;

So, we use the m_glDisplay for the GST_GL_DISPLAY_CONTEXT_TYPE and m_glContext for the gst.gl.app_context. Shouldn&apos;t we check before the context type and only create the m_glContext if contextType is gst.gl.app_context? Or is it guaranteed that both messages will be called? Otherwise we would be leaking.

&gt; Source/cmake/OptionsGTK.cmake:278
&gt; +    if (PC_GSTREAMER_GL_FOUND)
&gt; +        add_definitions(-DWTF_USE_GSTREAMER_GL)
&gt; +        set(USE_GSTREAMER_GL TRUE)
&gt; +    endif ()

Is this enough? Shouldn&apos;t we also check OPENGL_FOUND or OPENGLES2_FOUND and GLX_FOUND OR EGL_FOUND? If there&apos;s gst gl support but we are building without opengl, the code would probably crash because it assumes that m_glDisplay and m_glcontext are created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077822</commentid>
    <comment_count>9</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-03-17 02:05:06 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 248651 [details]

Thanks for your review Carlos!

I&apos;ll take care of them by the end of the week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079918</commentid>
    <comment_count>10</comment_count>
      <attachid>248651</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-03-25 03:24:39 -0700</bug_when>
    <thetext>Comment on attachment 248651
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:972
&gt;&gt; +            gst_context_set_gl_display(displayContext, m_glDisplay);
&gt; 
&gt; So, here the GstContext takes the ownership of the m_glDisplay by consuming the sink reference, right? Is there any guarantee that the GstContext is not going to release its ref while the media player object is alive? Because otherwise we should consume the sink ref and let the GstContext take its own.

GstContext doesn&apos;t take the ownership of m_glDisplay. That&apos;s why we keep m_glDisplay along the media player&apos;s life.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079921</commentid>
    <comment_count>11</comment_count>
      <attachid>248651</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-03-25 03:47:46 -0700</bug_when>
    <thetext>Comment on attachment 248651
Patch

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

&gt;&gt; Source/cmake/OptionsGTK.cmake:278
&gt;&gt; +    endif ()
&gt; 
&gt; Is this enough? Shouldn&apos;t we also check OPENGL_FOUND or OPENGLES2_FOUND and GLX_FOUND OR EGL_FOUND? If there&apos;s gst gl support but we are building without opengl, the code would probably crash because it assumes that m_glDisplay and m_glcontext are created.

The purpose of this snippet is to find if we have the GstGL API, what kind of GL API/Platform is supported should be handled in other place, IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079923</commentid>
    <comment_count>12</comment_count>
      <attachid>248651</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-03-25 04:02:50 -0700</bug_when>
    <thetext>Comment on attachment 248651
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:972
&gt;&gt;&gt; +            gst_context_set_gl_display(displayContext, m_glDisplay);
&gt;&gt; 
&gt;&gt; So, here the GstContext takes the ownership of the m_glDisplay by consuming the sink reference, right? Is there any guarantee that the GstContext is not going to release its ref while the media player object is alive? Because otherwise we should consume the sink ref and let the GstContext take its own.
&gt; 
&gt; GstContext doesn&apos;t take the ownership of m_glDisplay. That&apos;s why we keep m_glDisplay along the media player&apos;s life.

Then that means the m_glDisplay has a floating reference that nobody consumes?

&gt;&gt;&gt; Source/cmake/OptionsGTK.cmake:278
&gt;&gt;&gt; +    endif ()
&gt;&gt; 
&gt;&gt; Is this enough? Shouldn&apos;t we also check OPENGL_FOUND or OPENGLES2_FOUND and GLX_FOUND OR EGL_FOUND? If there&apos;s gst gl support but we are building without opengl, the code would probably crash because it assumes that m_glDisplay and m_glcontext are created.
&gt; 
&gt; The purpose of this snippet is to find if we have the GstGL API, what kind of GL API/Platform is supported should be handled in other place, IMO.

But it&apos;s defining USE_GSTREAMER_GL, which means GSTREAMER_GL should be used, not that it was found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079941</commentid>
    <comment_count>13</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-03-25 07:47:05 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 248651 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=248651&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:972
&gt; &gt;&gt;&gt; +            gst_context_set_gl_display(displayContext, m_glDisplay);
&gt; &gt;&gt; 
&gt; &gt;&gt; So, here the GstContext takes the ownership of the m_glDisplay by consuming the sink reference, right? Is there any guarantee that the GstContext is not going to release its ref while the media player object is alive? Because otherwise we should consume the sink ref and let the GstContext take its own.
&gt; &gt; 
&gt; &gt; GstContext doesn&apos;t take the ownership of m_glDisplay. That&apos;s why we keep m_glDisplay along the media player&apos;s life.
&gt; 
&gt; Then that means the m_glDisplay has a floating reference that nobody
&gt; consumes?

Yup. Right now m_glDisplay and m_glContext leak.

&gt; 
&gt; &gt;&gt;&gt; Source/cmake/OptionsGTK.cmake:278
&gt; &gt;&gt;&gt; +    endif ()
&gt; &gt;&gt; 
&gt; &gt;&gt; Is this enough? Shouldn&apos;t we also check OPENGL_FOUND or OPENGLES2_FOUND and GLX_FOUND OR EGL_FOUND? If there&apos;s gst gl support but we are building without opengl, the code would probably crash because it assumes that m_glDisplay and m_glcontext are created.
&gt; &gt; 
&gt; &gt; The purpose of this snippet is to find if we have the GstGL API, what kind of GL API/Platform is supported should be handled in other place, IMO.
&gt; 
&gt; But it&apos;s defining USE_GSTREAMER_GL, which means GSTREAMER_GL should be used,
&gt; not that it was found.

USE_GSTREAMER_GL is true if PC_GSTREAMER_GL_FOUND is true, which comes, if I understand correctly, from GSTREAMER_COMPONENTS checked with pkg-config.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079942</commentid>
    <comment_count>14</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-03-25 07:48:01 -0700</bug_when>
    <thetext>To fix the issues that Carlos García aimed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079943</commentid>
    <comment_count>15</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-03-25 07:53:02 -0700</bug_when>
    <thetext>We usually don&apos;t reopen bugs for follow-up patches, please open a new one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079944</commentid>
    <comment_count>16</comment_count>
      <attachid>248651</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-03-25 07:53:33 -0700</bug_when>
    <thetext>Comment on attachment 248651
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/cmake/OptionsGTK.cmake:278
&gt;&gt;&gt;&gt;&gt; +    endif ()
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Is this enough? Shouldn&apos;t we also check OPENGL_FOUND or OPENGLES2_FOUND and GLX_FOUND OR EGL_FOUND? If there&apos;s gst gl support but we are building without opengl, the code would probably crash because it assumes that m_glDisplay and m_glcontext are created.
&gt;&gt;&gt; 
&gt;&gt;&gt; The purpose of this snippet is to find if we have the GstGL API, what kind of GL API/Platform is supported should be handled in other place, IMO.
&gt;&gt; 
&gt;&gt; But it&apos;s defining USE_GSTREAMER_GL, which means GSTREAMER_GL should be used, not that it was found.
&gt; 
&gt; USE_GSTREAMER_GL is true if PC_GSTREAMER_GL_FOUND is true, which comes, if I understand correctly, from GSTREAMER_COMPONENTS checked with pkg-config.

Exactly, but that doesn&apos;t mean OPENGL_FOUND or OPENGLES2_FOUND and GLX_FOUND OR EGL_FOUND are ON.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079945</commentid>
    <comment_count>17</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-03-25 07:59:25 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079946</commentid>
    <comment_count>18</comment_count>
      <attachid>249402</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-03-25 07:59:30 -0700</bug_when>
    <thetext>Created attachment 249402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079947</commentid>
    <comment_count>19</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-03-25 08:07:07 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; We usually don&apos;t reopen bugs for follow-up patches, please open a new one

oops...

I asked earlier to Carlos and he let me choose. Now I don&apos;t know what to do. :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079948</commentid>
    <comment_count>20</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2015-03-25 08:08:34 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #15)
&gt; &gt; We usually don&apos;t reopen bugs for follow-up patches, please open a new one
&gt; 
&gt; oops...
&gt; 
&gt; I asked earlier to Carlos and he let me choose. Now I don&apos;t know what to do.
&gt; :/

OK. I&apos;m going to close this and create a new one.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248649</attachid>
            <date>2015-03-14 08:30:53 -0700</date>
            <delta_ts>2015-03-14 09:50:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142693-20150314163025.patch</filename>
            <type>text/plain</type>
            <size>12589</size>
            <attacher name="Víctor M. Jáquez L.">vjaquez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY1MTEwYWNlMjcyODM4
YTYwYjhlOTUwNzVmZTUyYWQ1NTE3MDY1Zi4uM2Y2ZWFlOWVhMGM5OWJhZTllMDllODNkM2Y3OTZk
OTYwZDBhMzllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTAzLTE0ICBWw61j
dG9yIE1hbnVlbCBKw6FxdWV6IExlYWwgIDx2amFxdWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAg
QnVnIDE0MjY5MyAtIFtHU3RyZWFtZXJdIHNoYXJlIEdMIGNvbnRleHQgaW4gcGlwZWxpbmUKKwor
ICAgICAgICBbR1N0cmVhbWVyXSBzaGFyZSBHTCBjb250ZXh0IGluIHBpcGVsaW5lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI2OTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBvcmRlciB0byB0aGUg
Z3N0cmVhbWVyIHBpcGVsaW5lIGNvdWxkIHVzZSBnc3RyZWFtZXItZ2wgZWxlbWVudHMsCisgICAg
ICAgIHRoZSBtdXN0IGJlIGF3YXJlIG9mIHRoZSBhcHBsaWNhdGlvbiBkaXNwbGF5IGFuZCBHTCBj
b250ZXh0LiBUaGlzCisgICAgICAgIGluZm9ybWF0aW9uIGlzIHNoYXJlZCB0aHJvdWdoIGNvbnRl
eHQgbWVzc2FnZXMgYmV0d2VlbiB0aGUgcGlwZWxpbmUKKyAgICAgICAgYW5kIHRoZSBicm93c2Vy
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gdGhlIHdvcmsgb2YgUGhpbGlwcGUg
Tm9ybWFuZCBmb3IgQnVnIDEzODU2Mi4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0
aGlzIGlzIHBsYXRmb3JtIHNwZWNpZmljIGFuZCBpdCBkZXBlbmRzIGluIHRoZQorICAgICAgICBy
dW4tdGltZSBhdmFpbGFiaWxpdHkgYW5kIGNvbmZpZ3VyYXRpb25zIG9mIEdzdEdMIGVsZW1lbnRz
LgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IGFwcGVuZHMgdGhlIEdzdEdMIGhlYWRl
ciBmaWxlcyBpbiB0aGUgaW5jbHVkZQorICAgICAgICBkaXJlY3Rvcmllcy4gQWxzbyBpdHMgbGli
cmFyeSBkaXJlY3RvcnkgaXMgYXBwZW5kZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjptZWRpYVBsYXllclByaXZhdGVTeW5jTWVzc2FnZUNhbGxiYWNrKTogTmV3IGNhbGxiYWNr
IGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIpOgorICAgICAgICBJbml0aWFsaXplIHRoZSBu
ZXcgY2xhc3MgYXR0cmlidXRlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6aGFuZGxlU3luY01lc3NhZ2UpOiBOZXcgbWV0aG9kCisgICAgICAgIGZvciBo
YW5kbGluZyBzeW5jaHJvbm91cyBtZXNzYWdlcyBmcm9tIHRoZSBwaXBlbGluZS4gVGhpcyBtZXRo
b2QKKyAgICAgICAgY3VycmVudGx5IG9ubHkgaGFuZGxlcyB0aGUgR0wgY29udGV4dCBzaGFyaW5n
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVH
U1RQbGF5QmluKTogQ29uZmlndXJlcworICAgICAgICB0aGUgcGlwZWxpbmUncyBidXMgdG8gaGFu
ZGxlIHRoZSBzeW5jaHJvbm91cyBtZXNzYWdlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6IEFkZCBuZXcKKyAgICAg
ICAgY2xhc3MgbWV0aG9kcyBhbmQgYXR0cmlidXRlcy4KKwogMjAxNS0wMy0xMSAgSm9zZXBoIFBl
Y29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZm9sbG93
LXVwIGZpeCB0byByMTgxNDI2LiBJbml0aWFsaXplIFRleHRQb3NpdGlvbiB3aXRoIHplcm9zIGlu
IGNhc2UgaXQgZ2V0cyB1c2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1H
VEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA0NTI2YzA2
NjhiOTYzMDMxOTM0NDQzODczMDM1ODU5MjA5MjAzYTYzLi40ZmFhMmFlNWVkMzdkOGNlZTJmNjEw
NzVmYTYzN2IxNGRkY2U1M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzQ2LDYg
KzM0NiwxNiBAQCBpZiAoRU5BQkxFX1ZJREVPKQogICAgICAgICAgICAgJHtHU1RSRUFNRVJfTVBF
R1RTX0xJQlJBUklFU30KICAgICAgICAgKQogICAgIGVuZGlmICgpCisKKyAgICBpZiAoVVNFX0dT
VFJFQU1FUl9HTCkKKyAgICAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9S
SUVTCisgICAgICAgICAgICAke0dTVFJFQU1FUl9HTF9JTkNMVURFX0RJUlN9CisgICAgICAgICkK
KworICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUworICAgICAgICAgICAgJHtH
U1RSRUFNRVJfR0xfTElCUkFSSUVTfQorICAgICAgICApCisgICAgZW5kaWYgKCkKIGVuZGlmICgp
CiAKIGlmIChFTkFCTEVfV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBlN2Y0MGY5NmYxY2QzZGZmOWFhYjY3MGI3NmE3ODQ5
Y2U4YTM1ODRjLi5kYTVlNDUwN2U3ZmM0NjE2YjhjNGU5Y2Y1NWI2NzFmYTY3MTA5MDI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtNjgs
NiArNjgsMjkgQEAKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmgiCiAj
ZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisjaW5jbHVkZSAiR0xDb250ZXh0LmgiCisK
KyNkZWZpbmUgR1NUX1VTRV9VTlNUQUJMRV9BUEkKKyNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KKyN1
bmRlZiBHU1RfVVNFX1VOU1RBQkxFX0FQSQorCisjaWYgVVNFKEdMWCkKKyNpbmNsdWRlICJHTENv
bnRleHRHTFguaCIKKyNpbmNsdWRlIDxnc3QvZ2wveDExL2dzdGdsZGlzcGxheV94MTEuaD4KKyNl
bGlmIFVTRShFR0wpCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCisjaW5jbHVkZSA8Z3N0L2ds
L2VnbC9nc3RnbGRpc3BsYXlfZWdsLmg+CisjZW5kaWYKKworLy8gZ3N0Z2xhcGkuaCBtYXkgaW5j
bHVkZSBlZ2xwbGF0Zm9ybS5oIGFuZCBpdCBpbmNsdWRlcyBYLmgsIHdoaWNoCisvLyBkZWZpbmVz
IE5vbmUsIGJyZWFraW5nIE1lZGlhUGxheWVyOjpOb25lIGVudW0KKyNpZiBQTEFURk9STShYMTEp
ICYmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0VHTAorI3VuZGVmIE5vbmUKKyNlbmRpZgorCisjZW5k
aWYgLy8gVVNFKEdTVFJFQU1FUl9HTCkKKwogLy8gTWF4IGludGVydmFsIGluIHNlY29uZHMgdG8g
c3RheSBpbiB0aGUgUkVBRFkgc3RhdGUgb24gbWFudWFsCiAvLyBzdGF0ZSBjaGFuZ2UgcmVxdWVz
dHMuCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgZ1JlYWR5U3RhdGVUaW1lckludGVydmFsID0gNjA7
CkBAIC04NCw2ICsxMDcsMTEgQEAgc3RhdGljIGdib29sZWFuIG1lZGlhUGxheWVyUHJpdmF0ZU1l
c3NhZ2VDYWxsYmFjayhHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLAogICAgIHJldHVybiBw
bGF5ZXItPmhhbmRsZU1lc3NhZ2UobWVzc2FnZSk7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiBtZWRp
YVBsYXllclByaXZhdGVTeW5jTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1l
c3NhZ2UsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQoreworICAgIHJldHVy
biBwbGF5ZXItPmhhbmRsZVN5bmNNZXNzYWdlKG1lc3NhZ2UpOworfQorCiBzdGF0aWMgdm9pZCBt
ZWRpYVBsYXllclByaXZhdGVTb3VyY2VDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCosIEdQYXJhbVNw
ZWMqLCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKIHsKICAgICBwbGF5ZXIt
PnNvdXJjZUNoYW5nZWQoKTsKQEAgLTIxNyw2ICsyNDUsMTAgQEAgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoTWVkaWFQbGF5ZXIqIHBsYXll
cikKICNlbmRpZgogICAgICwgbV9yZXF1ZXN0ZWRTdGF0ZShHU1RfU1RBVEVfVk9JRF9QRU5ESU5H
KQogICAgICwgbV9taXNzaW5nUGx1Z2lucyhmYWxzZSkKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQor
ICAgICwgbV9nbENvbnRleHQobnVsbHB0cikKKyAgICAsIG1fZ2xEaXNwbGF5KG51bGxwdHIpCisj
ZW5kaWYKIHsKIH0KIApAQCAtOTA0LDYgKzkzNiw2MCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkKCkgY29u
cwogICAgIHJldHVybiB0aW1lUmFuZ2VzOwogfQogCitnYm9vbGVhbiBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmhhbmRsZVN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCit7Cisg
ICAgc3dpdGNoIChHU1RfTUVTU0FHRV9UWVBFKG1lc3NhZ2UpKSB7CisgICAgY2FzZSBHU1RfTUVT
U0FHRV9ORUVEX0NPTlRFWFQ6IHsKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgICAgICBjb25z
dCBnY2hhciogY29udGV4dFR5cGU7CisgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2NvbnRleHRf
dHlwZShtZXNzYWdlLCAmY29udGV4dFR5cGUpOworCisgICAgICAgIGlmICghbV9nbERpc3BsYXkp
IHsKKyNpZiBQTEFURk9STShYMTEpCisgICAgICAgICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xD
b250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCk7CisgICAgICAgICAgICBHc3RHTERpc3BsYXlYMTEq
IGdzdEdMRGlzcGxheSA9IGdzdF9nbF9kaXNwbGF5X3gxMV9uZXdfd2l0aF9kaXNwbGF5KGRpc3Bs
YXkpOworI2VsaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICAgICAgICAgIEVHTERpc3BsYXkgZGlz
cGxheSA9IFdheWxhbmREaXNwbGF5OjppbnN0YW5jZSgpLT5lZ2xEaXNwbGF5KCk7CisgICAgICAg
ICAgICBHc3RHTERpc3BsYXlFR0wqIGdzdEdMRGlzcGxheSA9IGdzdF9nbF9kaXNwbGF5X2VnbF9u
ZXdfd2l0aF9lZ2xfZGlzcGxheShkaXNwbGF5KTsKKyNlbHNlCisgICAgICAgICAgICByZXR1cm4g
RkFMU0U7CisjZW5kaWYKKworICAgICAgICAgICAgbV9nbERpc3BsYXkgPSByZWludGVycHJldF9j
YXN0PEdzdEdMRGlzcGxheSo+KGdzdEdMRGlzcGxheSk7CisgICAgICAgICAgICBHTENvbnRleHQq
IHdlYmtpdENvbnRleHQgPSBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCk7CisjaWYgVVNFKEdM
WCkKKyAgICAgICAgICAgIEdMWENvbnRleHQqIGdseFNoYXJpbmdDb250ZXh0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxHTFhDb250ZXh0Kj4od2Via2l0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpOwor
ICAgICAgICAgICAgaWYgKGdseFNoYXJpbmdDb250ZXh0ICYmICFtX2dsQ29udGV4dCkKKyAgICAg
ICAgICAgICAgICBtX2dsQ29udGV4dCA9IGdzdF9nbF9jb250ZXh0X25ld193cmFwcGVkKEdTVF9H
TF9ESVNQTEFZKGdzdEdMRGlzcGxheSksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3VpbnRwdHI+KGdseFNo
YXJpbmdDb250ZXh0KSwgR1NUX0dMX1BMQVRGT1JNX0dMWCwgR1NUX0dMX0FQSV9PUEVOR0wpOwor
I2VsaWYgVVNFKEVHTCkKKyAgICAgICAgICAgIEVHTENvbnRleHQqIGVnbFNoYXJpbmdDb250ZXh0
ID0gcmVpbnRlcnByZXRfY2FzdDxFR0xDb250ZXh0Kj4od2Via2l0Q29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCkpOworICAgICAgICAgICAgaWYgKGVnbFNoYXJpbmdDb250ZXh0ICYmICFtX2dsQ29u
dGV4dCkKKyAgICAgICAgICAgICAgICBtX2dsQ29udGV4dCA9IGdzdF9nbF9jb250ZXh0X25ld193
cmFwcGVkKEdTVF9HTF9ESVNQTEFZKGdzdEdMRGlzcGxheSksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3Vp
bnRwdHI+KGVnbFNoYXJpbmdDb250ZXh0KSwgR1NUX0dMX1BMQVRGT1JNX0VHTCwgR1NUX0dMX0FQ
SV9HTEVTMik7CisjZW5kaWYKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZ19zdHJjbXAwKGNv
bnRleHRUeXBlLCBHU1RfR0xfRElTUExBWV9DT05URVhUX1RZUEUpKSB7CisgICAgICAgICAgICBH
c3RDb250ZXh0KiBkaXNwbGF5Q29udGV4dCA9IGdzdF9jb250ZXh0X25ldyhHU1RfR0xfRElTUExB
WV9DT05URVhUX1RZUEUsIFRSVUUpOworICAgICAgICAgICAgZ3N0X2NvbnRleHRfc2V0X2dsX2Rp
c3BsYXkoZGlzcGxheUNvbnRleHQsIG1fZ2xEaXNwbGF5KTsKKyAgICAgICAgICAgIGdzdF9lbGVt
ZW50X3NldF9jb250ZXh0KEdTVF9FTEVNRU5UKG1lc3NhZ2UtPnNyYyksIGRpc3BsYXlDb250ZXh0
KTsKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisgICAgICAgIGlmICghZ19z
dHJjbXAwKGNvbnRleHRUeXBlLCAiZ3N0LmdsLmFwcF9jb250ZXh0IikpIHsKKyAgICAgICAgICAg
IEdzdENvbnRleHQqIGFwcENvbnRleHQgPSBnc3RfY29udGV4dF9uZXcoImdzdC5nbC5hcHBfY29u
dGV4dCIsIFRSVUUpOworICAgICAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rf
Y29udGV4dF93cml0YWJsZV9zdHJ1Y3R1cmUoYXBwQ29udGV4dCk7CisgICAgICAgICAgICBnc3Rf
c3RydWN0dXJlX3NldChzdHJ1Y3R1cmUsICJjb250ZXh0IiwgR1NUX0dMX1RZUEVfQ09OVEVYVCwg
bV9nbENvbnRleHQsIG51bGxwdHIpOworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X2NvbnRl
eHQoR1NUX0VMRU1FTlQobWVzc2FnZS0+c3JjKSwgYXBwQ29udGV4dCk7CisgICAgICAgICAgICBy
ZXR1cm4gVFJVRTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIH0KKyAg
ICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIEZBTFNFOworfQor
CiBnYm9vbGVhbiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0
TWVzc2FnZSogbWVzc2FnZSkKIHsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyOwpAQCAt
MTkzNSw2ICsyMDIxLDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0
ZUdTVFBsYXlCaW4oKQogICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3Bp
cGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGxheUJpbi5nZXQoKSkpKTsKICAgICBnc3Rf
YnVzX2FkZF9zaWduYWxfd2F0Y2goYnVzLmdldCgpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGJ1
cy5nZXQoKSwgIm1lc3NhZ2UiLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZU1lc3NhZ2VD
YWxsYmFjayksIHRoaXMpOworICAgIGdzdF9idXNfZW5hYmxlX3N5bmNfbWVzc2FnZV9lbWlzc2lv
bihidXMuZ2V0KCkpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnVzLmdldCgpLCAic3luYy1tZXNz
YWdlIiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZhdGVTeW5jTWVzc2FnZUNhbGxiYWNrKSwg
dGhpcyk7CiAKICAgICBnX29iamVjdF9zZXQobV9wbGF5QmluLmdldCgpLCAibXV0ZSIsIG1fcGxh
eWVyLT5tdXRlZCgpLCBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5oCmluZGV4IDM5MDUxNTRmNDNmN2FjZWIzNGRjNWNhOGVhNTExYmJjNjFlNDkx
NWYuLjg4MTlkNTBjMTNiNGFmODJlMjAxYzFiZWQyZTA5NTZiMThiN2YwMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTQ3LDYgKzQ3LDggQEAg
dHlwZWRlZiBzdHJ1Y3QgX0dzdEJ1ZmZlciBHc3RCdWZmZXI7CiB0eXBlZGVmIHN0cnVjdCBfR3N0
TWVzc2FnZSBHc3RNZXNzYWdlOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVu
dDsKIHR5cGVkZWYgc3RydWN0IF9Hc3RNcGVndHNTZWN0aW9uIEdzdE1wZWd0c1NlY3Rpb247Cit0
eXBlZGVmIHN0cnVjdCBfR3N0R0xDb250ZXh0IEdzdEdMQ29udGV4dDsKK3R5cGVkZWYgc3RydWN0
IF9Hc3RHTERpc3BsYXkgR3N0R0xEaXNwbGF5OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTY2LDYgKzY4LDcgQEAgcHVibGljOgogICAgIH5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIo
KTsKIAogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3RyYXIpOworICAgIGdib29sZWFuIGhhbmRsZVN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqKTsKICAg
ICBnYm9vbGVhbiBoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIGhhbmRsZVBs
dWdpbkluc3RhbGxlclJlc3VsdChHc3RJbnN0YWxsUGx1Z2luc1JldHVybik7CiAKQEAgLTI1MSw2
ICsyNTQsMTAgQEAgcHJpdmF0ZToKICNlbHNlCiAgICAgYm9vbCBpc01lZGlhU291cmNlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAg
R3N0R0xDb250ZXh0KiBtX2dsQ29udGV4dDsKKyAgICBHc3RHTERpc3BsYXkqIG1fZ2xEaXNwbGF5
OworI2VuZGlmCiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvRmluZEdTdHJlYW1l
ci5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlCmluZGV4IDc0NDQ3NjAz
MmM0ZmIxYzBlNTY4MzlmY2I2MWRlODM0MGM3NTNhMWQuLmFjZDEyNDMxNDU2ZDJmYWNjYWM1MWJi
ZThkZTBjMGU5NWYzNTVhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVy
LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlCkBAIC0xOSw2ICsx
OSw3IEBACiAjICBnc3RyZWFtZXItYXBwOiAgICAgICAgR1NUUkVBTUVSX0FQUF9JTkNMVURFX0RJ
UlMgYW5kIEdTVFJFQU1FUl9BUFBfTElCUkFSSUVTCiAjICBnc3RyZWFtZXItYXVkaW86ICAgICAg
R1NUUkVBTUVSX0FVRElPX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVBTUVSX0FVRElPX0xJQlJBUklF
UwogIyAgZ3N0cmVhbWVyLWZmdDogICAgICAgIEdTVFJFQU1FUl9GRlRfSU5DTFVERV9ESVJTIGFu
ZCBHU1RSRUFNRVJfRkZUX0xJQlJBUklFUworIyAgZ3N0cmVhbWVyLWdsOiAgICAgICAgIEdTVFJF
QU1FUl9HTF9JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1FUl9HTF9MSUJSQVJJRVMKICMgIGdzdHJl
YW1lci1tcGVndHM6ICAgICBHU1RSRUFNRVJfTVBFR1RTX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVB
TUVSX01QRUdUU19MSUJSQVJJRVMKICMgIGdzdHJlYW1lci1wYnV0aWxzOiAgICBHU1RSRUFNRVJf
UEJVVElMU19JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1FUl9QQlVUSUxTX0xJQlJBUklFUwogIyAg
Z3N0cmVhbWVyLXRhZzogICAgICAgIEdTVFJFQU1FUl9UQUdfSU5DTFVERV9ESVJTIGFuZCBHU1RS
RUFNRVJfVEFHX0xJQlJBUklFUwpAQCAtODQsNiArODUsNyBAQCBGSU5EX0dTVFJFQU1FUl9DT01Q
T05FTlQoR1NUUkVBTUVSX0JBU0UgZ3N0cmVhbWVyLWJhc2UtMS4wIGdzdGJhc2UtMS4wKQogRklO
RF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9BUFAgZ3N0cmVhbWVyLWFwcC0xLjAgZ3N0
YXBwLTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfQVVESU8gZ3N0cmVh
bWVyLWF1ZGlvLTEuMCBnc3RhdWRpby0xLjApCiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NU
UkVBTUVSX0ZGVCBnc3RyZWFtZXItZmZ0LTEuMCBnc3RmZnQtMS4wKQorRklORF9HU1RSRUFNRVJf
Q09NUE9ORU5UKEdTVFJFQU1FUl9HTCBnc3RyZWFtZXItZ2wtMS4wPj0xLjUuMCBnc3RnbC0xLjAp
CiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX01QRUdUUyBnc3RyZWFtZXItbXBl
Z3RzLTEuMD49MS40LjAgZ3N0bXBlZ3RzLTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChH
U1RSRUFNRVJfUEJVVElMUyBnc3RyZWFtZXItcGJ1dGlscy0xLjAgZ3N0cGJ1dGlscy0xLjApCiBG
SU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX1RBRyBnc3RyZWFtZXItdGFnLTEuMCBn
c3R0YWctMS4wKQpAQCAtMTE0LDYgKzExNiw4IEBAIG1hcmtfYXNfYWR2YW5jZWQoCiAgICAgR1NU
UkVBTUVSX0JBU0VfTElCUkFSSUVTCiAgICAgR1NUUkVBTUVSX0ZGVF9JTkNMVURFX0RJUlMKICAg
ICBHU1RSRUFNRVJfRkZUX0xJQlJBUklFUworICAgIEdTVFJFQU1FUl9HTF9JTkNMVURFX0RJUlMK
KyAgICBHU1RSRUFNRVJfR0xfTElCUkFSSUVTCiAgICAgR1NUUkVBTUVSX0lOQ0xVREVfRElSUwog
ICAgIEdTVFJFQU1FUl9MSUJSQVJJRVMKICAgICBHU1RSRUFNRVJfTVBFR1RTX0lOQ0xVREVfRElS
UwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCA1NGU1NGUzY2JiNzRiZGQyNGUyZDY0ODBlOGNkNjM4
YTI0OTc1NjQ2Li4wZTlhYTlhYjhiOTJkNTA5MWQ1MzRhMGMwYTZiNWY5ZWFkMmZlNzY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZQpAQCAtMjU3LDcgKzI1Nyw3IEBAIGlmIChFTkFCTEVfVklERU8gT1Ig
RU5BQkxFX1dFQl9BVURJTykKICAgICBzZXQoR1NUUkVBTUVSX0NPTVBPTkVOVFMgYXBwIHBidXRp
bHMpCiAgICAgYWRkX2RlZmluaXRpb25zKC1EV1RGX1VTRV9HU1RSRUFNRVIpCiAgICAgaWYgKEVO
QUJMRV9WSURFTykKLSAgICAgICAgbGlzdChBUFBFTkQgR1NUUkVBTUVSX0NPTVBPTkVOVFMgdmlk
ZW8gbXBlZ3RzIHRhZykKKyAgICAgICAgbGlzdChBUFBFTkQgR1NUUkVBTUVSX0NPTVBPTkVOVFMg
dmlkZW8gbXBlZ3RzIHRhZyBnbCkKICAgICBlbmRpZiAoKQogCiAgICAgaWYgKEVOQUJMRV9XRUJf
QVVESU8pCkBAIC0yNzEsNiArMjcxLDExIEBAIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dF
Ql9BVURJTykKICAgICAgICAgYWRkX2RlZmluaXRpb25zKC1EV1RGX1VTRV9HU1RSRUFNRVJfTVBF
R1RTKQogICAgICAgICBzZXQoVVNFX0dTVFJFQU1FUl9NUEVHVFMgVFJVRSkKICAgICBlbmRpZiAo
KQorCisgICAgaWYgKFBDX0dTVFJFQU1FUl9HTF9GT1VORCkKKyAgICAgICAgYWRkX2RlZmluaXRp
b25zKC1EV1RGX1VTRV9HU1RSRUFNRVJfR0wpCisgICAgICAgIHNldChVU0VfR1NUUkVBTUVSX0dM
IFRSVUUpCisgICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKIGlmIChFTkFCTEVfV0FZTEFORF9UQVJH
RVQpCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYTc1YTc4MDhiNzkz
ZGNiNTFmYmZjMDBlYWQyZGNkMDRjYzY5ZWIwMC4uMDdkYjFlZjk5MmIyZDg4MTBhNDM1NWY4MmVm
ZTRhMzA3Yjc0YjM4YiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDE1LTAzLTE0ICBWw61jdG9yIE1hbnVlbCBKw6FxdWV6IExlYWwgIDx2
amFxdWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQnVnIDE0MjY5MyAtIFtHU3RyZWFtZXJdIHNo
YXJlIEdMIGNvbnRleHQgaW4gcGlwZWxpbmUKKworICAgICAgICBbR1N0cmVhbWVyXSBzaGFyZSBH
TCBjb250ZXh0IGluIHBpcGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDI2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgc2VhcmNoIG9mIGdzdHJlYW1lci1nbCBsaWJyYXJ5IGluIHRoZSBH
U3RyZWFtZXIgaW5zdGFsbGF0aW9uLiBJZgorICAgICAgICBpdCBpcyBmb3VuZCwgV1RGX1VTRV9H
U1RSRUFNRVJfR0wgbWFjcm8gaXMgZGVmaW5lZC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9G
aW5kR1N0cmVhbWVyLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNt
YWtlOgorCiAyMDE1LTAzLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgYW4gb3B0aW9uIHRvIGVuYWJsZSBNaW5pQnJvd3Nl
ciBmb3Igbm9uIGRldmVsb3BlciBidWlsZHMgYW5kIGFsd2F5cyBpbnN0YWxsIGl0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248650</attachid>
            <date>2015-03-14 08:37:48 -0700</date>
            <delta_ts>2015-03-25 08:00:39 -0700</delta_ts>
            <desc>hack for adding glfiltersobel as video filter in the pipeline</desc>
            <filename>0001-add-sobel-as-video-filter.patch</filename>
            <type>text/plain</type>
            <size>1317</size>
            <attacher name="Víctor M. Jáquez L.">vjaquez</attacher>
            
              <data encoding="base64">RnJvbSBhNjZkNDAyYWRjNThhZGYzYmI1ZGJmZDFlMDA2YzE0NGY4OGI1NTU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Vj1DMz1BRGN0b3I9MjBNYW51ZWw9MjBKPUMz
PUExcXVlej0yMExlYWw/PQogPHZqYXF1ZXpAaWdhbGlhLmNvbT4KRGF0ZTogU2F0LCAxNCBNYXIg
MjAxNSAxNjozMzo1NyArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIGFkZCBzb2JlbCBhcyB2aWRlbyBm
aWx0ZXIKCi0tLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCA1ICsrKysrCiAxIGZpbGUgY2hhbmdlZCwgNSBpbnNl
cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCBkYTVlNDUwLi41NzhjZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjAyNCw2ICsyMDI0LDExIEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKCkKICAgICBnc3RfYnVz
X2VuYWJsZV9zeW5jX21lc3NhZ2VfZW1pc3Npb24oYnVzLmdldCgpKTsKICAgICBnX3NpZ25hbF9j
b25uZWN0KGJ1cy5nZXQoKSwgInN5bmMtbWVzc2FnZSIsIEdfQ0FMTEJBQ0sobWVkaWFQbGF5ZXJQ
cml2YXRlU3luY01lc3NhZ2VDYWxsYmFjayksIHRoaXMpOwogCisgICAgeworICAgICAgICBHc3RF
bGVtZW50KiBzb2JlbCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZ2xmaWx0ZXJzb2JlbCIs
ICJzb2JlbCIpOworICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5QmluLmdldCgpLCAidmlkZW8t
ZmlsdGVyIiwgc29iZWwsIG51bGxwdHIpOworICAgIH0KKwogICAgIGdfb2JqZWN0X3NldChtX3Bs
YXlCaW4uZ2V0KCksICJtdXRlIiwgbV9wbGF5ZXItPm11dGVkKCksIE5VTEwpOwogCiAgICAgZ19z
aWduYWxfY29ubmVjdChtX3BsYXlCaW4uZ2V0KCksICJub3RpZnk6OnNvdXJjZSIsIEdfQ0FMTEJB
Q0sobWVkaWFQbGF5ZXJQcml2YXRlU291cmNlQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7Ci0tIAoy
LjEuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248651</attachid>
            <date>2015-03-14 09:50:39 -0700</date>
            <delta_ts>2015-03-25 08:00:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142693-20150314175011.patch</filename>
            <type>text/plain</type>
            <size>13908</size>
            <attacher name="Víctor M. Jáquez L.">vjaquez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY1MTEwYWNlMjcyODM4
YTYwYjhlOTUwNzVmZTUyYWQ1NTE3MDY1Zi4uNGFkMDY0NGQ0YjM5MWEzMjU4NmVmZThiNjdmNGFm
NjdkMDk0M2M1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTAzLTE0ICBWw61j
dG9yIE1hbnVlbCBKw6FxdWV6IExlYWwgIDx2amFxdWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dTdHJlYW1lcl0gc2hhcmUgR0wgY29udGV4dCBpbiBwaXBlbGluZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNjkzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR3N0R0wgZWxlbWVudHMgaW4gYSBwaXBl
bGluZSBuZWVkIHRvIGJlIGF3YXJlIG9mIHRoZSBhcHBsaWNhdGlvbidzCisgICAgICAgIGRpc3Bs
YXkgYW5kIGl0cyBHTCBjb250ZXh0LiBUaGlzIGluZm9ybWF0aW9uIGlzIHNoYXJlZCB0aHJvdWdo
IGNvbnRleHQKKyAgICAgICAgbWVzc2FnZXMgYmV0d2VlbiB0aGUgcGlwZWxpbmUgYW5kIHRoZSBi
cm93c2VyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc2hhcmVzIHRoaXMgY29udGV4dCB0aHJvdWdo
IGEgR1N0cmVhbWVyJ3Mgc3luY2hyb25vdXMKKyAgICAgICAgbWVzc2FnZSwgdXNpbmcgdGhlIEdM
IGluZm9ybWF0aW9uIGhlbGQgaW4gdGhlIHdlYiBwcm9jZXNzLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggaXMgYmFzZWQgb24gdGhlIHdvcmsgb2YgUGhpbGlwcGUgTm9ybWFuZCBmb3IgQnVnIDEzODU2
Mi4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIHBsYXRmb3JtIHNwZWNp
ZmljIGFuZCBpdCBkZXBlbmRzIGluIHRoZQorICAgICAgICBydW4tdGltZSBhdmFpbGFiaWxpdHkg
YW5kIGNvbmZpZ3VyYXRpb25zIG9mIEdzdEdMIGVsZW1lbnRzLgorCisgICAgICAgICogUGxhdGZv
cm1HVEsuY21ha2U6IGFwcGVuZHMgdGhlIEdzdEdMIGhlYWRlciBmaWxlcyBpbiB0aGUgaW5jbHVk
ZQorICAgICAgICBkaXJlY3Rvcmllcy4gQWxzbyBpdHMgbGlicmFyeSBkaXJlY3RvcnkgaXMgYXBw
ZW5kZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZWRpYVBsYXllclByaXZh
dGVTeW5jTWVzc2FnZUNhbGxiYWNrKTogTmV3IGNhbGxiYWNrIGZ1bmN0aW9uLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIpOgorICAgICAgICBJbml0aWFsaXplIHRoZSBuZXcgY2xhc3MgYXR0cmlidXRlcy4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlU3lu
Y01lc3NhZ2UpOiBOZXcgbWV0aG9kCisgICAgICAgIGZvciBoYW5kbGluZyBzeW5jaHJvbm91cyBt
ZXNzYWdlcyBmcm9tIHRoZSBwaXBlbGluZS4gVGhpcyBtZXRob2QKKyAgICAgICAgY3VycmVudGx5
IG9ubHkgaGFuZGxlcyB0aGUgR0wgY29udGV4dCBzaGFyaW5nLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKTogQ29uZmlndXJl
cworICAgICAgICB0aGUgcGlwZWxpbmUncyBidXMgdG8gaGFuZGxlIHRoZSBzeW5jaHJvbm91cyBt
ZXNzYWdlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmg6IEFkZCBuZXcKKyAgICAgICAgY2xhc3MgbWV0aG9kcyBhbmQg
YXR0cmlidXRlcy4KKwogMjAxNS0wMy0xMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZm9sbG93LXVwIGZpeCB0byByMTgxNDI2LiBJ
bml0aWFsaXplIFRleHRQb3NpdGlvbiB3aXRoIHplcm9zIGluIGNhc2UgaXQgZ2V0cyB1c2VkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDYwZmYzM2IxZGFjZDE1YTVkMjUyNDM5OTEwZjdhMWVjMjVhYTBlM2YuLmMz
NjBlMjllMzc2NGNiZWU5NGM2N2M4ODE3ZjMyNDI1ODNlMTRmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNS0wMy0xNCAgVsOtY3RvciBNYW51ZWwgSsOhcXVleiBMZWFsICA8dmph
cXVlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIHNoYXJlIEdMIGNvbnRleHQg
aW4gcGlwZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MjY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwOiBFbmFibGUgWEluaXRU
aHJlYWRzKCkgaWYKKyAgICAgICAgR1NUUkVBTUVSX0dMIGlzIHVzZWQsIHNpbmNlIEdzdEdMIGVs
ZW1lbnRzIHVzZSBhbm90aGVyIHRocmVhZCBmb3IKKyAgICAgICAgcXVldWluZyBHTCBvcGVyYXRp
b25zLgorCiAyMDE1LTAzLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDYWNoZSB0cmF2ZXJzYWwgbWlzc2luZyBsYXJnZSBlbnRyaWVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtR1RLLmNtYWtlCmluZGV4IDQ1MjZjMDY2OGI5NjMwMzE5MzQ0NDM4NzMwMzU4NTkyMDkyMDNh
NjMuLjRmYWEyYWU1ZWQzN2Q4Y2VlMmY2MTA3NWZhNjM3YjE0ZGRjZTUzZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC0zNDYsNiArMzQ2LDE2IEBAIGlmIChFTkFCTEVfVklERU8pCiAg
ICAgICAgICAgICAke0dTVFJFQU1FUl9NUEVHVFNfTElCUkFSSUVTfQogICAgICAgICApCiAgICAg
ZW5kaWYgKCkKKworICAgIGlmIChVU0VfR1NUUkVBTUVSX0dMKQorICAgICAgICBsaXN0KEFQUEVO
RCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgICAgICR7R1NUUkVBTUVSX0dM
X0lOQ0xVREVfRElSU30KKyAgICAgICAgKQorCisgICAgICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVf
TElCUkFSSUVTCisgICAgICAgICAgICAke0dTVFJFQU1FUl9HTF9MSUJSQVJJRVN9CisgICAgICAg
ICkKKyAgICBlbmRpZiAoKQogZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9XRUJfQVVESU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGU3ZjQw
Zjk2ZjFjZDNkZmY5YWFiNjcwYjc2YTc4NDljZThhMzU4NGMuLjI1ZmZkMDg2ZGYxMjg2ZTBmNTBi
Zjg1OTc5ZGRhOTIyZGY3NzM0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCkBAIC02OCw2ICs2OCwyOCBAQAogI2luY2x1ZGUgIkF1ZGlvU291
cmNlUHJvdmlkZXJHU3RyZWFtZXIuaCIKICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkK
KyNpbmNsdWRlICJHTENvbnRleHQuaCIKKworI2RlZmluZSBHU1RfVVNFX1VOU1RBQkxFX0FQSQor
I2luY2x1ZGUgPGdzdC9nbC9nbC5oPgorI3VuZGVmIEdTVF9VU0VfVU5TVEFCTEVfQVBJCisKKyNp
ZiBVU0UoR0xYKQorI2luY2x1ZGUgIkdMQ29udGV4dEdMWC5oIgorI2luY2x1ZGUgPGdzdC9nbC94
MTEvZ3N0Z2xkaXNwbGF5X3gxMS5oPgorI2VsaWYgVVNFKEVHTCkKKyNpbmNsdWRlICJHTENvbnRl
eHRFR0wuaCIKKyNpbmNsdWRlIDxnc3QvZ2wvZWdsL2dzdGdsZGlzcGxheV9lZ2wuaD4KKyNlbmRp
ZgorCisvLyBnc3RnbGFwaS5oIG1heSBpbmNsdWRlIGVnbHBsYXRmb3JtLmggYW5kIGl0IGluY2x1
ZGVzIFguaCwgd2hpY2gKKy8vIGRlZmluZXMgTm9uZSwgYnJlYWtpbmcgTWVkaWFQbGF5ZXI6Ok5v
bmUgZW51bQorI2lmIFBMQVRGT1JNKFgxMSkgJiYgR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMCisj
dW5kZWYgTm9uZQorI2VuZGlmCisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUl9HTCkKKwogLy8gTWF4
IGludGVydmFsIGluIHNlY29uZHMgdG8gc3RheSBpbiB0aGUgUkVBRFkgc3RhdGUgb24gbWFudWFs
CiAvLyBzdGF0ZSBjaGFuZ2UgcmVxdWVzdHMuCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgZ1JlYWR5
U3RhdGVUaW1lckludGVydmFsID0gNjA7CkBAIC04NCw2ICsxMDYsMTEgQEAgc3RhdGljIGdib29s
ZWFuIG1lZGlhUGxheWVyUHJpdmF0ZU1lc3NhZ2VDYWxsYmFjayhHc3RCdXMqLCBHc3RNZXNzYWdl
KiBtZXNzYWdlLAogICAgIHJldHVybiBwbGF5ZXItPmhhbmRsZU1lc3NhZ2UobWVzc2FnZSk7CiB9
CiAKK3N0YXRpYyBnYm9vbGVhbiBtZWRpYVBsYXllclByaXZhdGVTeW5jTWVzc2FnZUNhbGxiYWNr
KEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ciogcGxheWVyKQoreworICAgIHJldHVybiBwbGF5ZXItPmhhbmRsZVN5bmNNZXNzYWdlKG1lc3Nh
Z2UpOworfQorCiBzdGF0aWMgdm9pZCBtZWRpYVBsYXllclByaXZhdGVTb3VyY2VDaGFuZ2VkQ2Fs
bGJhY2soR09iamVjdCosIEdQYXJhbVNwZWMqLCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIq
IHBsYXllcikKIHsKICAgICBwbGF5ZXItPnNvdXJjZUNoYW5nZWQoKTsKQEAgLTIxNyw2ICsyNDQs
MTAgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikKICNlbmRpZgogICAgICwgbV9yZXF1ZXN0ZWRTdGF0
ZShHU1RfU1RBVEVfVk9JRF9QRU5ESU5HKQogICAgICwgbV9taXNzaW5nUGx1Z2lucyhmYWxzZSkK
KyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgICwgbV9nbENvbnRleHQobnVsbHB0cikKKyAgICAs
IG1fZ2xEaXNwbGF5KG51bGxwdHIpCisjZW5kaWYKIHsKIH0KIApAQCAtOTA0LDYgKzkzNSw2MCBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmJ1ZmZlcmVkKCkgY29ucwogICAgIHJldHVybiB0aW1lUmFuZ2VzOwogfQogCitn
Ym9vbGVhbiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVN5bmNNZXNzYWdlKEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgc3dpdGNoIChHU1RfTUVTU0FHRV9UWVBFKG1lc3Nh
Z2UpKSB7CisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBjYXNlIEdTVF9NRVNTQUdFX05FRURf
Q09OVEVYVDogeworICAgICAgICBjb25zdCBnY2hhciogY29udGV4dFR5cGU7CisgICAgICAgIGdz
dF9tZXNzYWdlX3BhcnNlX2NvbnRleHRfdHlwZShtZXNzYWdlLCAmY29udGV4dFR5cGUpOworCisg
ICAgICAgIGlmICghbV9nbERpc3BsYXkpIHsKKyNpZiBQTEFURk9STShYMTEpCisgICAgICAgICAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCk7CisgICAg
ICAgICAgICBHc3RHTERpc3BsYXlYMTEqIGdzdEdMRGlzcGxheSA9IGdzdF9nbF9kaXNwbGF5X3gx
MV9uZXdfd2l0aF9kaXNwbGF5KGRpc3BsYXkpOworI2VsaWYgUExBVEZPUk0oV0FZTEFORCkKKyAg
ICAgICAgICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IFdheWxhbmREaXNwbGF5OjppbnN0YW5jZSgp
LT5lZ2xEaXNwbGF5KCk7CisgICAgICAgICAgICBHc3RHTERpc3BsYXlFR0wqIGdzdEdMRGlzcGxh
eSA9IGdzdF9nbF9kaXNwbGF5X2VnbF9uZXdfd2l0aF9lZ2xfZGlzcGxheShkaXNwbGF5KTsKKyNl
bHNlCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisjZW5kaWYKKworICAgICAgICAgICAgbV9n
bERpc3BsYXkgPSByZWludGVycHJldF9jYXN0PEdzdEdMRGlzcGxheSo+KGdzdEdMRGlzcGxheSk7
CisgICAgICAgICAgICBHTENvbnRleHQqIHdlYmtpdENvbnRleHQgPSBHTENvbnRleHQ6OnNoYXJp
bmdDb250ZXh0KCk7CisjaWYgVVNFKEdMWCkKKyAgICAgICAgICAgIEdMWENvbnRleHQqIGdseFNo
YXJpbmdDb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxHTFhDb250ZXh0Kj4od2Via2l0Q29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCkpOworICAgICAgICAgICAgaWYgKGdseFNoYXJpbmdDb250ZXh0
ICYmICFtX2dsQ29udGV4dCkKKyAgICAgICAgICAgICAgICBtX2dsQ29udGV4dCA9IGdzdF9nbF9j
b250ZXh0X25ld193cmFwcGVkKEdTVF9HTF9ESVNQTEFZKGdzdEdMRGlzcGxheSksIHJlaW50ZXJw
cmV0X2Nhc3Q8Z3VpbnRwdHI+KGdseFNoYXJpbmdDb250ZXh0KSwgR1NUX0dMX1BMQVRGT1JNX0dM
WCwgR1NUX0dMX0FQSV9PUEVOR0wpOworI2VsaWYgVVNFKEVHTCkKKyAgICAgICAgICAgIEVHTENv
bnRleHQqIGVnbFNoYXJpbmdDb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxFR0xDb250ZXh0Kj4o
d2Via2l0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpOworICAgICAgICAgICAgaWYgKGVnbFNo
YXJpbmdDb250ZXh0ICYmICFtX2dsQ29udGV4dCkKKyAgICAgICAgICAgICAgICBtX2dsQ29udGV4
dCA9IGdzdF9nbF9jb250ZXh0X25ld193cmFwcGVkKEdTVF9HTF9ESVNQTEFZKGdzdEdMRGlzcGxh
eSksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3VpbnRwdHI+KGVnbFNoYXJpbmdDb250ZXh0KSwgR1NUX0dM
X1BMQVRGT1JNX0VHTCwgR1NUX0dMX0FQSV9HTEVTMik7CisjZW5kaWYKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghZ19zdHJjbXAwKGNvbnRleHRUeXBlLCBHU1RfR0xfRElTUExBWV9DT05URVhU
X1RZUEUpKSB7CisgICAgICAgICAgICBHc3RDb250ZXh0KiBkaXNwbGF5Q29udGV4dCA9IGdzdF9j
b250ZXh0X25ldyhHU1RfR0xfRElTUExBWV9DT05URVhUX1RZUEUsIFRSVUUpOworICAgICAgICAg
ICAgZ3N0X2NvbnRleHRfc2V0X2dsX2Rpc3BsYXkoZGlzcGxheUNvbnRleHQsIG1fZ2xEaXNwbGF5
KTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9jb250ZXh0KEdTVF9FTEVNRU5UKG1lc3Nh
Z2UtPnNyYyksIGRpc3BsYXlDb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAg
ICAgICB9CisgICAgICAgIGlmICghZ19zdHJjbXAwKGNvbnRleHRUeXBlLCAiZ3N0LmdsLmFwcF9j
b250ZXh0IikpIHsKKyAgICAgICAgICAgIEdzdENvbnRleHQqIGFwcENvbnRleHQgPSBnc3RfY29u
dGV4dF9uZXcoImdzdC5nbC5hcHBfY29udGV4dCIsIFRSVUUpOworICAgICAgICAgICAgR3N0U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY29udGV4dF93cml0YWJsZV9zdHJ1Y3R1cmUoYXBwQ29u
dGV4dCk7CisgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX3NldChzdHJ1Y3R1cmUsICJjb250ZXh0
IiwgR1NUX0dMX1RZUEVfQ09OVEVYVCwgbV9nbENvbnRleHQsIG51bGxwdHIpOworICAgICAgICAg
ICAgZ3N0X2VsZW1lbnRfc2V0X2NvbnRleHQoR1NUX0VMRU1FTlQobWVzc2FnZS0+c3JjKSwgYXBw
Q29udGV4dCk7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICB9CisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUl9HTCkKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIEZBTFNFOworfQorCiBnYm9vbGVhbiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVz
c2FnZSkKIHsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyOwpAQCAtMTkzNSw2ICsyMDIw
LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4o
KQogICAgIEdSZWZQdHI8R3N0QnVzPiBidXMgPSBhZG9wdEdSZWYoZ3N0X3BpcGVsaW5lX2dldF9i
dXMoR1NUX1BJUEVMSU5FKG1fcGxheUJpbi5nZXQoKSkpKTsKICAgICBnc3RfYnVzX2FkZF9zaWdu
YWxfd2F0Y2goYnVzLmdldCgpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGJ1cy5nZXQoKSwgIm1l
c3NhZ2UiLCBHX0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZU1lc3NhZ2VDYWxsYmFjayksIHRo
aXMpOworICAgIGdzdF9idXNfZW5hYmxlX3N5bmNfbWVzc2FnZV9lbWlzc2lvbihidXMuZ2V0KCkp
OworICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnVzLmdldCgpLCAic3luYy1tZXNzYWdlIiwgR19DQUxM
QkFDSyhtZWRpYVBsYXllclByaXZhdGVTeW5jTWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CiAKICAg
ICBnX29iamVjdF9zZXQobV9wbGF5QmluLmdldCgpLCAibXV0ZSIsIG1fcGxheWVyLT5tdXRlZCgp
LCBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
CmluZGV4IDM5MDUxNTRmNDNmN2FjZWIzNGRjNWNhOGVhNTExYmJjNjFlNDkxNWYuLjg4MTlkNTBj
MTNiNGFmODJlMjAxYzFiZWQyZTA5NTZiMThiN2YwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTQ3LDYgKzQ3LDggQEAgdHlwZWRlZiBzdHJ1
Y3QgX0dzdEJ1ZmZlciBHc3RCdWZmZXI7CiB0eXBlZGVmIHN0cnVjdCBfR3N0TWVzc2FnZSBHc3RN
ZXNzYWdlOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVudDsKIHR5cGVkZWYg
c3RydWN0IF9Hc3RNcGVndHNTZWN0aW9uIEdzdE1wZWd0c1NlY3Rpb247Cit0eXBlZGVmIHN0cnVj
dCBfR3N0R0xDb250ZXh0IEdzdEdMQ29udGV4dDsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTERpc3Bs
YXkgR3N0R0xEaXNwbGF5OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY2LDYgKzY4LDcg
QEAgcHVibGljOgogICAgIH5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIoKTsKIAogICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOworICAg
IGdib29sZWFuIGhhbmRsZVN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqKTsKICAgICBnYm9vbGVhbiBo
YW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIGhhbmRsZVBsdWdpbkluc3RhbGxl
clJlc3VsdChHc3RJbnN0YWxsUGx1Z2luc1JldHVybik7CiAKQEAgLTI1MSw2ICsyNTQsMTAgQEAg
cHJpdmF0ZToKICNlbHNlCiAgICAgYm9vbCBpc01lZGlhU291cmNlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgR3N0R0xDb250ZXh0
KiBtX2dsQ29udGV4dDsKKyAgICBHc3RHTERpc3BsYXkqIG1fZ2xEaXNwbGF5OworI2VuZGlmCiB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9j
ZXNzTWFpbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNz
TWFpbkd0ay5jcHAKaW5kZXggZTJiNzg1YmUzOGQzZjY3OGU0MGVjZDVkM2MyYzRiYzY4ZGZlMGMz
ZC4uMjdlMWUzMDZlMTQ4OTFlODBmYzBmYjJmYTZlYTcxMTcwMDg5ZWRhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcApAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzbGVlcCgzMCk7CiAjZW5kaWYKIAot
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkgJiYgUExBVEZPUk0oWDExKQor
I2lmIChVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpIHx8IFVTRShHU1RSRUFNRVJf
R0wpKSAmJiBQTEFURk9STShYMTEpCiAgICAgICAgIFhJbml0VGhyZWFkcygpOwogI2VuZGlmCiAg
ICAgICAgIGd0a19pbml0KG51bGxwdHIsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL0ZpbmRHU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvY21ha2UvRmluZEdTdHJlYW1lci5jbWFr
ZQppbmRleCA3NDQ0NzYwMzJjNGZiMWMwZTU2ODM5ZmNiNjFkZTgzNDBjNzUzYTFkLi5hY2QxMjQz
MTQ1NmQyZmFjY2FjNTFiYmU4ZGUwYzBlOTVmMzU1YTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21h
a2UvRmluZEdTdHJlYW1lci5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvRmluZEdTdHJlYW1lci5j
bWFrZQpAQCAtMTksNiArMTksNyBAQAogIyAgZ3N0cmVhbWVyLWFwcDogICAgICAgIEdTVFJFQU1F
Ul9BUFBfSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfQVBQX0xJQlJBUklFUwogIyAgZ3N0cmVh
bWVyLWF1ZGlvOiAgICAgIEdTVFJFQU1FUl9BVURJT19JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1F
Ul9BVURJT19MSUJSQVJJRVMKICMgIGdzdHJlYW1lci1mZnQ6ICAgICAgICBHU1RSRUFNRVJfRkZU
X0lOQ0xVREVfRElSUyBhbmQgR1NUUkVBTUVSX0ZGVF9MSUJSQVJJRVMKKyMgIGdzdHJlYW1lci1n
bDogICAgICAgICBHU1RSRUFNRVJfR0xfSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfR0xfTElC
UkFSSUVTCiAjICBnc3RyZWFtZXItbXBlZ3RzOiAgICAgR1NUUkVBTUVSX01QRUdUU19JTkNMVURF
X0RJUlMgYW5kIEdTVFJFQU1FUl9NUEVHVFNfTElCUkFSSUVTCiAjICBnc3RyZWFtZXItcGJ1dGls
czogICAgR1NUUkVBTUVSX1BCVVRJTFNfSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfUEJVVElM
U19MSUJSQVJJRVMKICMgIGdzdHJlYW1lci10YWc6ICAgICAgICBHU1RSRUFNRVJfVEFHX0lOQ0xV
REVfRElSUyBhbmQgR1NUUkVBTUVSX1RBR19MSUJSQVJJRVMKQEAgLTg0LDYgKzg1LDcgQEAgRklO
RF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9CQVNFIGdzdHJlYW1lci1iYXNlLTEuMCBn
c3RiYXNlLTEuMCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfQVBQIGdzdHJl
YW1lci1hcHAtMS4wIGdzdGFwcC0xLjApCiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVB
TUVSX0FVRElPIGdzdHJlYW1lci1hdWRpby0xLjAgZ3N0YXVkaW8tMS4wKQogRklORF9HU1RSRUFN
RVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9GRlQgZ3N0cmVhbWVyLWZmdC0xLjAgZ3N0ZmZ0LTEuMCkK
K0ZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfR0wgZ3N0cmVhbWVyLWdsLTEuMD49
MS41LjAgZ3N0Z2wtMS4wKQogRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9NUEVH
VFMgZ3N0cmVhbWVyLW1wZWd0cy0xLjA+PTEuNC4wIGdzdG1wZWd0cy0xLjApCiBGSU5EX0dTVFJF
QU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX1BCVVRJTFMgZ3N0cmVhbWVyLXBidXRpbHMtMS4wIGdz
dHBidXRpbHMtMS4wKQogRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl9UQUcgZ3N0
cmVhbWVyLXRhZy0xLjAgZ3N0dGFnLTEuMCkKQEAgLTExNCw2ICsxMTYsOCBAQCBtYXJrX2FzX2Fk
dmFuY2VkKAogICAgIEdTVFJFQU1FUl9CQVNFX0xJQlJBUklFUwogICAgIEdTVFJFQU1FUl9GRlRf
SU5DTFVERV9ESVJTCiAgICAgR1NUUkVBTUVSX0ZGVF9MSUJSQVJJRVMKKyAgICBHU1RSRUFNRVJf
R0xfSU5DTFVERV9ESVJTCisgICAgR1NUUkVBTUVSX0dMX0xJQlJBUklFUwogICAgIEdTVFJFQU1F
Ul9JTkNMVURFX0RJUlMKICAgICBHU1RSRUFNRVJfTElCUkFSSUVTCiAgICAgR1NUUkVBTUVSX01Q
RUdUU19JTkNMVURFX0RJUlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNt
YWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggNTRlNTRlM2NiYjc0YmRk
MjRlMmQ2NDgwZThjZDYzOGEyNDk3NTY0Ni4uMGU5YWE5YWI4YjkyZDUwOTFkNTM0YTBjMGE2YjVm
OWVhZDJmZTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysr
IGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTI1Nyw3ICsyNTcsNyBAQCBpZiAo
RU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgc2V0KEdTVFJFQU1FUl9DT01Q
T05FTlRTIGFwcCBwYnV0aWxzKQogICAgIGFkZF9kZWZpbml0aW9ucygtRFdURl9VU0VfR1NUUkVB
TUVSKQogICAgIGlmIChFTkFCTEVfVklERU8pCi0gICAgICAgIGxpc3QoQVBQRU5EIEdTVFJFQU1F
Ul9DT01QT05FTlRTIHZpZGVvIG1wZWd0cyB0YWcpCisgICAgICAgIGxpc3QoQVBQRU5EIEdTVFJF
QU1FUl9DT01QT05FTlRTIHZpZGVvIG1wZWd0cyB0YWcgZ2wpCiAgICAgZW5kaWYgKCkKIAogICAg
IGlmIChFTkFCTEVfV0VCX0FVRElPKQpAQCAtMjcxLDYgKzI3MSwxMSBAQCBpZiAoRU5BQkxFX1ZJ
REVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgICAgIGFkZF9kZWZpbml0aW9ucygtRFdURl9V
U0VfR1NUUkVBTUVSX01QRUdUUykKICAgICAgICAgc2V0KFVTRV9HU1RSRUFNRVJfTVBFR1RTIFRS
VUUpCiAgICAgZW5kaWYgKCkKKworICAgIGlmIChQQ19HU1RSRUFNRVJfR0xfRk9VTkQpCisgICAg
ICAgIGFkZF9kZWZpbml0aW9ucygtRFdURl9VU0VfR1NUUkVBTUVSX0dMKQorICAgICAgICBzZXQo
VVNFX0dTVFJFQU1FUl9HTCBUUlVFKQorICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCiBpZiAoRU5B
QkxFX1dBWUxBTkRfVEFSR0VUKQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmlu
ZGV4IGE3NWE3ODA4Yjc5M2RjYjUxZmJmYzAwZWFkMmRjZDA0Y2M2OWViMDAuLjE3MDc0MjJkMTA4
Mjk3YzQ0M2M0NGE2NDcwYWVmMWVhYTYxMDU3ZjIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysg
Yi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0wMy0xNCAgVsOtY3RvciBNYW51ZWwg
SsOhcXVleiBMZWFsICA8dmphcXVlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJd
IHNoYXJlIEdMIGNvbnRleHQgaW4gcGlwZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzZWFyY2ggb2YgZ3N0cmVhbWVyLWdsIGxpYnJhcnkg
aW4gdGhlIEdTdHJlYW1lciBpbnN0YWxsYXRpb24uIElmCisgICAgICAgIGl0IGlzIGZvdW5kLCBX
VEZfVVNFX0dTVFJFQU1FUl9HTCBtYWNybyBpcyBkZWZpbmVkLgorCisgICAgICAgICogU291cmNl
L2NtYWtlL0ZpbmRHU3RyZWFtZXIuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlv
bnNHVEsuY21ha2U6CisKIDIwMTUtMDMtMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBhbiBvcHRpb24gdG8gZW5hYmxlIE1p
bmlCcm93c2VyIGZvciBub24gZGV2ZWxvcGVyIGJ1aWxkcyBhbmQgYWx3YXlzIGluc3RhbGwgaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249402</attachid>
            <date>2015-03-25 07:59:30 -0700</date>
            <delta_ts>2015-03-30 09:12:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142693-20150325155852.patch</filename>
            <type>text/plain</type>
            <size>8266</size>
            <attacher name="Víctor M. Jáquez L.">vjaquez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzUwZjk5NjViMjZhNGYw
YzVhMDczY2UxYTdmYmVmNWM2NDE1NTc0Ni4uMGRlYWE5MDc1NmVjYmM3OTJkNGNkNTAxMDNlYmEw
NmI2NjFjMGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTAzLTI1ICBWw61j
dG9yIE1hbnVlbCBKw6FxdWV6IExlYWwgIDx2amFxdWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dTdHJlYW1lcl0gc2hhcmUgR0wgY29udGV4dCBpbiBwaXBlbGluZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNjkzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCwgaW5zdGVhZCBvZiBj
bHV0dGVyaW5nIHRoZSBHc3RHTCBhdHRyaWJ1dGVzIGNyZWF0aW9uIGluCisgICAgICAgIDo6aGFu
ZGxlU3luY01lc3NhZ2UoKSwgY3JlYXRlcyBhIG5ldyBtZXRob2QgOjpjcmVhdGVHc3RHTCgpLCB3
aGVyZQorICAgICAgICB0aG9zZSBhdHRyaWJ1dGVzIGFyZSBkZWZpbmVkLgorCisgICAgICAgIFRo
ZSBHc3RHTCBhdHRyaWJ1dGVzIGFyZSBub3cgR1JlZlB0cjw+IHRvIGF2b2lkIG1lbW9yeSBsZWFr
cy4KKworICAgICAgICBUaGUgR3N0R0xBUEkgaXMgbm93IHNldCBnaXZlbiBieSB0aGUgcHJlLXBy
b2Nlc3NvciBkaXJlY3RpdmVzLCBhbmQKKyAgICAgICAgY29kZSBpbiA6OkNyZWF0ZUdzdEdMKCkg
aXMgc2ltcGxlci4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIHBsYXRm
b3JtIHNwZWNpZmljIGFuZCBpdCBkZXBlbmRzIGluIHRoZQorICAgICAgICBydW4tdGltZSBhdmFp
bGFiaWxpdHkgYW5kIGNvbmZpZ3VyYXRpb25zIG9mIEdzdEdMIGVsZW1lbnRzLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcik6CisgICAgICAgIERvbid0IGluaXRpYWxpc2UgdGhl
IEdzdEdMIGF0dHJpYnV0ZXMgc2luY2UgYXJlIEdSZWZQdHI8PgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVTeW5jTWVzc2FnZSk6IENoYW5nZWQg
dGhlCisgICAgICAgIHNpZ25hdHVyZSB0byB1c2UgYm9vbCBpbnN0ZWFkIG9mIGdib29sZWFuLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHc3RH
TCk6IE5ldyBtZXRob2QuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorCiAyMDE1LTAzLTIzIFlvYXYgV2Vpc3MgIDx5
b2F2QHlvYXYud3M+CiAKICAgICAgICAgVXBkYXRlIGVtcHR5IGltYWdlIGNhbnZhcyB0ZXN0cyBh
bmQgZml4IGEgcmVsYXRlZCBidWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKaW5kZXggMjVmZmQwODZkZjEyODZlMGY1MGJmODU5NzlkZGE5MjJkZjc3
MzQ3ZC4uM2YwMDYxNjRhOGVlZWJjM2Y5NzkwODBjMzBmMDBhNzBjMzc5ZjYxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI0NCwxMCAr
MjQ0LDYgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikKICNlbmRpZgogICAgICwgbV9yZXF1ZXN0ZWRT
dGF0ZShHU1RfU1RBVEVfVk9JRF9QRU5ESU5HKQogICAgICwgbV9taXNzaW5nUGx1Z2lucyhmYWxz
ZSkKLSNpZiBVU0UoR1NUUkVBTUVSX0dMKQotICAgICwgbV9nbENvbnRleHQobnVsbHB0cikKLSAg
ICAsIG1fZ2xEaXNwbGF5KG51bGxwdHIpCi0jZW5kaWYKIHsKIH0KIApAQCAtOTM1LDcgKzkzMSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6YnVmZmVyZWQoKSBjb25zCiAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CiB9CiAK
LWdib29sZWFuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlU3luY01lc3NhZ2Uo
R3N0TWVzc2FnZSogbWVzc2FnZSkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpo
YW5kbGVTeW5jTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogewogICAgIHN3aXRjaCAoR1NU
X01FU1NBR0VfVFlQRShtZXNzYWdlKSkgewogI2lmIFVTRShHU1RSRUFNRVJfR0wpCkBAIC05NDMs
NDIgKzkzOSwyMiBAQCBnYm9vbGVhbiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRs
ZVN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGNvbnN0IGdjaGFyKiBj
b250ZXh0VHlwZTsKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfY29udGV4dF90eXBlKG1lc3Nh
Z2UsICZjb250ZXh0VHlwZSk7CiAKLSAgICAgICAgaWYgKCFtX2dsRGlzcGxheSkgewotI2lmIFBM
QVRGT1JNKFgxMSkKLSAgICAgICAgICAgIERpc3BsYXkqIGRpc3BsYXkgPSBHTENvbnRleHQ6OnNo
YXJlZFgxMURpc3BsYXkoKTsKLSAgICAgICAgICAgIEdzdEdMRGlzcGxheVgxMSogZ3N0R0xEaXNw
bGF5ID0gZ3N0X2dsX2Rpc3BsYXlfeDExX25ld193aXRoX2Rpc3BsYXkoZGlzcGxheSk7Ci0jZWxp
ZiBQTEFURk9STShXQVlMQU5EKQotICAgICAgICAgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gV2F5
bGFuZERpc3BsYXk6Omluc3RhbmNlKCktPmVnbERpc3BsYXkoKTsKLSAgICAgICAgICAgIEdzdEdM
RGlzcGxheUVHTCogZ3N0R0xEaXNwbGF5ID0gZ3N0X2dsX2Rpc3BsYXlfZWdsX25ld193aXRoX2Vn
bF9kaXNwbGF5KGRpc3BsYXkpOwotI2Vsc2UKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSNl
bmRpZgotCi0gICAgICAgICAgICBtX2dsRGlzcGxheSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0R0xE
aXNwbGF5Kj4oZ3N0R0xEaXNwbGF5KTsKLSAgICAgICAgICAgIEdMQ29udGV4dCogd2Via2l0Q29u
dGV4dCA9IEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKTsKLSNpZiBVU0UoR0xYKQotICAgICAg
ICAgICAgR0xYQ29udGV4dCogZ2x4U2hhcmluZ0NvbnRleHQgPSByZWludGVycHJldF9jYXN0PEdM
WENvbnRleHQqPih3ZWJraXRDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgICAgICAg
ICBpZiAoZ2x4U2hhcmluZ0NvbnRleHQgJiYgIW1fZ2xDb250ZXh0KQotICAgICAgICAgICAgICAg
IG1fZ2xDb250ZXh0ID0gZ3N0X2dsX2NvbnRleHRfbmV3X3dyYXBwZWQoR1NUX0dMX0RJU1BMQVko
Z3N0R0xEaXNwbGF5KSwgcmVpbnRlcnByZXRfY2FzdDxndWludHB0cj4oZ2x4U2hhcmluZ0NvbnRl
eHQpLCBHU1RfR0xfUExBVEZPUk1fR0xYLCBHU1RfR0xfQVBJX09QRU5HTCk7Ci0jZWxpZiBVU0Uo
RUdMKQotICAgICAgICAgICAgRUdMQ29udGV4dCogZWdsU2hhcmluZ0NvbnRleHQgPSByZWludGVy
cHJldF9jYXN0PEVHTENvbnRleHQqPih3ZWJraXRDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7
Ci0gICAgICAgICAgICBpZiAoZWdsU2hhcmluZ0NvbnRleHQgJiYgIW1fZ2xDb250ZXh0KQotICAg
ICAgICAgICAgICAgIG1fZ2xDb250ZXh0ID0gZ3N0X2dsX2NvbnRleHRfbmV3X3dyYXBwZWQoR1NU
X0dMX0RJU1BMQVkoZ3N0R0xEaXNwbGF5KSwgcmVpbnRlcnByZXRfY2FzdDxndWludHB0cj4oZWds
U2hhcmluZ0NvbnRleHQpLCBHU1RfR0xfUExBVEZPUk1fRUdMLCBHU1RfR0xfQVBJX0dMRVMyKTsK
LSNlbmRpZgotICAgICAgICB9CisgICAgICAgIGlmICghY3JlYXRlR3N0R0woKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAoIWdfc3RyY21wMChjb250ZXh0VHlwZSwg
R1NUX0dMX0RJU1BMQVlfQ09OVEVYVF9UWVBFKSkgewogICAgICAgICAgICAgR3N0Q29udGV4dCog
ZGlzcGxheUNvbnRleHQgPSBnc3RfY29udGV4dF9uZXcoR1NUX0dMX0RJU1BMQVlfQ09OVEVYVF9U
WVBFLCBUUlVFKTsKLSAgICAgICAgICAgIGdzdF9jb250ZXh0X3NldF9nbF9kaXNwbGF5KGRpc3Bs
YXlDb250ZXh0LCBtX2dsRGlzcGxheSk7CisgICAgICAgICAgICBnc3RfY29udGV4dF9zZXRfZ2xf
ZGlzcGxheShkaXNwbGF5Q29udGV4dCwgbV9nbERpc3BsYXkuZ2V0KCkpOwogICAgICAgICAgICAg
Z3N0X2VsZW1lbnRfc2V0X2NvbnRleHQoR1NUX0VMRU1FTlQobWVzc2FnZS0+c3JjKSwgZGlzcGxh
eUNvbnRleHQpOwotICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQorCiAgICAgICAgIGlmICghZ19zdHJjbXAwKGNvbnRleHRUeXBlLCAi
Z3N0LmdsLmFwcF9jb250ZXh0IikpIHsKICAgICAgICAgICAgIEdzdENvbnRleHQqIGFwcENvbnRl
eHQgPSBnc3RfY29udGV4dF9uZXcoImdzdC5nbC5hcHBfY29udGV4dCIsIFRSVUUpOwogICAgICAg
ICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY29udGV4dF93cml0YWJsZV9zdHJ1
Y3R1cmUoYXBwQ29udGV4dCk7Ci0gICAgICAgICAgICBnc3Rfc3RydWN0dXJlX3NldChzdHJ1Y3R1
cmUsICJjb250ZXh0IiwgR1NUX0dMX1RZUEVfQ09OVEVYVCwgbV9nbENvbnRleHQsIG51bGxwdHIp
OworICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQoc3RydWN0dXJlLCAiY29udGV4dCIsIEdT
VF9HTF9UWVBFX0NPTlRFWFQsIG1fZ2xDb250ZXh0LmdldCgpLCBudWxscHRyKTsKICAgICAgICAg
ICAgIGdzdF9lbGVtZW50X3NldF9jb250ZXh0KEdTVF9FTEVNRU5UKG1lc3NhZ2UtPnNyYyksIGFw
cENvbnRleHQpOwotICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC05ODYsNyArOTYyLDcg
QEAgZ2Jvb2xlYW4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVTeW5jTWVzc2Fn
ZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICByZXR1cm4gRkFMU0U7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBnYm9vbGVhbiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVz
c2FnZSkKQEAgLTIwNjgsNiArMjA0NCw0NiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlR1NUUGxheUJpbigpCiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QodmlkZW9T
aW5rUGFkLmdldCgpLCAibm90aWZ5OjpjYXBzIiwgR19DQUxMQkFDSyhtZWRpYVBsYXllclByaXZh
dGVWaWRlb1NpbmtDYXBzQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CiB9CiAKK2Jvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHc3RHTCgpCit7CisjaWYgVVNFKEdTVFJFQU1F
Ul9HTCkKKyAgICBpZiAobV9nbENvbnRleHQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
aWYgKCFtX2dsRGlzcGxheSkgeworI2lmIFBMQVRGT1JNKFgxMSkKKyAgICAgICAgRGlzcGxheSog
ZGlzcGxheSA9IEdMQ29udGV4dDo6c2hhcmVkWDExRGlzcGxheSgpOworICAgICAgICBtX2dsRGlz
cGxheSA9IEdTVF9HTF9ESVNQTEFZKGdzdF9nbF9kaXNwbGF5X3gxMV9uZXdfd2l0aF9kaXNwbGF5
KGRpc3BsYXkpKTsKKyNlbGlmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgICAgIEVHTERpc3BsYXkg
ZGlzcGxheSA9IFdheWxhbmREaXNwbGF5OjppbnN0YW5jZSgpLT5lZ2xEaXNwbGF5KCk7CisgICAg
ICAgIG1fZ2xEaXNwbGF5ID0gR1NUX0dMX0RJU1BMQVkoZ3N0X2dsX2Rpc3BsYXlfZWdsX25ld193
aXRoX2VnbF9kaXNwbGF5KGRpc3BsYXkpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorICAgIH0KKworICAgIGd1aW50cHRyIGNvbnRleHRIYW5kbGUgPSAwOworI2lmIFVT
RSgzRF9HUkFQSElDUykKKyAgICBjb250ZXh0SGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxndWlu
dHB0cj4oR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7Cisj
ZW5kaWYKKyAgICBpZiAoIWNvbnRleHRIYW5kbGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBHc3RHTFBsYXRmb3JtIGdsUGxhdGZvcm0gPSBHU1RfR0xfUExBVEZPUk1fQU5ZOworICAgIEdz
dEdMQVBJIGdsQVBJID0gR1NUX0dMX0FQSV9PUEVOR0w7CisjaWYgVVNFKEdMWCkKKyAgICBnbFBs
YXRmb3JtID0gR1NUX0dMX1BMQVRGT1JNX0dMWDsKKyNlbGlmIFVTRShFR0wpCisgICAgZ2xQbGF0
Zm9ybSA9IEdTVF9HTF9QTEFURk9STV9FR0w7CisjZW5kaWYKKyNpZiBVU0UoR0xFUzIpCisgICAg
Z2xBUEkgPSBHU1RfR0xfQVBJX0dMRVMyOworI2VuZGlmCisgICAgbV9nbENvbnRleHQgPSBnc3Rf
Z2xfY29udGV4dF9uZXdfd3JhcHBlZChtX2dsRGlzcGxheS5nZXQoKSwgY29udGV4dEhhbmRsZSwg
Z2xQbGF0Zm9ybSwgZ2xBUEkpOworI2VuZGlmCisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24o
KQogewogICAgIEdzdE1lc3NhZ2UqIG1lc3NhZ2UgPSBnc3RfbWVzc2FnZV9uZXdfcmVxdWVzdF9z
dGF0ZShHU1RfT0JKRUNUKG1fcGxheUJpbi5nZXQoKSksIEdTVF9TVEFURV9QQVVTRUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDg4MTlkNTBj
MTNiNGFmODJlMjAxYzFiZWQyZTA5NTZiMThiN2YwMTAuLjNiMTg1OTdhMGUyZWRhMTE5YmRhNzcx
MGE4YTJlMjgzNzYxNWE0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIH5NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIoKTsKIAogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUo
TWVkaWFFbmdpbmVSZWdpc3RyYXIpOwotICAgIGdib29sZWFuIGhhbmRsZVN5bmNNZXNzYWdlKEdz
dE1lc3NhZ2UqKTsKKyAgICBib29sIGhhbmRsZVN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqKTsKICAg
ICBnYm9vbGVhbiBoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIGhhbmRsZVBs
dWdpbkluc3RhbGxlclJlc3VsdChHc3RJbnN0YWxsUGx1Z2luc1JldHVybik7CiAKQEAgLTE1OCw2
ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXN5bmNTdGF0ZUNoYW5nZURvbmUoKTsKIAog
ICAgIHZvaWQgY3JlYXRlR1NUUGxheUJpbigpOworICAgIGJvb2wgY3JlYXRlR3N0R0woKTsKIAog
ICAgIGJvb2wgbG9hZE5leHRMb2NhdGlvbigpOwogICAgIHZvaWQgbWVkaWFMb2NhdGlvbkNoYW5n
ZWQoR3N0TWVzc2FnZSopOwpAQCAtMjU1LDggKzI1Niw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c01lZGlhU291cmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogI2lmIFVTRShH
U1RSRUFNRVJfR0wpCi0gICAgR3N0R0xDb250ZXh0KiBtX2dsQ29udGV4dDsKLSAgICBHc3RHTERp
c3BsYXkqIG1fZ2xEaXNwbGF5OworICAgIEdSZWZQdHI8R3N0R0xDb250ZXh0PiBtX2dsQ29udGV4
dDsKKyAgICBHUmVmUHRyPEdzdEdMRGlzcGxheT4gbV9nbERpc3BsYXk7CiAjZW5kaWYKIH07CiB9
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>