<?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>144521</bug_id>
          
          <creation_ts>2015-05-02 04:03:08 -0700</creation_ts>
          <short_desc>[X11] Add XUniquePtr and XUniqueResource to automatically free X resources</short_desc>
          <delta_ts>2015-05-12 04:12:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>144517</dependson>
    
    <dependson>144685</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>gustavo</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1091075</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-02 04:03:08 -0700</bug_when>
    <thetext>It simplifies the code and makes it more difficult to leak X resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091076</commentid>
    <comment_count>1</comment_count>
      <attachid>252228</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-02 04:15:55 -0700</bug_when>
    <thetext>Created attachment 252228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091218</commentid>
    <comment_count>2</comment_count>
      <attachid>252270</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-03 08:25:54 -0700</bug_when>
    <thetext>Created attachment 252270
Rebased patch

Just rebased, it should apply now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091219</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-03 08:35:59 -0700</bug_when>
    <thetext>hmm, it seems there&apos;s a PlatformDisplay already defined when building with GRAPHICS_SURFACE enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092167</commentid>
    <comment_count>4</comment_count>
      <attachid>252479</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-06 09:10:37 -0700</bug_when>
    <thetext>Created attachment 252479
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092170</commentid>
    <comment_count>5</comment_count>
      <attachid>252480</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-06 09:21:41 -0700</bug_when>
    <thetext>Created attachment 252480
Try to gix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092185</commentid>
    <comment_count>6</comment_count>
      <attachid>252483</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-06 09:43:26 -0700</bug_when>
    <thetext>Created attachment 252483
Try to fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092198</commentid>
    <comment_count>7</comment_count>
      <attachid>252485</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-06 09:52:46 -0700</bug_when>
    <thetext>Created attachment 252485
Try to fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092206</commentid>
    <comment_count>8</comment_count>
      <attachid>252487</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-06 10:07:29 -0700</bug_when>
    <thetext>Created attachment 252487
Try to fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092540</commentid>
    <comment_count>9</comment_count>
      <attachid>252487</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-05-07 01:26:25 -0700</bug_when>
    <thetext>Comment on attachment 252487
Try to fix EFL build

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

&gt; Source/WebCore/PlatformEfl.cmake:200
&gt; +    platform/graphics/x11/XUnique.cpp

Consider splitting XUnique.h into XUniquePtr.h and XUniqueResource.h, and renaming XUnique.cpp to XUniqueResource.cpp.

&gt; Source/WebCore/platform/graphics/x11/XUnique.h:124
&gt; +    long unsigned release() { long unsigned resource = m_resource; m_resource = 0; return resource; }

Use std::exchange() here. (It&apos;s C++14, but there&apos;s an implementation in StdLibExtras.h.)

&gt; Source/WebCore/platform/graphics/x11/XUnique.h:126
&gt; +    void reset(long unsigned resource = 0)

Instead of `resource.reset()`, I&apos;d prefer resource = nullptr;
If you consider it, it possible to implement by overloading the assignment operator:

    XUniqueResource&amp; operator=(std::nullptr_t) { ... }

&gt; Source/WebCore/platform/graphics/x11/XUnique.h:164
&gt; +typedef XUniqueResource&lt;XResource::Colormap&gt; XUniqueColormap;
&gt; +#if PLATFORM(GTK)
&gt; +typedef XUniqueResource&lt;XResource::Damage&gt; XUniqueDamage;
&gt; +#endif
&gt; +typedef XUniqueResource&lt;XResource::Pixmap&gt; XUniquePixmap;
&gt; +typedef XUniqueResource&lt;XResource::Window&gt; XUniqueWindow;
&gt; +#if USE(GLX)
&gt; +typedef XUniqueResource&lt;XResource::GLXPbuffer&gt; XUniqueGLXPbuffer;
&gt; +typedef XUniqueResource&lt;XResource::GLXPixmap&gt; XUniqueGLXPixmap;
&gt; +#endif
&gt; +
&gt; +// Give a name also to these XUniquePtr to avoid having to use the internal struct names (_XGC, __GLXcontextRec, ...).
&gt; +typedef XUniquePtr&lt;_XGC&gt; XUniqueGC;
&gt; +#if USE(GLX)
&gt; +typedef XUniquePtr&lt;__GLXcontextRec&gt; XUniqueGLXContext;
&gt; +#endif

Use type aliases:
using XUniqueWhatever = XUniqueHandler&lt;Whatever&gt;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092543</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-07 01:33:13 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 252487 [details]
&gt; Try to fix EFL build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252487&amp;action=review

Thanks for the review.

&gt; &gt; Source/WebCore/PlatformEfl.cmake:200
&gt; &gt; +    platform/graphics/x11/XUnique.cpp
&gt; 
&gt; Consider splitting XUnique.h into XUniquePtr.h and XUniqueResource.h, and
&gt; renaming XUnique.cpp to XUniqueResource.cpp.

Why? I think it&apos;s quite simple and reduces the amount of header includes.

&gt; &gt; Source/WebCore/platform/graphics/x11/XUnique.h:124
&gt; &gt; +    long unsigned release() { long unsigned resource = m_resource; m_resource = 0; return resource; }
&gt; 
&gt; Use std::exchange() here. (It&apos;s C++14, but there&apos;s an implementation in
&gt; StdLibExtras.h.)

Cool.

&gt; &gt; Source/WebCore/platform/graphics/x11/XUnique.h:126
&gt; &gt; +    void reset(long unsigned resource = 0)
&gt; 
&gt; Instead of `resource.reset()`, I&apos;d prefer resource = nullptr;
&gt; If you consider it, it possible to implement by overloading the assignment
&gt; operator:
&gt;
&gt;     XUniqueResource&amp; operator=(std::nullptr_t) { ... }

But this resource is not a pointer. I added reset for consistency with std::unique_ptr, and didn&apos;t add the assign operator for nullptr, because it doesn&apos;t store a pointer.

&gt; &gt; Source/WebCore/platform/graphics/x11/XUnique.h:164
&gt; &gt; +typedef XUniqueResource&lt;XResource::Colormap&gt; XUniqueColormap;
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt; +typedef XUniqueResource&lt;XResource::Damage&gt; XUniqueDamage;
&gt; &gt; +#endif
&gt; &gt; +typedef XUniqueResource&lt;XResource::Pixmap&gt; XUniquePixmap;
&gt; &gt; +typedef XUniqueResource&lt;XResource::Window&gt; XUniqueWindow;
&gt; &gt; +#if USE(GLX)
&gt; &gt; +typedef XUniqueResource&lt;XResource::GLXPbuffer&gt; XUniqueGLXPbuffer;
&gt; &gt; +typedef XUniqueResource&lt;XResource::GLXPixmap&gt; XUniqueGLXPixmap;
&gt; &gt; +#endif
&gt; &gt; +
&gt; &gt; +// Give a name also to these XUniquePtr to avoid having to use the internal struct names (_XGC, __GLXcontextRec, ...).
&gt; &gt; +typedef XUniquePtr&lt;_XGC&gt; XUniqueGC;
&gt; &gt; +#if USE(GLX)
&gt; &gt; +typedef XUniquePtr&lt;__GLXcontextRec&gt; XUniqueGLXContext;
&gt; &gt; +#endif
&gt; 
&gt; Use type aliases:
&gt; using XUniqueWhatever = XUniqueHandler&lt;Whatever&gt;;

Cool!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092599</commentid>
    <comment_count>11</comment_count>
      <attachid>252487</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-07 09:03:32 -0700</bug_when>
    <thetext>Comment on attachment 252487
Try to fix EFL build

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

&gt;&gt;&gt; Source/WebCore/PlatformEfl.cmake:200
&gt;&gt;&gt; +    platform/graphics/x11/XUnique.cpp
&gt;&gt; 
&gt;&gt; Consider splitting XUnique.h into XUniquePtr.h and XUniqueResource.h, and renaming XUnique.cpp to XUniqueResource.cpp.
&gt; 
&gt; Why? I think it&apos;s quite simple and reduces the amount of header includes.

Because over the lifetime of the WebKit project we’ve found that using a separate header for each class is a better pattern. Headers that have sets of classes might make sense when you are writing the code, but they can be frustrating later when reading and maintaining the code; a more mechanical rule is easier to understand and works better for someone who thinks slightly differently than the original author about categories.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092601</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-07 09:07:56 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 252487 [details]
&gt; Try to fix EFL build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252487&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/PlatformEfl.cmake:200
&gt; &gt;&gt;&gt; +    platform/graphics/x11/XUnique.cpp
&gt; &gt;&gt; 
&gt; &gt;&gt; Consider splitting XUnique.h into XUniquePtr.h and XUniqueResource.h, and renaming XUnique.cpp to XUniqueResource.cpp.
&gt; &gt; 
&gt; &gt; Why? I think it&apos;s quite simple and reduces the amount of header includes.
&gt; 
&gt; Because over the lifetime of the WebKit project we’ve found that using a
&gt; separate header for each class is a better pattern. Headers that have sets
&gt; of classes might make sense when you are writing the code, but they can be
&gt; frustrating later when reading and maintaining the code; a more mechanical
&gt; rule is easier to understand and works better for someone who thinks
&gt; slightly differently than the original author about categories.

Fair enough!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093137</commentid>
    <comment_count>13</comment_count>
      <attachid>252709</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-08 02:34:56 -0700</bug_when>
    <thetext>Created attachment 252709
Addressed review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093457</commentid>
    <comment_count>14</comment_count>
      <attachid>252709</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-09 16:31:00 -0700</bug_when>
    <thetext>Comment on attachment 252709
Addressed review comments

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

&gt; Source/WebCore/platform/graphics/glx/GLContextGLX.h:62
&gt;      XID m_window;

If we initialized this here then all the constructors would be simpler.

&gt; Source/WebCore/platform/graphics/glx/GLContextGLX.h:66
&gt;      cairo_device_t* m_cairoDevice;

If we initialized this here then all the constructors would be simpler.

&gt; Source/WebCore/platform/graphics/surfaces/egl/EGLXSurface.cpp:199
&gt; +    m_image.reset();

We often write this in the WebKit project as:

    m_image = nullptr;

&gt; Source/WebCore/platform/graphics/surfaces/egl/EGLXSurface.cpp:223
&gt; +    m_image.reset();

We often write this in the WebKit project as:

    m_image = nullptr;

&gt; Source/WebCore/platform/graphics/x11/XUniquePtr.h:43
&gt; +template&lt;typename T&gt;
&gt; +struct XPtrDeleter {
&gt; +    void operator()(T* ptr) const { XFree(ptr); }
&gt; +};

The version of this I wrote had a null check, and the documentation for XFree makes it clear it can’t be called with a null. Why is it OK to omit a null check here?

&gt; Source/WebCore/platform/graphics/x11/XUniquePtr.h:74
&gt; +DEFINE_XPTR_DELETER(XImage, XDestroyImage)
&gt; +DEFINE_XPTR_DELETER_WITH_DISPLAY(_XGC, XFreeGC)
&gt; +
&gt; +#if USE(GLX)
&gt; +DEFINE_XPTR_DELETER_WITH_DISPLAY(__GLXcontextRec, glXDestroyContext)
&gt; +#endif

I don’t think it’s a good idea to use macros for these. One is only used once and the other is only used twice. Writing that second template specialization twice seems like it would be fine.

&gt; Source/WebCore/platform/graphics/x11/XUniqueResource.cpp:44
&gt; +template&lt;&gt; void XUniqueResource&lt;XResource::Colormap&gt;::deleteXResource(long unsigned resource)

I don’t understand why this works in a cpp file. As I understand it, template specializations need to be in headers.

&gt; Source/WebCore/platform/graphics/x11/XUniqueResource.cpp:47
&gt; +        XFreeColormap(downcast&lt;PlatformDisplayX11&gt;(PlatformDisplay::sharedDisplay()).native(), resource);

The repeated code downcast&lt;PlatformDisplayX11&gt;(PlatformDisplay::sharedDisplay()).native() should be a helper function, not written out each time.

&gt; Source/WebCore/platform/graphics/x11/XUniqueResource.cpp:51
&gt; +template &lt;&gt; void XUniqueResource&lt;XResource::Damage&gt;::deleteXResource(long unsigned resource)

Would be nice to be consistent about whether there is a space after template.

&gt; Source/WebCore/platform/graphics/x11/XUniqueResource.h:54
&gt; +        : m_resource(0)

Would be better to initialize to zero when m_resource is defined below.

&gt; Source/WebCore/platform/graphics/x11/XUniqueResource.h:79
&gt; +    long unsigned get() const { return m_resource; }

WebKit project uses &quot;unsigned long&quot;, not &quot;long unsigned&quot;.

&gt; Source/WebCore/platform/graphics/x11/XUniqueResource.h:95
&gt; +    // This conversion operator allows implicit conversion to bool but not to other integer types.
&gt; +    typedef void* (XUniqueResource::*UnspecifiedBoolType);
&gt; +    operator UnspecifiedBoolType*() const
&gt; +    {
&gt; +        return m_resource ? reinterpret_cast&lt;UnspecifiedBoolType*&gt;(1) : 0;
&gt; +    }

explicit operator bool is the modern way to do this, unless you need to be compatible with some broken compiler.

&gt; Source/WebCore/platform/graphics/x11/XUniqueResource.h:98
&gt; +    XUniqueResource(const XUniqueResource&amp;) = delete;
&gt; +    XUniqueResource&amp; operator=(const XUniqueResource&amp;) = delete;

These are unneeded. Defining move constructor and move assignment operator does this automatically.

&gt; Source/WebCore/platform/graphics/x11/XUniqueResource.h:114
&gt; +using XUniqueColormap = XUniqueResource&lt;XResource::Colormap&gt;;
&gt; +#if PLATFORM(GTK)
&gt; +using XUniqueDamage = XUniqueResource&lt;XResource::Damage&gt;;
&gt; +#endif
&gt; +using XUniquePixmap = XUniqueResource&lt;XResource::Pixmap&gt;;
&gt; +using XUniqueWindow = XUniqueResource&lt;XResource::Window&gt;;
&gt; +#if USE(GLX)
&gt; +using XUniqueGLXPbuffer = XUniqueResource&lt;XResource::GLXPbuffer&gt;;
&gt; +using XUniqueGLXPixmap = XUniqueResource&lt;XResource::GLXPixmap&gt;;
&gt; +#endif

Seems pretty weak that these aren’t checked at all. You could easily use the wrong one.

&gt; Source/WebKit2/UIProcess/gtk/RedirectedXCompositeWindow.cpp:205
&gt; +    // Explicit reset these because we need to ensure it happens in this order.

Typo: Explicitly is missing the &quot;ly&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093510</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-10 01:50:51 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Comment on attachment 252709 [details]
&gt; Addressed review comments
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252709&amp;action=review

Thanks!

&gt; &gt; Source/WebCore/platform/graphics/glx/GLContextGLX.h:62
&gt; &gt;      XID m_window;
&gt; 
&gt; If we initialized this here then all the constructors would be simpler.

Ok.

&gt; &gt; Source/WebCore/platform/graphics/glx/GLContextGLX.h:66
&gt; &gt;      cairo_device_t* m_cairoDevice;
&gt; 
&gt; If we initialized this here then all the constructors would be simpler.

Ok.

&gt; &gt; Source/WebCore/platform/graphics/surfaces/egl/EGLXSurface.cpp:199
&gt; &gt; +    m_image.reset();
&gt; 
&gt; We often write this in the WebKit project as:
&gt; 
&gt;     m_image = nullptr;

Sure. 

&gt; &gt; Source/WebCore/platform/graphics/surfaces/egl/EGLXSurface.cpp:223
&gt; &gt; +    m_image.reset();
&gt; 
&gt; We often write this in the WebKit project as:
&gt; 
&gt;     m_image = nullptr;
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/x11/XUniquePtr.h:43
&gt; &gt; +template&lt;typename T&gt;
&gt; &gt; +struct XPtrDeleter {
&gt; &gt; +    void operator()(T* ptr) const { XFree(ptr); }
&gt; &gt; +};
&gt; 
&gt; The version of this I wrote had a null check, and the documentation for
&gt; XFree makes it clear it can’t be called with a null. Why is it OK to omit a
&gt; null check here?

It is not, I assumed XFree was null-safe like free. I&apos;ll fix it.

&gt; &gt; Source/WebCore/platform/graphics/x11/XUniquePtr.h:74
&gt; &gt; +DEFINE_XPTR_DELETER(XImage, XDestroyImage)
&gt; &gt; +DEFINE_XPTR_DELETER_WITH_DISPLAY(_XGC, XFreeGC)
&gt; &gt; +
&gt; &gt; +#if USE(GLX)
&gt; &gt; +DEFINE_XPTR_DELETER_WITH_DISPLAY(__GLXcontextRec, glXDestroyContext)
&gt; &gt; +#endif
&gt; 
&gt; I don’t think it’s a good idea to use macros for these. One is only used
&gt; once and the other is only used twice. Writing that second template
&gt; specialization twice seems like it would be fine.

My original idea was to leave the macros public so that other X pointers like GLX could expand it just by using the macros, but in the end all code is here, so we can indeed get rid of the macros.

&gt; &gt; Source/WebCore/platform/graphics/x11/XUniqueResource.cpp:44
&gt; &gt; +template&lt;&gt; void XUniqueResource&lt;XResource::Colormap&gt;::deleteXResource(long unsigned resource)
&gt; 
&gt; I don’t understand why this works in a cpp file. As I understand it,
&gt; template specializations need to be in headers.

In this case, the template is defined as template &lt;XResource T&gt;, being XResource an enum class. I think this makes the compiler know the specializations that need to be defined, and fails with linking errors if any of them is missing.

&gt; &gt; Source/WebCore/platform/graphics/x11/XUniqueResource.cpp:47
&gt; &gt; +        XFreeColormap(downcast&lt;PlatformDisplayX11&gt;(PlatformDisplay::sharedDisplay()).native(), resource);
&gt; 
&gt; The repeated code
&gt; downcast&lt;PlatformDisplayX11&gt;(PlatformDisplay::sharedDisplay()).native()
&gt; should be a helper function, not written out each time.

Ok.

&gt; &gt; Source/WebCore/platform/graphics/x11/XUniqueResource.cpp:51
&gt; &gt; +template &lt;&gt; void XUniqueResource&lt;XResource::Damage&gt;::deleteXResource(long unsigned resource)
&gt; 
&gt; Would be nice to be consistent about whether there is a space after template.

Good catch, this is just wrong, we never leave a space after template.

&gt; &gt; Source/WebCore/platform/graphics/x11/XUniqueResource.h:54
&gt; &gt; +        : m_resource(0)
&gt; 
&gt; Would be better to initialize to zero when m_resource is defined below.

Ok.

&gt; &gt; Source/WebCore/platform/graphics/x11/XUniqueResource.h:79
&gt; &gt; +    long unsigned get() const { return m_resource; }
&gt; 
&gt; WebKit project uses &quot;unsigned long&quot;, not &quot;long unsigned&quot;.

oops, I copy paste from X definition.

&gt; &gt; Source/WebCore/platform/graphics/x11/XUniqueResource.h:95
&gt; &gt; +    // This conversion operator allows implicit conversion to bool but not to other integer types.
&gt; &gt; +    typedef void* (XUniqueResource::*UnspecifiedBoolType);
&gt; &gt; +    operator UnspecifiedBoolType*() const
&gt; &gt; +    {
&gt; &gt; +        return m_resource ? reinterpret_cast&lt;UnspecifiedBoolType*&gt;(1) : 0;
&gt; &gt; +    }
&gt; 
&gt; explicit operator bool is the modern way to do this, unless you need to be
&gt; compatible with some broken compiler.

Ok.

&gt; &gt; Source/WebCore/platform/graphics/x11/XUniqueResource.h:98
&gt; &gt; +    XUniqueResource(const XUniqueResource&amp;) = delete;
&gt; &gt; +    XUniqueResource&amp; operator=(const XUniqueResource&amp;) = delete;
&gt; 
&gt; These are unneeded. Defining move constructor and move assignment operator
&gt; does this automatically.

I&apos;ll remove them.

&gt; &gt; Source/WebCore/platform/graphics/x11/XUniqueResource.h:114
&gt; &gt; +using XUniqueColormap = XUniqueResource&lt;XResource::Colormap&gt;;
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt; +using XUniqueDamage = XUniqueResource&lt;XResource::Damage&gt;;
&gt; &gt; +#endif
&gt; &gt; +using XUniquePixmap = XUniqueResource&lt;XResource::Pixmap&gt;;
&gt; &gt; +using XUniqueWindow = XUniqueResource&lt;XResource::Window&gt;;
&gt; &gt; +#if USE(GLX)
&gt; &gt; +using XUniqueGLXPbuffer = XUniqueResource&lt;XResource::GLXPbuffer&gt;;
&gt; &gt; +using XUniqueGLXPixmap = XUniqueResource&lt;XResource::GLXPixmap&gt;;
&gt; &gt; +#endif
&gt; 
&gt; Seems pretty weak that these aren’t checked at all. You could easily use the
&gt; wrong one.

I&apos;m not sure I get what you want. These are just for convenience, to avoid having to write XUniqueResource&lt;XResource::Foo&gt; everywhere, and use XUniqueFoo instead.

&gt; &gt; Source/WebKit2/UIProcess/gtk/RedirectedXCompositeWindow.cpp:205
&gt; &gt; +    // Explicit reset these because we need to ensure it happens in this order.
&gt; 
&gt; Typo: Explicitly is missing the &quot;ly&quot;.

Oops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093513</commentid>
    <comment_count>16</comment_count>
      <attachid>252809</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-10 02:56:54 -0700</bug_when>
    <thetext>Created attachment 252809
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094128</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-12 04:12:36 -0700</bug_when>
    <thetext>Committed r184197: &lt;http://trac.webkit.org/changeset/184197&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252228</attachid>
            <date>2015-05-02 04:15:55 -0700</date>
            <delta_ts>2015-05-03 08:25:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-xunique.diff</filename>
            <type>text/plain</type>
            <size>54681</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MzM4N2QyLi5jNDA0MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzYg
QEAKIDIwMTUtMDUtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtYMTFdIEFkZCBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8g
YXV0b21hdGljYWxseSBmcmVlIFggcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgWFVuaXF1ZVB0ciBhcyBhIHRlbXBsYXRlIGFsaWFz
IG9mIHN0ZDp1bmlxdWVfcHRyIHRvIGhhbmRsZSBYCisgICAgICAgIHJlc291cmNlcyB1c2luZyBw
b2ludGVycyBhbmQgWFVuaXF1ZVJlc291cmNlIGFzIGEgbmV3IGNsYXNzIHRvCisgICAgICAgIGhh
bmRsZSBYIHJlc291cmNlcyB1c2luZyBhIGxvbmcgdW5zaWduZWQgaWRlbnRpZmllci4gVGhpcwor
ICAgICAgICBzaW1wbGlmaWVzIHRoZSBjb2RlIGFuZCBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdCB0
byBsZWFrIFggcmVzb3VyY2VzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBu
ZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFk
ZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDEx
KToKKyAgICAgICAgUmVtb3ZlIHRoZSBkaXNwbGF5IG1lbWJlciwgYW5kIHVzZSBYVW5pcXVlIGZv
ciBQaXhtYXAgYW5kIEdDLgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZENh
aXJvWDExOjp+QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKToKKyAgICAgICAgUmVtb3ZlIGNv
ZGUgdG8gZXhwbGljaXRseSBmcmVlIFBpeG1hcCBhbmQgR0MuCisgICAgICAgIChXZWJDb3JlOjpC
YWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6OnNjcm9sbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQpOiBVc2UgWFVuaXF1ZSBhbmQgdGhl
CisgICAgICAgIG5ldyBjb25zdHJ1Y3RvciB0aGF0IHJlY2VpdmVzIGEgWElELCBzaW5jZSB0aGVy
ZSdzIG5vIGxvbmdlcgorICAgICAgICBjb25mbGljdCB3aXRoIHRoZSBvbmUgcmVjZWl2aW5nIGEg
UGJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNv
bnRleHQpOiBVc2UgWFVuaXF1ZSBhbmQgdGhlCisgICAgICAgIG5ldyBjb25zdHJ1Y3RvciB0aGF0
IHJlY2VpdmVzIGEgWFVuaXF1ZUdMWFBidWZmZXImJi4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRHTFg6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpH
TENvbnRleHRHTFgpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0
R0xYKTogUmVtb3ZlIGNvZGUgdG8gZXhwbGljaXRseQorICAgICAgICBmcmVlIFggcmVzb3VyY2Vz
LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjptYWtlQ29udGV4dEN1cnJlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRHTFg6OnBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFR0xY
VHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OmRlc3Ryb3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OnByZXBhcmVUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTFRleHR1cmVGcm9tUGl4bWFwOjpFR0xUZXh0dXJlRnJv
bVBpeG1hcCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
ZWdsL0VHTFhTdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWENvbmZpZ1NlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxl
Y3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnKTogVXNlIFhVbmlxdWUKKyAgICAgICAgaW5zdGVhZCBv
ZiB0aGUgY3VzdG9tIHN0ZDo6dW5pcXVlIFgxMURlbGV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpH
TFhDb25maWdTZWxlY3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnV2l0aFZpc3VhbElkKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0U3Vy
ZmFjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R0xYT2ZmU2NyZWVuU3VyZmFjZTo6aW5p
dGlhbGl6ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9YMTFIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WDExSGVscGVyOjpjcmVhdGVPZmZT
Y3JlZW5XaW5kb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlgxMUhlbHBlcjo6Y3JlYXRl
UGl4bWFwKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L1gxMUhlbHBlci5oOiBSZW1vdmUgWDExRGVsZXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy94MTEvWFVuaXF1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJl
c291cmNlPFhSZXNvdXJjZTo6Q29sb3JtYXA+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6RGFtYWdlPjo6ZGVsZXRlWFJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OlBpeG1h
cD46OmRlbGV0ZVhSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8
WFJlc291cmNlOjpXaW5kb3c+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj46OmRlbGV0ZVhSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpHTFhQaXhtYXA+
OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5p
cXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkp
OgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpYVW5pcXVlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpvcGVyYXRvcj0pOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjp+WFVuaXF1ZVJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVS
ZXNvdXJjZTo6cmVsZWFzZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U6OnJl
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6b3BlcmF0b3IhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSopOgorCisyMDE1LTA1LTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KKwogICAgICAgICBbR1RLXVtFRkxdIFVuaWZ5IHBsYXRmb3JtIGRpc3BsYXkgaGFu
ZGxpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NDUxNwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGJlNWQwYzkuLjY0YWUxZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xOTgsNiArMTk4LDcgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L1VwZGF0ZUF0bGFzLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlz
cGxheVgxMS5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5jcHAKIAogICAg
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQppbmRleCBjZDVhMTEwLi4wYTZkN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5j
bWFrZQpAQCAtMTI2LDYgKzEyNiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAogCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5jcHAKIAogICAgIHBsYXRmb3JtL2d0ay9FcnJvcnNH
dGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0V2ZW50TG9vcEd0ay5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyb1gxMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNr
aW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3BwCmluZGV4IDRjMDg3MmYuLjdiODYzMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9y
ZUJhY2tlbmRDYWlyb1gxMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcApAQCAtMjYsMTcgKzI2LDE3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDEx
OjpCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEoRGlzcGxheSogZGlzcGxheSwgdW5zaWduZWQg
bG9uZyByb290V2luZG93SUQsIFZpc3VhbCogdmlzdWFsLCBpbnQgZGVwdGgsIGNvbnN0IEludFNp
emUmIHNpemUsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQorQmFja2luZ1N0b3JlQmFja2VuZENh
aXJvWDExOjpCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEodW5zaWduZWQgbG9uZyByb290V2lu
ZG93SUQsIFZpc3VhbCogdmlzdWFsLCBpbnQgZGVwdGgsIGNvbnN0IEludFNpemUmIHNpemUsIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKQogICAgIDogQmFja2luZ1N0b3JlQmFja2VuZENhaXJvKHNp
emUpCi0gICAgLCBtX2Rpc3BsYXkoZGlzcGxheSkKIHsKICAgICBJbnRTaXplIHNjYWxlZFNpemUg
PSBzaXplOwogICAgIHNjYWxlZFNpemUuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwogCi0gICAg
bV9waXhtYXAgPSBYQ3JlYXRlUGl4bWFwKG1fZGlzcGxheSwgcm9vdFdpbmRvd0lELCBzY2FsZWRT
aXplLndpZHRoKCksIHNjYWxlZFNpemUuaGVpZ2h0KCksIGRlcHRoKTsKLSAgICBtX2djID0gWENy
ZWF0ZUdDKG1fZGlzcGxheSwgbV9waXhtYXAsIDAsIG51bGxwdHIpOworICAgIGF1dG8qIGRpc3Bs
YXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheSgpKS5uYXRpdmUoKTsKKyAgICBtX3BpeG1hcCA9IFhDcmVhdGVQaXhtYXAoZGlzcGxh
eSwgcm9vdFdpbmRvd0lELCBzY2FsZWRTaXplLndpZHRoKCksIHNjYWxlZFNpemUuaGVpZ2h0KCks
IGRlcHRoKTsKKyAgICBtX2djLnJlc2V0KFhDcmVhdGVHQyhkaXNwbGF5LCBtX3BpeG1hcC5nZXQo
KSwgMCwgbnVsbHB0cikpOwogCi0gICAgbV9zdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9feGxpYl9z
dXJmYWNlX2NyZWF0ZShtX2Rpc3BsYXksIG1fcGl4bWFwLCB2aXN1YWwsIHNjYWxlZFNpemUud2lk
dGgoKSwgc2NhbGVkU2l6ZS5oZWlnaHQoKSkpOworICAgIG1fc3VyZmFjZSA9IGFkb3B0UmVmKGNh
aXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUoZGlzcGxheSwgbV9waXhtYXAuZ2V0KCksIHZpc3VhbCwg
c2NhbGVkU2l6ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhlaWdodCgpKSk7CiAgICAgY2Fpcm9TdXJm
YWNlU2V0RGV2aWNlU2NhbGUobV9zdXJmYWNlLmdldCgpLCBkZXZpY2VTY2FsZUZhY3RvciwgZGV2
aWNlU2NhbGVGYWN0b3IpOwogfQogCkBAIC00NCw4ICs0NCw2IEBAIEJhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb1gxMTo6fkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMSgpCiB7CiAgICAgLy8gVGhl
IHBpeG1hcCBuZWVkcyB0byBleGlzdCB3aGVuIHRoZSBzdXJmYWNlIGlzIGRlc3Ryb3llZCwgc28g
YmVnaW4gYnkgY2xlYXJpbmcgaXQuCiAgICAgbV9zdXJmYWNlLmNsZWFyKCk7Ci0gICAgWEZyZWVQ
aXhtYXAobV9kaXNwbGF5LCBtX3BpeG1hcCk7Ci0gICAgWEZyZWVHQyhtX2Rpc3BsYXksIG1fZ2Mp
OwogfQogCiB2b2lkIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6c2Nyb2xsKGNvbnN0IElu
dFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNldCkKQEAgLTY1LDcg
KzYzLDcgQEAgdm9pZCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6OnNjcm9sbChjb25zdCBJ
bnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXoKICAgICBzY2FsZWRTY3JvbGxPZmZzZXQu
c2NhbGUoeFNjYWxlLCB5U2NhbGUpOwogCiAgICAgY2Fpcm9fc3VyZmFjZV9mbHVzaChtX3N1cmZh
Y2UuZ2V0KCkpOwotICAgIFhDb3B5QXJlYShtX2Rpc3BsYXksIG1fcGl4bWFwLCBtX3BpeG1hcCwg
bV9nYywKKyAgICBYQ29weUFyZWEoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIG1fcGl4bWFwLmdldCgpLCBtX3Bp
eG1hcC5nZXQoKSwgbV9nYy5nZXQoKSwKICAgICAgICAgdGFyZ2V0UmVjdC54KCkgLSBzY2FsZWRT
Y3JvbGxPZmZzZXQud2lkdGgoKSwgdGFyZ2V0UmVjdC55KCkgLSBzY2FsZWRTY3JvbGxPZmZzZXQu
aGVpZ2h0KCksCiAgICAgICAgIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWlnaHQo
KSwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpKTsKICAgICBjYWlyb19zdXJmYWNlX21h
cmtfZGlydHlfcmVjdGFuZ2xlKG1fc3VyZmFjZS5nZXQoKSwgdGFyZ2V0UmVjdC54KCksIHRhcmdl
dFJlY3QueSgpLCB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0
b3JlQmFja2VuZENhaXJvWDExLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuaAppbmRleCAxZGUwZDg0Li40MDc4YTYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNr
aW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuaApAQCAtMjIsMjEgKzIy
LDIwIEBACiAjaW5jbHVkZSAiQmFja2luZ1N0b3JlQmFja2VuZENhaXJvLmgiCiAKICNpZiBVU0Uo
Q0FJUk8pICYmIFBMQVRGT1JNKFgxMSkKLSNpbmNsdWRlIDxYMTEvWGxpYi5oPgorI2luY2x1ZGUg
IlhVbmlxdWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCYWNraW5nU3RvcmVC
YWNrZW5kQ2Fpcm9YMTEgZmluYWwgOiBwdWJsaWMgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvIHsK
IHB1YmxpYzoKLSAgICBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEoRGlzcGxheSosIHVuc2ln
bmVkIGxvbmcgcm9vdFdpbmRvd0lELCBWaXN1YWwqLCBpbnQgZGVwdGgsIGNvbnN0IEludFNpemUm
LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgQmFja2luZ1N0b3JlQmFja2VuZENhaXJv
WDExKHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lELCBWaXN1YWwqLCBpbnQgZGVwdGgsIGNvbnN0
IEludFNpemUmLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgdmlydHVhbCB+QmFja2lu
Z1N0b3JlQmFja2VuZENhaXJvWDExKCk7CiAKICAgICB2b2lkIHNjcm9sbChjb25zdCBJbnRSZWN0
JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgotICAgIERpc3BsYXkqIG1fZGlzcGxheTsKLSAgICBQaXhtYXAgbV9waXhtYXA7Ci0g
ICAgR0MgbV9nYzsKKyAgICBYVW5pcXVlUGl4bWFwIG1fcGl4bWFwOworICAgIFhVbmlxdWVHQyBt
X2djOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcAppbmRleCBmNzQ2N2E3
Li5jMTA4Y2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
bHgvR0xDb250ZXh0R0xYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nbHgvR0xDb250ZXh0R0xYLmNwcApAQCAtNDMsMjUgKzQzLDE5IEBAIHN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4dChYSUQgd2lu
ZG93LCBHTENvCiAgICAgdmlzdWFsSW5mby52aXN1YWxpZCA9IFhWaXN1YWxJREZyb21WaXN1YWwo
YXR0cmlidXRlcy52aXN1YWwpOwogCiAgICAgaW50IG51bVJldHVybmVkID0gMDsKLSAgICBYVmlz
dWFsSW5mbyogdmlzdWFsSW5mb0xpc3QgPSBYR2V0VmlzdWFsSW5mbyhkaXNwbGF5LCBWaXN1YWxJ
RE1hc2ssICZ2aXN1YWxJbmZvLCAmbnVtUmV0dXJuZWQpOwotCi0gICAgR0xYQ29udGV4dCBnbHhT
aGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xY
Kj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAwOwotICAgIEdMWENvbnRleHQgY29udGV4
dCA9IGdsWENyZWF0ZUNvbnRleHQoZGlzcGxheSwgdmlzdWFsSW5mb0xpc3QsIGdseFNoYXJpbmdD
b250ZXh0LCBUcnVlKTsKLSAgICBYRnJlZSh2aXN1YWxJbmZvTGlzdCk7CisgICAgWFVuaXF1ZVB0
cjxYVmlzdWFsSW5mbz4gdmlzdWFsSW5mb0xpc3QoWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlz
dWFsSURNYXNrLCAmdmlzdWFsSW5mbywgJm51bVJldHVybmVkKSk7CiAKKyAgICBHTFhDb250ZXh0
IGdseFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRl
eHRHTFgqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dC5nZXQoKSA6IG51bGxwdHI7CisgICAg
WFVuaXF1ZUdMWENvbnRleHQgY29udGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3Vh
bEluZm9MaXN0LmdldCgpLCBnbHhTaGFyaW5nQ29udGV4dCwgVHJ1ZSkpOwogICAgIGlmICghY29u
dGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAvLyBHTFhQYnVmZmVyIGFuZCBY
SUQgYXJlIGJvdGggdGhlIHNhbWUgdHlwZXMgdW5kZXJuZWF0aCwgc28gd2UgaGF2ZSB0byBzaGFy
ZQotICAgIC8vIGEgY29uc3RydWN0b3IgaGVyZSB3aXRoIHRoZSB3aW5kb3cgcGF0aC4KLSAgICBh
dXRvIGNvbnRleHRXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHTENvbnRleHRHTFg+KGNvbnRl
eHQpOwotICAgIGNvbnRleHRXcmFwcGVyLT5tX3dpbmRvdyA9IHdpbmRvdzsKLSAgICByZXR1cm4g
V1RGOjptb3ZlKGNvbnRleHRXcmFwcGVyKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxH
TENvbnRleHRHTFg+KFdURjo6bW92ZShjb250ZXh0KSwgd2luZG93KTsKIH0KIAogc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29udGV4dChH
TFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewotICAgIGludCBmYkNvbmZpZ0F0dHJpYnV0ZXNb
XSA9IHsKKyAgICBzdGF0aWMgY29uc3QgaW50IGZiQ29uZmlnQXR0cmlidXRlc1tdID0gewogICAg
ICAgICBHTFhfRFJBV0FCTEVfVFlQRSwgR0xYX1BCVUZGRVJfQklULAogICAgICAgICBHTFhfUkVO
REVSX1RZUEUsIEdMWF9SR0JBX0JJVCwKICAgICAgICAgR0xYX1JFRF9TSVpFLCAxLApAQCAtNzQs
MzIgKzY4LDIxIEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6
Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBzaGFyCiAKICAgICBpbnQgcmV0dXJuZWRF
bGVtZW50czsKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5
WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7Ci0gICAgR0xY
RkJDb25maWcqIGNvbmZpZ3MgPSBnbFhDaG9vc2VGQkNvbmZpZyhkaXNwbGF5LCAwLCBmYkNvbmZp
Z0F0dHJpYnV0ZXMsICZyZXR1cm5lZEVsZW1lbnRzKTsKLSAgICBpZiAoIXJldHVybmVkRWxlbWVu
dHMpIHsKLSAgICAgICAgWEZyZWUoY29uZmlncyk7CisgICAgWFVuaXF1ZVB0cjxHTFhGQkNvbmZp
Zz4gY29uZmlncyhnbFhDaG9vc2VGQkNvbmZpZyhkaXNwbGF5LCAwLCBmYkNvbmZpZ0F0dHJpYnV0
ZXMsICZyZXR1cm5lZEVsZW1lbnRzKSk7CisgICAgaWYgKCFyZXR1cm5lZEVsZW1lbnRzKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CiAKICAgICAvLyBXZSB3aWxsIGJlIHJlbmRlcmlu
ZyB0byBhIHRleHR1cmUsIHNvIG91ciBwYnVmZmVyIGRvZXMgbm90IG5lZWQgdG8gYmUgbGFyZ2Uu
CiAgICAgc3RhdGljIGNvbnN0IGludCBwYnVmZmVyQXR0cmlidXRlc1tdID0geyBHTFhfUEJVRkZF
Ul9XSURUSCwgMSwgR0xYX1BCVUZGRVJfSEVJR0hULCAxLCAwIH07Ci0gICAgR0xYUGJ1ZmZlciBw
YnVmZmVyID0gZ2xYQ3JlYXRlUGJ1ZmZlcihkaXNwbGF5LCBjb25maWdzWzBdLCBwYnVmZmVyQXR0
cmlidXRlcyk7Ci0gICAgaWYgKCFwYnVmZmVyKSB7Ci0gICAgICAgIFhGcmVlKGNvbmZpZ3MpOwor
ICAgIFhVbmlxdWVHTFhQYnVmZmVyIHBidWZmZXIoZ2xYQ3JlYXRlUGJ1ZmZlcihkaXNwbGF5LCBj
b25maWdzLmdldCgpWzBdLCBwYnVmZmVyQXR0cmlidXRlcykpOworICAgIGlmICghcGJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQogCi0gICAgR0xYQ29udGV4dCBjb250ZXh0
ID0gZ2xYQ3JlYXRlTmV3Q29udGV4dChkaXNwbGF5LCBjb25maWdzWzBdLCBHTFhfUkdCQV9UWVBF
LCBzaGFyaW5nQ29udGV4dCwgR0xfVFJVRSk7Ci0gICAgWEZyZWUoY29uZmlncyk7Ci0gICAgaWYg
KCFjb250ZXh0KSB7Ci0gICAgICAgIGdsWERlc3Ryb3lQYnVmZmVyKGRpc3BsYXksIHBidWZmZXIp
OworICAgIFhVbmlxdWVHTFhDb250ZXh0IGNvbnRleHQoZ2xYQ3JlYXRlTmV3Q29udGV4dChkaXNw
bGF5LCBjb25maWdzLmdldCgpWzBdLCBHTFhfUkdCQV9UWVBFLCBzaGFyaW5nQ29udGV4dCwgR0xf
VFJVRSkpOworICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQogCi0gICAgLy8gR0xYUGJ1ZmZlciBhbmQgWElEIGFyZSBib3RoIHRoZSBzYW1lIHR5cGVzIHVu
ZGVybmVhdGgsIHNvIHdlIGhhdmUgdG8gc2hhcmUKLSAgICAvLyBhIGNvbnN0cnVjdG9yIGhlcmUg
d2l0aCB0aGUgd2luZG93IHBhdGguCi0gICAgYXV0byBjb250ZXh0V3JhcHBlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8R0xDb250ZXh0R0xYPihjb250ZXh0KTsKLSAgICBjb250ZXh0V3JhcHBlci0+bV9w
YnVmZmVyID0gcGJ1ZmZlcjsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGNvbnRleHRXcmFwcGVyKTsK
KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHTENvbnRleHRHTFg+KFdURjo6bW92ZShjb250
ZXh0KSwgV1RGOjptb3ZlKHBidWZmZXIpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQaXhtYXBDb250ZXh0KEdMWENvbnRleHQgc2hhcmlu
Z0NvbnRleHQpCkBAIC0xMTQsMzEgKzk3LDIzIEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRH
TFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNoYXJpCiAg
ICAgfTsKIAogICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlY
MTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKTsKLSAgICBYVmlz
dWFsSW5mbyogdmlzdWFsSW5mbyA9IGdsWENob29zZVZpc3VhbChkaXNwbGF5LCBEZWZhdWx0U2Ny
ZWVuKGRpc3BsYXkpLCB2aXN1YWxBdHRyaWJ1dGVzKTsKKyAgICBYVW5pcXVlUHRyPFhWaXN1YWxJ
bmZvPiB2aXN1YWxJbmZvKGdsWENob29zZVZpc3VhbChkaXNwbGF5LCBEZWZhdWx0U2NyZWVuKGRp
c3BsYXkpLCB2aXN1YWxBdHRyaWJ1dGVzKSk7CiAgICAgaWYgKCF2aXN1YWxJbmZvKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEdMWENvbnRleHQgY29udGV4dCA9IGdsWENyZWF0ZUNv
bnRleHQoZGlzcGxheSwgdmlzdWFsSW5mbywgc2hhcmluZ0NvbnRleHQsIEdMX1RSVUUpOwotICAg
IGlmICghY29udGV4dCkgewotICAgICAgICBYRnJlZSh2aXN1YWxJbmZvKTsKKyAgICBYVW5pcXVl
R0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZUNvbnRleHQoZGlzcGxheSwgdmlzdWFsSW5mby5n
ZXQoKSwgc2hhcmluZ0NvbnRleHQsIEdMX1RSVUUpKTsKKyAgICBpZiAoIWNvbnRleHQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIFBpeG1hcCBwaXhtYXAgPSBYQ3JlYXRl
UGl4bWFwKGRpc3BsYXksIERlZmF1bHRSb290V2luZG93KGRpc3BsYXkpLCAxLCAxLCB2aXN1YWxJ
bmZvLT5kZXB0aCk7Ci0gICAgaWYgKCFwaXhtYXApIHsKLSAgICAgICAgWEZyZWUodmlzdWFsSW5m
byk7CisgICAgWFVuaXF1ZVBpeG1hcCBwaXhtYXAoWENyZWF0ZVBpeG1hcChkaXNwbGF5LCBEZWZh
dWx0Um9vdFdpbmRvdyhkaXNwbGF5KSwgMSwgMSwgdmlzdWFsSW5mby0+ZGVwdGgpKTsKKyAgICBp
ZiAoIXBpeG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQogCi0gICAgR0xYUGl4
bWFwIGdseFBpeG1hcCA9IGdsWENyZWF0ZUdMWFBpeG1hcChkaXNwbGF5LCB2aXN1YWxJbmZvLCBw
aXhtYXApOwotICAgIGlmICghZ2x4UGl4bWFwKSB7Ci0gICAgICAgIFhGcmVlUGl4bWFwKGRpc3Bs
YXksIHBpeG1hcCk7Ci0gICAgICAgIFhGcmVlKHZpc3VhbEluZm8pOworICAgIFhVbmlxdWVHTFhQ
aXhtYXAgZ2x4UGl4bWFwKGdsWENyZWF0ZUdMWFBpeG1hcChkaXNwbGF5LCB2aXN1YWxJbmZvLmdl
dCgpLCBwaXhtYXAuZ2V0KCkpKTsKKyAgICBpZiAoIWdseFBpeG1hcCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQogCi0gICAgWEZyZWUodmlzdWFsSW5mbyk7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihjb250ZXh0LCBwaXhtYXAsIGdseFBpeG1hcCk7
CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEY6Om1vdmUoY29u
dGV4dCksIFdURjo6bW92ZShwaXhtYXApLCBXVEY6Om1vdmUoZ2x4UGl4bWFwKSk7CiB9CiAKIHN0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChY
SUQgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KQpAQCAtMTUyLDcgKzEyNyw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4
dChYSUQgd2luZG93LCBHTENvbnRleHQqCiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIEdMWENvbnRleHQgZ2x4U2hhcmluZ0NvbnRleHQgPSBzaGFyaW5n
Q29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEdMWCo+KHNoYXJpbmdDb250ZXh0KS0+bV9j
b250ZXh0IDogMDsKKyAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0Nv
bnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRHTFgqPihzaGFyaW5nQ29udGV4dCktPm1fY29u
dGV4dC5nZXQoKSA6IG51bGxwdHI7CiAgICAgYXV0byBjb250ZXh0ID0gd2luZG93ID8gY3JlYXRl
V2luZG93Q29udGV4dCh3aW5kb3csIHNoYXJpbmdDb250ZXh0KSA6IG51bGxwdHI7CiAgICAgaWYg
KCFjb250ZXh0KQogICAgICAgICBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQoZ2x4U2hh
cmluZ0NvbnRleHQpOwpAQCAtMTY0LDIzICsxMzksMjcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29u
dGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4
dCoKICAgICByZXR1cm4gV1RGOjptb3ZlKGNvbnRleHQpOwogfQogCi1HTENvbnRleHRHTFg6OkdM
Q29udGV4dEdMWChHTFhDb250ZXh0IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkK
K0dMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYgY29udGV4dCwg
WElEIHdpbmRvdykKKyAgICA6IG1fY29udGV4dChXVEY6Om1vdmUoY29udGV4dCkpCisgICAgLCBt
X3dpbmRvdyh3aW5kb3cpCisgICAgLCBtX2NhaXJvRGV2aWNlKG51bGxwdHIpCit7Cit9CisKK0dM
Q29udGV4dEdMWDo6R0xDb250ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYgY29udGV4dCwgWFVu
aXF1ZUdMWFBidWZmZXImJiBwYnVmZmVyKQorICAgIDogbV9jb250ZXh0KFdURjo6bW92ZShjb250
ZXh0KSkKICAgICAsIG1fd2luZG93KDApCi0gICAgLCBtX3BidWZmZXIoMCkKLSAgICAsIG1fcGl4
bWFwKDApCi0gICAgLCBtX2dseFBpeG1hcCgwKQotICAgICwgbV9jYWlyb0RldmljZSgwKQorICAg
ICwgbV9wYnVmZmVyKFdURjo6bW92ZShwYnVmZmVyKSkKKyAgICAsIG1fY2Fpcm9EZXZpY2UobnVs
bHB0cikKIHsKIH0KIAotR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoR0xYQ29udGV4dCBjb250
ZXh0LCBQaXhtYXAgcGl4bWFwLCBHTFhQaXhtYXAgZ2x4UGl4bWFwKQotICAgIDogbV9jb250ZXh0
KGNvbnRleHQpCitHTENvbnRleHRHTFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYm
IGNvbnRleHQsIFhVbmlxdWVQaXhtYXAmJiBwaXhtYXAsIFhVbmlxdWVHTFhQaXhtYXAmJiBnbHhQ
aXhtYXApCisgICAgOiBtX2NvbnRleHQoV1RGOjptb3ZlKGNvbnRleHQpKQogICAgICwgbV93aW5k
b3coMCkKLSAgICAsIG1fcGJ1ZmZlcigwKQotICAgICwgbV9waXhtYXAocGl4bWFwKQotICAgICwg
bV9nbHhQaXhtYXAoZ2x4UGl4bWFwKQotICAgICwgbV9jYWlyb0RldmljZSgwKQorICAgICwgbV9w
aXhtYXAoV1RGOjptb3ZlKHBpeG1hcCkpCisgICAgLCBtX2dseFBpeG1hcChXVEY6Om1vdmUoZ2x4
UGl4bWFwKSkKKyAgICAsIG1fY2Fpcm9EZXZpY2UobnVsbHB0cikKIHsKIH0KIApAQCAtMTg5LDI2
ICsxNjgsMTIgQEAgR0xDb250ZXh0R0xYOjp+R0xDb250ZXh0R0xYKCkKICAgICBpZiAobV9jYWly
b0RldmljZSkKICAgICAgICAgY2Fpcm9fZGV2aWNlX2Rlc3Ryb3kobV9jYWlyb0RldmljZSk7CiAK
LSAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0
Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CiAgICAgaWYgKG1fY29udGV4
dCkgewogICAgICAgICAvLyBUaGlzIG1heSBiZSBuZWNlc3NhcnkgdG8gcHJldmVudCBjcmFzaGVz
IHdpdGggTlZpZGlhJ3MgY2xvc2VkIHNvdXJjZSBkcml2ZXJzLiBPcmlnaW5hbGx5CiAgICAgICAg
IC8vIGZyb20gTW96aWxsYSdzIDNEIGNhbnZhcyBpbXBsZW1lbnRhdGlvbiBhdDogaHR0cDovL2Jp
dGJ1Y2tldC5vcmcvaWxtYXJpL2NhbnZhczNkLworICAgICAgICBEaXNwbGF5KiBkaXNwbGF5ID0g
ZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXkoKSkubmF0aXZlKCk7CiAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVG
RkVSX0VYVCwgMCk7CiAgICAgICAgIGdsWE1ha2VDdXJyZW50KGRpc3BsYXksIE5vbmUsIE5vbmUp
OwotICAgICAgICBnbFhEZXN0cm95Q29udGV4dChkaXNwbGF5LCBtX2NvbnRleHQpOwotICAgIH0K
LQotICAgIGlmIChtX3BidWZmZXIpIHsKLSAgICAgICAgZ2xYRGVzdHJveVBidWZmZXIoZGlzcGxh
eSwgbV9wYnVmZmVyKTsKLSAgICAgICAgbV9wYnVmZmVyID0gMDsKLSAgICB9Ci0gICAgaWYgKG1f
Z2x4UGl4bWFwKSB7Ci0gICAgICAgIGdsWERlc3Ryb3lHTFhQaXhtYXAoZGlzcGxheSwgbV9nbHhQ
aXhtYXApOwotICAgICAgICBtX2dseFBpeG1hcCA9IDA7Ci0gICAgfQotICAgIGlmIChtX3BpeG1h
cCkgewotICAgICAgICBYRnJlZVBpeG1hcChkaXNwbGF5LCBtX3BpeG1hcCk7Ci0gICAgICAgIG1f
cGl4bWFwID0gMDsKICAgICB9CiB9CiAKQEAgLTIzNywxNyArMjAyLDE3IEBAIGJvb2wgR0xDb250
ZXh0R0xYOjptYWtlQ29udGV4dEN1cnJlbnQoKQogICAgIEFTU0VSVChtX2NvbnRleHQgJiYgKG1f
d2luZG93IHx8IG1fcGJ1ZmZlciB8fCBtX2dseFBpeG1hcCkpOwogCiAgICAgR0xDb250ZXh0Ojpt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBpZiAoZ2xYR2V0Q3VycmVudENvbnRleHQoKSA9PSBt
X2NvbnRleHQpCisgICAgaWYgKGdsWEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0Lmdl
dCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIERpc3BsYXkqIGRpc3BsYXkgPSBkb3du
Y2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgp
KS5uYXRpdmUoKTsKICAgICBpZiAobV93aW5kb3cpCi0gICAgICAgIHJldHVybiBnbFhNYWtlQ3Vy
cmVudChkaXNwbGF5LCBtX3dpbmRvdywgbV9jb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGdsWE1h
a2VDdXJyZW50KGRpc3BsYXksIG1fd2luZG93LCBtX2NvbnRleHQuZ2V0KCkpOwogCiAgICAgaWYg
KG1fcGJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIGdsWE1ha2VDdXJyZW50KGRpc3BsYXksIG1fcGJ1
ZmZlciwgbV9jb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGdsWE1ha2VDdXJyZW50KGRpc3BsYXks
IG1fcGJ1ZmZlci5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKIAotICAgIHJldHVybiA6OmdsWE1h
a2VDdXJyZW50KGRpc3BsYXksIG1fZ2x4UGl4bWFwLCBtX2NvbnRleHQpOworICAgIHJldHVybiA6
OmdsWE1ha2VDdXJyZW50KGRpc3BsYXksIG1fZ2x4UGl4bWFwLmdldCgpLCBtX2NvbnRleHQuZ2V0
KCkpOwogfQogCiB2b2lkIEdMQ29udGV4dEdMWDo6c3dhcEJ1ZmZlcnMoKQpAQCAtMjY3LDcgKzIz
Miw3IEBAIGNhaXJvX2RldmljZV90KiBHTENvbnRleHRHTFg6OmNhaXJvRGV2aWNlKCkKICAgICAg
ICAgcmV0dXJuIG1fY2Fpcm9EZXZpY2U7CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FO
VkFTKQotICAgIG1fY2Fpcm9EZXZpY2UgPSBjYWlyb19nbHhfZGV2aWNlX2NyZWF0ZShkb3duY2Fz
dDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5u
YXRpdmUoKSwgbV9jb250ZXh0KTsKKyAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZ2x4X2Rldmlj
ZV9jcmVhdGUoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNo
YXJlZERpc3BsYXkoKSkubmF0aXZlKCksIG1fY29udGV4dC5nZXQoKSk7CiAjZW5kaWYKIAogICAg
IHJldHVybiBtX2NhaXJvRGV2aWNlOwpAQCAtMjc2LDcgKzI0MSw3IEBAIGNhaXJvX2RldmljZV90
KiBHTENvbnRleHRHTFg6OmNhaXJvRGV2aWNlKCkKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVY
VF8zRCkKIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR0xDb250ZXh0R0xYOjpwbGF0Zm9ybUNv
bnRleHQoKQogewotICAgIHJldHVybiBtX2NvbnRleHQ7CisgICAgcmV0dXJuIG1fY29udGV4dC5n
ZXQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nbHgvR0xDb250ZXh0R0xYLmgKaW5kZXggNjkzNGYyNC4uNDAyM2JjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaApA
QCAtMjMsMTIgKzIzLDkgQEAKICNpZiBVU0UoR0xYKQogCiAjaW5jbHVkZSAiR0xDb250ZXh0Lmgi
CisjaW5jbHVkZSAiWFVuaXF1ZS5oIgogCi10eXBlZGVmIHN0cnVjdCBfX0dMWGNvbnRleHRSZWMq
IEdMWENvbnRleHQ7Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgR0xYUGJ1ZmZlcjsKLXR5cGVkZWYg
dW5zaWduZWQgbG9uZyBHTFhQaXhtYXA7CiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0x1Ynl0ZTsK
LXR5cGVkZWYgdW5zaWduZWQgbG9uZyBQaXhtYXA7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgWElE
OwogdHlwZWRlZiB2b2lkKiBDb250ZXh0S2V5VHlwZTsKIApAQCAtNDAsOCArMzcsOSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZUNvbnRl
eHQoWElEIHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCk7CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRv
dywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCk7CiAKLSAgICBHTENvbnRleHRHTFgoR0xYQ29u
dGV4dCk7Ci0gICAgR0xDb250ZXh0R0xYKEdMWENvbnRleHQsIFBpeG1hcCwgR0xYUGl4bWFwKTsK
KyAgICBHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiwgWElEKTsKKyAgICBHTENvbnRl
eHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiwgWFVuaXF1ZUdMWFBidWZmZXImJik7CisgICAgR0xD
b250ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYsIFhVbmlxdWVQaXhtYXAmJiwgWFVuaXF1ZUdM
WFBpeG1hcCYmKTsKICAgICB2aXJ0dWFsIH5HTENvbnRleHRHTFgoKTsKICAgICB2aXJ0dWFsIGJv
b2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCk7
CkBAIC01OSwxMSArNTcsMTEgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dEdMWD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ29u
dGV4dCk7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVBp
eG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCk7CiAKLSAgICBHTFhDb250ZXh0
IG1fY29udGV4dDsKKyAgICBYVW5pcXVlR0xYQ29udGV4dCBtX2NvbnRleHQ7CiAgICAgWElEIG1f
d2luZG93OwotICAgIEdMWFBidWZmZXIgbV9wYnVmZmVyOwotICAgIFBpeG1hcCBtX3BpeG1hcDsK
LSAgICBHTFhQaXhtYXAgbV9nbHhQaXhtYXA7CisgICAgWFVuaXF1ZUdMWFBidWZmZXIgbV9wYnVm
ZmVyOworICAgIFhVbmlxdWVQaXhtYXAgbV9waXhtYXA7CisgICAgWFVuaXF1ZUdMWFBpeG1hcCBt
X2dseFBpeG1hcDsKICAgICBjYWlyb19kZXZpY2VfdCogbV9jYWlyb0RldmljZTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9F
R0xYU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9lZ2wvRUdMWFN1cmZhY2UuY3BwCmluZGV4IDc5MmE5OGIuLjFmZjNlNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWds
L0VHTFhTdXJmYWNlLmNwcApAQCAtMTQwLDcgKzE0MCw2IEBAIHZvaWQgRUdMUGl4bWFwU3VyZmFj
ZTo6ZGVzdHJveSgpCiAKIEVHTFhUcmFuc3BvcnRTdXJmYWNlQ2xpZW50OjpFR0xYVHJhbnNwb3J0
U3VyZmFjZUNsaWVudChjb25zdCBQbGF0Zm9ybUJ1ZmZlckhhbmRsZSBoYW5kbGUsIGNvbnN0IElu
dFNpemUmIHNpemUsIGJvb2wgaGFzQWxwaGEpCiAgICAgOiBHTFRyYW5zcG9ydFN1cmZhY2VDbGll
bnQoKQotICAgICwgbV9pbWFnZSgwKQogICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX3RvdGFs
Qnl0ZXMoMCkKIHsKQEAgLTE5NiwxMSArMTk1LDcgQEAgdm9pZCBFR0xYVHJhbnNwb3J0U3VyZmFj
ZUNsaWVudDo6ZGVzdHJveSgpCiAgICAgfQogCiAgICAgZWdsV2FpdEdMKCk7Ci0KLSAgICBpZiAo
bV9pbWFnZSkgewotICAgICAgICBYRGVzdHJveUltYWdlKG1faW1hZ2UpOwotICAgICAgICBtX2lt
YWdlID0gMDsKLSAgICB9CisgICAgbV9pbWFnZS5yZXNldCgpOwogfQogCiB2b2lkIEVHTFhUcmFu
c3BvcnRTdXJmYWNlQ2xpZW50OjpwcmVwYXJlVGV4dHVyZSgpCkBAIC0yMTMsNyArMjA4LDcgQEAg
dm9pZCBFR0xYVHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6cHJlcGFyZVRleHR1cmUoKQogICAgIH0K
IAogICAgIC8vIEZhbGxiYWNrIHRvIHVzZSBYSW1hZ2UgaW4gY2FzZSBFR0xJbWFnZSBhbmQgVGV4
dHVyZVRvUGl4bWFwIGFyZSBub3Qgc3VwcG9ydGVkLgotICAgIG1faW1hZ2UgPSBYR2V0SW1hZ2Uo
TmF0aXZlV3JhcHBlcjo6bmF0aXZlRGlzcGxheSgpLCBtX2hhbmRsZSwgMCwgMCwgbV9zaXplLndp
ZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgQWxsUGxhbmVzLCBaUGl4bWFwKTsKKyAgICBtX2ltYWdl
LnJlc2V0KFhHZXRJbWFnZShOYXRpdmVXcmFwcGVyOjpuYXRpdmVEaXNwbGF5KCksIG1faGFuZGxl
LCAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBBbGxQbGFuZXMsIFpQaXht
YXApKTsKIAogI2lmIFVTRShPUEVOR0xfRVNfMikKICAgICBpZiAobV9mb3JtYXQgIT0gR3JhcGhp
Y3NDb250ZXh0M0Q6OkJHUkEpIHsKQEAgLTIyNCwxMCArMjE5LDcgQEAgdm9pZCBFR0xYVHJhbnNw
b3J0U3VyZmFjZUNsaWVudDo6cHJlcGFyZVRleHR1cmUoKQogCiAgICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIG1fZm9ybWF0LCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgp
LCAwLCBtX2Zvcm1hdCwgR0xfVU5TSUdORURfQllURSwgbV9pbWFnZS0+ZGF0YSk7CiAKLSAgICBp
ZiAobV9pbWFnZSkgewotICAgICAgICBYRGVzdHJveUltYWdlKG1faW1hZ2UpOwotICAgICAgICBt
X2ltYWdlID0gMDsKLSAgICB9CisgICAgbV9pbWFnZS5yZXNldCgpOwogfQogCiBFR0xUZXh0dXJl
RnJvbVBpeG1hcDo6RUdMVGV4dHVyZUZyb21QaXhtYXAoY29uc3QgTmF0aXZlUGl4bWFwIGhhbmRs
ZSwgYm9vbCBoYXNBbHBoYSwgRUdMQ29uZmlnIGNvbmZpZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhTdXJmYWNlLmgK
aW5kZXggOTZjOGE2Ni4uMjRjZjg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhTdXJmYWNlLmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBQTEFURk9STShYMTEpICYmIFVTRShFR0wpICYmIFVTRShHUkFQSElDU19T
VVJGQUNFKQogCiAjaW5jbHVkZSAiRUdMU3VyZmFjZS5oIgorI2luY2x1ZGUgIlhVbmlxdWUuaCIK
ICNpbmNsdWRlIDxnbHgvWDExSGVscGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc0
LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6Ci0gICAgWEltYWdlKiBtX2ltYWdlOworICAgIFhVbmlxdWU8WEltYWdlPiBt
X2ltYWdlOwogICAgIEludFNpemUgbV9zaXplOwogICAgIFBsYXRmb3JtQnVmZmVySGFuZGxlIG1f
aGFuZGxlOwogICAgIEdMdWludCBtX2Zvcm1hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVj
dG9yLmgKaW5kZXggNWNkZWRlNS4uN2ZkY2QxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1Nl
bGVjdG9yLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBVU0UoR0xYKQogCiAjaW5jbHVkZSAiWDEx
SGVscGVyLmgiCisjaW5jbHVkZSAiWFVuaXF1ZS5oIgogI2luY2x1ZGUgPG9wZW5nbC9HTERlZnMu
aD4KICNpbmNsdWRlIDxvcGVuZ2wvR0xQbGF0Zm9ybVN1cmZhY2UuaD4KIApAQCAtMTQwLDEzICsx
NDEsMTMgQEAgcHJpdmF0ZToKICAgICBHTFhGQkNvbmZpZyBmaW5kTWF0Y2hpbmdDb25maWcoY29u
c3QgaW50IGF0dHJpYnV0ZXNbXSwgaW50IGRlcHRoID0gMzIpCiAgICAgewogICAgICAgICBpbnQg
bnVtQXZhaWxhYmxlQ29uZmlnczsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdMWEZCQ29uZmln
W10sIFgxMURlbGV0ZXI+IHRlbXAoZ2xYQ2hvb3NlRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVE
aXNwbGF5KCksIERlZmF1bHRTY3JlZW4oWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCkpLCBhdHRy
aWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncykpOworICAgICAgICBYVW5pcXVlUHRyPEdMWEZC
Q29uZmlnPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgp
LCBEZWZhdWx0U2NyZWVuKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpKSwgYXR0cmlidXRlcywg
Jm51bUF2YWlsYWJsZUNvbmZpZ3MpKTsKIAogICAgICAgICBpZiAoIW51bUF2YWlsYWJsZUNvbmZp
Z3MgfHwgIXRlbXAuZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG51bUF2YWlsYWJsZUNvbmZpZ3M7ICsraSkgewotICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiBzY29wZWRWaXN1YWxJbmZv
IHsgZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCB0
ZW1wW2ldKSB9OworICAgICAgICAgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gc2NvcGVkVmlz
dWFsSW5mbyB7IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3Bs
YXkoKSwgdGVtcFtpXSkgfTsKICAgICAgICAgICAgIGlmICghc2NvcGVkVmlzdWFsSW5mby5nZXQo
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTY4LDcgKzE2OSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogICAgICAgICAvLyBEaWQgbm90IGZpbmQgYW55IHZpc3VhbCBzdXBw
b3J0aW5nIGFscGhhLCBzZWxlY3QgdGhlIGZpcnN0IGF2YWlsYWJsZSBjb25maWcuCi0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gc2NvcGVkVmlzdWFsSW5m
byB7IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwg
dGVtcFswXSkgfTsKKyAgICAgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gc2NvcGVkVmlzdWFs
SW5mbyB7IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXko
KSwgdGVtcFswXSkgfTsKIAogICAgICAgICBpZiAoKG1fYXR0cmlidXRlcyAmIEdMUGxhdGZvcm1T
dXJmYWNlOjpTdXBwb3J0QWxwaGEpICYmIChzY29wZWRWaXN1YWxJbmZvLT5kZXB0aCAhPSAzMikp
CiAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMgJj0gfkdMUGxhdGZvcm1TdXJmYWNlOjpTdXBwb3J0
QWxwaGE7CkBAIC0xNzksMTMgKzE4MCwxMyBAQCBwcml2YXRlOgogICAgIEdMWEZCQ29uZmlnIGZp
bmRNYXRjaGluZ0NvbmZpZ1dpdGhWaXN1YWxJZChjb25zdCBpbnQgYXR0cmlidXRlc1tdLCBpbnQg
ZGVwdGgsIFZpc3VhbElEIGlkKQogICAgIHsKICAgICAgICAgaW50IG51bUF2YWlsYWJsZUNvbmZp
Z3M7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHTFhGQkNvbmZpZ1tdLCBYMTFEZWxldGVyPiB0
ZW1wKGdsWENob29zZUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCBEZWZhdWx0
U2NyZWVuKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpKSwgYXR0cmlidXRlcywgJm51bUF2YWls
YWJsZUNvbmZpZ3MpKTsKKyAgICAgICAgWFVuaXF1ZVB0cjxHTFhGQkNvbmZpZz4gdGVtcChnbFhD
aG9vc2VGQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgRGVmYXVsdFNjcmVlbihY
MTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVDb25m
aWdzKSk7CiAKICAgICAgICAgaWYgKCFudW1BdmFpbGFibGVDb25maWdzIHx8ICF0ZW1wLmdldCgp
KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1BdmFpbGFibGVDb25maWdzOyArK2kpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxY
VmlzdWFsSW5mbywgWDExRGVsZXRlcj4gc2NvcGVkVmlzdWFsSW5mbyB7IGdsWEdldFZpc3VhbEZy
b21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgdGVtcFtpXSkgfTsKKyAgICAg
ICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHNjb3BlZFZpc3VhbEluZm8geyBnbFhHZXRW
aXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXBbaV0pIH07
CiAgICAgICAgICAgICBpZiAoIXNjb3BlZFZpc3VhbEluZm8uZ2V0KCkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcAppbmRleCAxNmE4ZTAzLi41Zjc2
MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9nbHgvR0xYU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBV
U0UoR0xYKQogCisjaW5jbHVkZSAiWFVuaXF1ZS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBQRk5HTFhCSU5EVEVYSU1BR0VFWFRQUk9DIHBHbFhCaW5kVGV4SW1hZ2VFWFQgPSAw
OwpAQCAtNjcsNyArNjksNyBAQCBHTFhUcmFuc3BvcnRTdXJmYWNlOjpHTFhUcmFuc3BvcnRTdXJm
YWNlKGNvbnN0IEludFNpemUmIHNpemUsIFN1cmZhY2VBdHRyaWJ1dGVzCiAgICAgbV9zaGFyZWRE
aXNwbGF5ID0gWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCk7CiAgICAgYXR0cmlidXRlcyB8PSBH
TFBsYXRmb3JtU3VyZmFjZTo6RG91YmxlQnVmZmVyZWQ7CiAgICAgbV9jb25maWdTZWxlY3RvciA9
IHN0ZDo6bWFrZV91bmlxdWU8R0xYQ29uZmlnU2VsZWN0b3I+KGF0dHJpYnV0ZXMpOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gdmlzSW5mbyhtX2NvbmZpZ1Nl
bGVjdG9yLT52aXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnN1cmZhY2VDb250ZXh0Q29uZmln
KCkpKTsKKyAgICBYVW5pcXVlPFhWaXN1YWxJbmZvPiB2aXNJbmZvKG1fY29uZmlnU2VsZWN0b3It
PnZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rvci0+c3VyZmFjZUNvbnRleHRDb25maWcoKSkpOwog
CiAgICAgaWYgKCF2aXNJbmZvLmdldCgpKSB7CiAgICAgICAgIGRlc3Ryb3koKTsKQEAgLTE0NSw3
ICsxNDcsNyBAQCB2b2lkIEdMWE9mZlNjcmVlblN1cmZhY2U6OmluaXRpYWxpemUoU3VyZmFjZUF0
dHJpYnV0ZXMgYXR0cmlidXRlcykKIAogICAgIG1fY29uZmlnU2VsZWN0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEdMWENvbmZpZ1NlbGVjdG9yPihhdHRyaWJ1dGVzKTsKIAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gdmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9y
LT52aXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnBpeG1hcENvbnRleHRDb25maWcoKSkpOwor
ICAgIFhVbmlxdWU8WFZpc3VhbEluZm8+IHZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rvci0+dmlz
dWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT5waXhtYXBDb250ZXh0Q29uZmlnKCkpKTsKICAgICBY
MTFIZWxwZXI6OmNyZWF0ZVBpeG1hcCgmbV9waXhtYXAsICp2aXN1YWxJbmZvLmdldCgpKTsKIAog
ICAgIGlmICghbV9waXhtYXApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAKaW5kZXggODAxMGI1Ny4u
MzY4YmE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJYMTFIZWxwZXIuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheVgxMS5oIgorI2lu
Y2x1ZGUgIlhVbmlxdWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMjMsNyArMjI0
LDcgQEAgdm9pZCBYMTFIZWxwZXI6OmNyZWF0ZU9mZlNjcmVlbldpbmRvdyh1aW50MzJfdCogaGFu
ZGxlSWQsIGNvbnN0IEVHTGludCBpZCwgYm9vbAogICAgIG1lbXNldCgmdmlzdWFsSW5mb1RlbXBs
YXRlLCAwLCBzaXplb2YoWFZpc3VhbEluZm8pKTsKICAgICB2aXN1YWxJbmZvVGVtcGxhdGUudmlz
dWFsaWQgPSB2aXN1YWxJZDsKICAgICBpbnQgbWF0Y2hpbmdDb3VudCA9IDA7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiBtYXRjaGluZ1Zpc3VhbHMoWEdldFZp
c3VhbEluZm8obmF0aXZlRGlzcGxheSgpLCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZvVGVtcGxh
dGUsICZtYXRjaGluZ0NvdW50KSk7CisgICAgWFVuaXF1ZTxYVmlzdWFsSW5mbz4gbWF0Y2hpbmdW
aXN1YWxzKFhHZXRWaXN1YWxJbmZvKG5hdGl2ZURpc3BsYXkoKSwgVmlzdWFsSURNYXNrLCAmdmlz
dWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCkpOwogICAgIFhWaXN1YWxJbmZvKiBmb3Vu
ZFZpc3VhbCA9IDA7CiAKICAgICBpZiAobWF0Y2hpbmdWaXN1YWxzKSB7CkBAIC0yNjAsNyArMjYx
LDcgQEAgdm9pZCBYMTFIZWxwZXI6OmNyZWF0ZVBpeG1hcChQaXhtYXAqIGhhbmRsZUlkLCBjb25z
dCBFR0xpbnQgaWQsIGJvb2wgaGFzQWxwaGEsIGMKICAgICBtZW1zZXQoJnZpc3VhbEluZm9UZW1w
bGF0ZSwgMCwgc2l6ZW9mKFhWaXN1YWxJbmZvKSk7CiAgICAgdmlzdWFsSW5mb1RlbXBsYXRlLnZp
c3VhbGlkID0gdmlzdWFsSWQ7CiAgICAgaW50IG1hdGNoaW5nQ291bnQgPSAwOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gbWF0Y2hpbmdWaXN1YWxzKFhHZXRW
aXN1YWxJbmZvKG5hdGl2ZURpc3BsYXkoKSwgVmlzdWFsSURNYXNrLCAmdmlzdWFsSW5mb1RlbXBs
YXRlLCAmbWF0Y2hpbmdDb3VudCkpOworICAgIFhVbmlxdWU8WFZpc3VhbEluZm8+IG1hdGNoaW5n
VmlzdWFscyhYR2V0VmlzdWFsSW5mbyhuYXRpdmVEaXNwbGF5KCksIFZpc3VhbElETWFzaywgJnZp
c3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpKTsKICAgICBYVmlzdWFsSW5mbyogZm91
bmRWaXN1YWwgPSAwOwogICAgIGludCByZXF1aXJlZERlcHRoID0gaGFzQWxwaGEgPyAzMiA6IDI0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9nbHgvWDExSGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9nbHgvWDExSGVscGVyLmgKaW5kZXggMTAzZjAwMS4uN2Y1ZTRjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFI
ZWxwZXIuaApAQCAtNDIsMTUgKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBYMTFEZWxldGVyIHsKLXB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIG9w
ZXJhdG9yKCkoVCogcmVzb3VyY2UpCi0gICAgewotICAgICAgICBpZiAocmVzb3VyY2UpCi0gICAg
ICAgICAgICBYRnJlZShyZXNvdXJjZSk7Ci0gICAgfQotfTsKLQogY2xhc3MgWDExSGVscGVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQaXhtYXAoUGl4bWFwKiwgY29uc3QgWFZp
c3VhbEluZm8mLCBjb25zdCBJbnRTaXplJiA9IEludFNpemUoMSwgMSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZTM0MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5jcHAKQEAgLTAsMCArMSw3OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlhVbmlxdWUuaCIKKworI2lmIFBMQVRGT1JNKFgxMSkKKyNpbmNs
dWRlIDxYMTEvWGxpYi5oPgorI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2UuaD4KKwor
I2lmIFVTRShHTFgpCisjaW5jbHVkZSA8R0wvZ2x4Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit0ZW1wbGF0ZTw+IHZvaWQgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6Q29s
b3JtYXA+OjpkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKK3sKKyAgICBp
ZiAocmVzb3VyY2UpCisgICAgICAgIFhGcmVlQ29sb3JtYXAoZG93bmNhc3Q8UGxhdGZvcm1EaXNw
bGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIHJlc291
cmNlKTsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpE
YW1hZ2U+OjpkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKK3sKKyAgICBp
ZiAocmVzb3VyY2UpCisgICAgICAgIFhEYW1hZ2VEZXN0cm95KGRvd25jYXN0PFBsYXRmb3JtRGlz
cGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCByZXNv
dXJjZSk7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6
UGl4bWFwPjo6ZGVsZXRlWFJlc291cmNlKGxvbmcgdW5zaWduZWQgcmVzb3VyY2UpCit7CisgICAg
aWYgKHJlc291cmNlKQorICAgICAgICBYRnJlZVBpeG1hcChkb3duY2FzdDxQbGF0Zm9ybURpc3Bs
YXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgcmVzb3Vy
Y2UpOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6Oldp
bmRvdz46OmRlbGV0ZVhSZXNvdXJjZShsb25nIHVuc2lnbmVkIHJlc291cmNlKQoreworICAgIGlm
IChyZXNvdXJjZSkKKyAgICAgICAgWERlc3Ryb3lXaW5kb3coZG93bmNhc3Q8UGxhdGZvcm1EaXNw
bGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIHJlc291
cmNlKTsKK30KKworI2lmIFVTRShHTFgpCit0ZW1wbGF0ZTw+IHZvaWQgWFVuaXF1ZVJlc291cmNl
PFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj46OmRlbGV0ZVhSZXNvdXJjZShsb25nIHVuc2lnbmVkIHJl
c291cmNlKQoreworICAgIGlmIChyZXNvdXJjZSkKKyAgICAgICAgZ2xYRGVzdHJveVBidWZmZXIo
ZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXkoKSkubmF0aXZlKCksIHJlc291cmNlKTsKK30KKwordGVtcGxhdGU8PiB2b2lkIFhVbmlxdWVS
ZXNvdXJjZTxYUmVzb3VyY2U6OkdMWFBpeG1hcD46OmRlbGV0ZVhSZXNvdXJjZShsb25nIHVuc2ln
bmVkIHJlc291cmNlKQoreworICAgIGlmIChyZXNvdXJjZSkKKyAgICAgICAgZ2xYRGVzdHJveUdM
WFBpeG1hcChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgcmVzb3VyY2UpOworfQorI2VuZGlmIC8vIFVTRShHTFgp
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2OWE1YWUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5oCkBAIC0wLDAgKzEs
MTY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFhVbmlxdWVfaAorI2RlZmluZSBYVW5pcXVlX2gKKworI2lmIFBMQVRGT1JNKFgxMSkKKyNpbmNs
dWRlICJQbGF0Zm9ybURpc3BsYXlYMTEuaCIKKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KKworI2lm
IFVTRShHTFgpCit0eXBlZGVmIHN0cnVjdCBfX0dMWGNvbnRleHRSZWMqIEdMWENvbnRleHQ7Cit0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgR0xYUGJ1ZmZlcjsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBH
TFhQaXhtYXA7CisKK2V4dGVybiAiQyIgdm9pZCBnbFhEZXN0cm95Q29udGV4dChEaXNwbGF5Kiwg
R0xYQ29udGV4dCk7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorc3RydWN0IFhQdHJEZWxldGVyIHsKKyAgICB2b2lkIG9wZXJhdG9yKCkoVCog
cHRyKSBjb25zdCB7IFhGcmVlKHB0cik7IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1
c2luZyBYVW5pcXVlUHRyID0gc3RkOjp1bmlxdWVfcHRyPFQsIFhQdHJEZWxldGVyPFQ+PjsKKwor
I2RlZmluZSBERUZJTkVfWFBUUl9ERUxFVEVSKHR5cGVOYW1lLCBkZWxldGVyRnVuYykgXAorICAg
IHRlbXBsYXRlPD4gc3RydWN0IFhQdHJEZWxldGVyPHR5cGVOYW1lPiBcCisgICAgeyBcCisgICAg
ICAgIHZvaWQgb3BlcmF0b3IoKSAodHlwZU5hbWUqIHB0cikgY29uc3QgXAorICAgICAgICB7IFwK
KyAgICAgICAgICAgIGlmIChwdHIpIFwKKyAgICAgICAgICAgICAgICBkZWxldGVyRnVuYyhwdHIp
OyBcCisgICAgICAgIH0gXAorICAgIH07CisKKyNkZWZpbmUgREVGSU5FX1hQVFJfREVMRVRFUl9X
SVRIX0RJU1BMQVkodHlwZU5hbWUsIGRlbGV0ZXJGdW5jKSBcCisgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgWFB0ckRlbGV0ZXI8dHlwZU5hbWU+IFwKKyAgICB7IFwKKyAgICAgICAgdm9pZCBvcGVyYXRv
cigpICh0eXBlTmFtZSogcHRyKSBjb25zdCBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgaWYg
KHB0cikgXAorICAgICAgICAgICAgICAgIGRlbGV0ZXJGdW5jKGRvd25jYXN0PFBsYXRmb3JtRGlz
cGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBwdHIp
OyBcCisgICAgICAgIH0gXAorICAgIH07CisKKworREVGSU5FX1hQVFJfREVMRVRFUihYSW1hZ2Us
IFhEZXN0cm95SW1hZ2UpCitERUZJTkVfWFBUUl9ERUxFVEVSX1dJVEhfRElTUExBWShfWEdDLCBY
RnJlZUdDKQorCisjaWYgVVNFKEdMWCkKK0RFRklORV9YUFRSX0RFTEVURVJfV0lUSF9ESVNQTEFZ
KF9fR0xYY29udGV4dFJlYywgZ2xYRGVzdHJveUNvbnRleHQpCisjZW5kaWYKKworI3VuZGVmIERF
RklORV9YUFRSX0RFTEVURVIKKyN1bmRlZiBERUZJTkVfWFBUUl9ERUxFVEVSX1dJVEhfRElTUExB
WQorCitlbnVtIGNsYXNzIFhSZXNvdXJjZSB7CisgICAgQ29sb3JtYXAsCisgICAgRGFtYWdlLAor
ICAgIFBpeG1hcCwKKyAgICBXaW5kb3csCisjaWYgVVNFKEdMWCkKKyAgICBHTFhQYnVmZmVyLAor
ICAgIEdMWFBpeG1hcCwKKyNlbmRpZgorfTsKKwordGVtcGxhdGUgPFhSZXNvdXJjZSBUPiBjbGFz
cyBYVW5pcXVlUmVzb3VyY2UgeworcHVibGljOgorICAgIFhVbmlxdWVSZXNvdXJjZSgpCisgICAg
ICAgIDogbV9yZXNvdXJjZSgwKQorICAgIHsKKyAgICB9CisKKyAgICBYVW5pcXVlUmVzb3VyY2Uo
bG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKKyAgICAgICAgOiBtX3Jlc291cmNlKHJlc291cmNlKQor
ICAgIHsKKyAgICB9CisKKyAgICBYVW5pcXVlUmVzb3VyY2UoWFVuaXF1ZVJlc291cmNlJiYgdW5p
cXVlUmVzb3VyY2UpCisgICAgICAgIDogbV9yZXNvdXJjZSh1bmlxdWVSZXNvdXJjZS5yZWxlYXNl
KCkpCisgICAgeworICAgIH0KKworICAgIFhVbmlxdWVSZXNvdXJjZSYgb3BlcmF0b3I9KFhVbmlx
dWVSZXNvdXJjZSYmIHVuaXF1ZVJlc291cmNlKQorICAgIHsKKyAgICAgICAgcmVzZXQodW5pcXVl
UmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAg
IH5YVW5pcXVlUmVzb3VyY2UoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICB9CisKKyAg
ICBsb25nIHVuc2lnbmVkIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2U7IH0KKyAgICBs
b25nIHVuc2lnbmVkIHJlbGVhc2UoKSB7IGxvbmcgdW5zaWduZWQgcmVzb3VyY2UgPSBtX3Jlc291
cmNlOyBtX3Jlc291cmNlID0gMDsgcmV0dXJuIHJlc291cmNlOyB9CisKKyAgICB2b2lkIHJlc2V0
KGxvbmcgdW5zaWduZWQgcmVzb3VyY2UgPSAwKQorICAgIHsKKyAgICAgICAgc3RkOjpzd2FwKG1f
cmVzb3VyY2UsIHJlc291cmNlKTsKKyAgICAgICAgZGVsZXRlWFJlc291cmNlKHJlc291cmNlKTsK
KyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3Jlc291cmNl
OyB9CisKKyAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNv
bnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCisgICAgdHlw
ZWRlZiB2b2lkKiAoWFVuaXF1ZVJlc291cmNlOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAg
b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fcmVzb3VyY2UgPyByZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPigx
KSA6IDA7CisgICAgfQorCisgICAgWFVuaXF1ZVJlc291cmNlKGNvbnN0IFhVbmlxdWVSZXNvdXJj
ZSYpID0gZGVsZXRlOworICAgIFhVbmlxdWVSZXNvdXJjZSYgb3BlcmF0b3I9KGNvbnN0IFhVbmlx
dWVSZXNvdXJjZSYpID0gZGVsZXRlOworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBkZWxldGVY
UmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSk7CisKKyAgICBsb25nIHVuc2lnbmVkIG1f
cmVzb3VyY2U7Cit9OworCit0eXBlZGVmIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OkNvbG9y
bWFwPiBYVW5pcXVlQ29sb3JtYXA7Cit0eXBlZGVmIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6
OkRhbWFnZT4gWFVuaXF1ZURhbWFnZTsKK3R5cGVkZWYgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJj
ZTo6UGl4bWFwPiBYVW5pcXVlUGl4bWFwOwordHlwZWRlZiBYVW5pcXVlUmVzb3VyY2U8WFJlc291
cmNlOjpXaW5kb3c+IFhVbmlxdWVXaW5kb3c7CisjaWYgVVNFKEdMWCkKK3R5cGVkZWYgWFVuaXF1
ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj4gWFVuaXF1ZUdMWFBidWZmZXI7Cit0eXBl
ZGVmIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OkdMWFBpeG1hcD4gWFVuaXF1ZUdMWFBpeG1h
cDsKKyNlbmRpZgorCisvLyBHaXZlIGEgbmFtZSBhbHNvIHRvIHRoZXNlIFhVbmlxdWVQdHIgdG8g
YXZvaWQgaGF2aW5nIHRvIHVzZSB0aGUgaW50ZXJuYWwgc3RydWN0IG5hbWVzIChfWEdDLCBfX0dM
WGNvbnRleHRSZWMsIC4uLikuCit0eXBlZGVmIFhVbmlxdWVQdHI8X1hHQz4gWFVuaXF1ZUdDOwor
I2lmIFVTRShHTFgpCit0eXBlZGVmIFhVbmlxdWVQdHI8X19HTFhjb250ZXh0UmVjPiBYVW5pcXVl
R0xYQ29udGV4dDsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBQTEFURk9STShYMTEpCisKKyNlbmRpZiAvLyBYVW5pcXVlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0N2Q4
ZjM2Li4yOGRjYzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzUgQEAKIDIwMTUtMDUtMDIgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAgIFtYMTFd
IEFkZCBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8gYXV0b21hdGljYWxseSBmcmVl
IFggcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDQ1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgWFVuaXF1ZVB0ciBhbmQgWFVuaXF1ZVJlc291cmNlIHRvIGZyZWUgWCByZXNvdXJj
ZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3gxMSBkaXIKKyAgICAgICAgdG8gdGhlIGluY2x1ZGUgZGlyIGxpc3Qu
CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vz
cy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdT
dG9yZTo6Y3JlYXRlQmFja2VuZCk6IERvIG5vdCBwYXNzIHRoZSBkaXNwbGF5IHRvCisgICAgICAg
IHRoZSBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEgY29uc3RydWN0b3IuCisgICAgICAgICog
VUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdyk6CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdzo6cmVzaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3c6OmNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKToKKyAgICAgICAgKFdl
YktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnN1cmZhY2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaDoKKyAgICAgICAgKFdlYktp
dDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OndpbmRvd0lEKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3ds
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtRGVzdHJveSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQpOgor
CisyMDE1LTA1LTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
KwogICAgICAgICBbR1RLXVtFRkxdIFVuaWZ5IHBsYXRmb3JtIGRpc3BsYXkgaGFuZGxpbmcKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDUxNwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGMyYTAwNDYuLjAwNmUzMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCkBAIC0yMjcsNiArMjI3LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwiCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlIgorICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy94MTEiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL25ldHdvcmsvc291cCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC9lbmNo
YW50IgogICAgICIke1dFQktJVDJfRElSfS9OZXR3b3JrUHJvY2Vzcy9lZmwiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCmluZGV4IDlhNjQ5ZTguLjA0Y2U4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RL
LmNtYWtlCkBAIC00NTksNiArNDU5LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJ
UkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2d0ayIKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9n
cmFwaGljcy94MTEiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvc291cCIK
ICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC9lbmNoYW50IgogICAgICIke1dFQktJ
VDJfRElSfS9EYXRhYmFzZVByb2Nlc3MvdW5peCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IGJkODBiMzcuLjJmYjMw
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3Rv
cmVDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdT
dG9yZUNhaXJvLmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2luZ1N0
b3JlQmFja2VuZENhaXJvPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQoKQogICAgICAgICBH
ZGtWaXN1YWwqIHZpc3VhbCA9IGd0a193aWRnZXRfZ2V0X3Zpc3VhbChtX3dlYlBhZ2VQcm94eS52
aWV3V2lkZ2V0KCkpOwogICAgICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGdka192aXN1YWxfZ2V0
X3NjcmVlbih2aXN1YWwpOwogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5
WDExPihzaGFyZWREaXNwbGF5KS5uYXRpdmUoKSA9PSBHREtfU0NSRUVOX1hESVNQTEFZKHNjcmVl
bikpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5k
Q2Fpcm9YMTE+KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oc2hhcmVkRGlzcGxheSkubmF0
aXZlKCksIEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikp
LAorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm9YMTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikp
LAogICAgICAgICAgICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIGdka192aXN1YWxfZ2V0
X2RlcHRoKHZpc3VhbCksIG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCmluZGV4IDQ0NGY4NjQuLjNmYmEzMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3cuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBVU0UoUkVESVJFQ1RFRF9Y
Q09NUE9TSVRFX1dJTkRPVykKIAorI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjaW5jbHVkZSA8WDEx
L2V4dGVuc2lvbnMvWGNvbXBvc2l0ZS5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1h
Z2UuaD4KICNpbmNsdWRlIDxjYWlyby14bGliLmg+CkBAIC0xMzUsMjEgKzEzNiwxOCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IFJlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93OjpjcmVhdGUoRwogCiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3coR2RrV2luZG93KiBwYXJlbnRXaW5kb3csIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBkYW1hZ2VOb3RpZnkpCiAgICAgOiBtX2Rpc3BsYXkoR0RLX0RJU1BMQVlfWERJ
U1BMQVkoZ2RrX3dpbmRvd19nZXRfZGlzcGxheShwYXJlbnRXaW5kb3cpKSkKLSAgICAsIG1fd2lu
ZG93KDApCi0gICAgLCBtX3BhcmVudFdpbmRvdygwKQotICAgICwgbV9waXhtYXAoMCkKLSAgICAs
IG1fZGFtYWdlKDApCiAgICAgLCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemUoZmFsc2UpCiB7
CisgICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpID09IG1fZGlzcGxheSk7CiAgICAgU2NyZWVuKiBz
Y3JlZW4gPSBEZWZhdWx0U2NyZWVuT2ZEaXNwbGF5KG1fZGlzcGxheSk7CiAKICAgICBHZGtWaXN1
YWwqIHZpc3VhbCA9IGdka193aW5kb3dfZ2V0X3Zpc3VhbChwYXJlbnRXaW5kb3cpOwotICAgIENv
bG9ybWFwIGNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFwKG1fZGlzcGxheSwgUm9vdFdpbmRvd09m
U2NyZWVuKHNjcmVlbiksIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBBbGxvY05vbmUpOwor
ICAgIFhVbmlxdWVDb2xvcm1hcCBjb2xvcm1hcChYQ3JlYXRlQ29sb3JtYXAobV9kaXNwbGF5LCBS
b290V2luZG93T2ZTY3JlZW4oc2NyZWVuKSwgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIEFs
bG9jTm9uZSkpOwogCiAgICAgLy8gVGhpcyBpcyBiYXNlZCBvbiBjb2RlIGZyb20gQ2hyb21pdW06
IHNyYy9jb250ZW50L2NvbW1vbi9ncHUvaW1hZ2VfdHJhbnNwb3J0X3N1cmZhY2VfbGludXguY2MK
ICAgICBYU2V0V2luZG93QXR0cmlidXRlcyB3aW5kb3dBdHRyaWJ1dGVzOwogICAgIHdpbmRvd0F0
dHJpYnV0ZXMub3ZlcnJpZGVfcmVkaXJlY3QgPSBUcnVlOwotICAgIHdpbmRvd0F0dHJpYnV0ZXMu
Y29sb3JtYXAgPSBjb2xvcm1hcDsKKyAgICB3aW5kb3dBdHRyaWJ1dGVzLmNvbG9ybWFwID0gY29s
b3JtYXAuZ2V0KCk7CiAKICAgICAvLyBDV0JvcmRlclBpeGVsIG11c3QgYmUgcHJlc2VudCB3aGVu
IHRoZSBkZXB0aCBkb2Vzbid0IG1hdGNoIHRoZSBwYXJlbnQncyBvbmUuCiAgICAgLy8gU2VlIGh0
dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvdHJlZS9kaXgvd2luZG93LmM/
aWQ9eG9yZy1zZXJ2ZXItMS4xNi4wI243MDMuCkBAIC0xNjQsMTMgKzE2MiwxMyBAQCBSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coR2RrV2luZG93
KiBwYXJlbnRXaW5kb3csCiAgICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLAogICAg
ICAgICBDV092ZXJyaWRlUmVkaXJlY3QgfCBDV0NvbG9ybWFwIHwgQ1dCb3JkZXJQaXhlbCwKICAg
ICAgICAgJndpbmRvd0F0dHJpYnV0ZXMpOwotICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3Bh
cmVudFdpbmRvdyk7CisgICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fcGFyZW50V2luZG93Lmdl
dCgpKTsKIAogICAgIHdpbmRvd0F0dHJpYnV0ZXMuZXZlbnRfbWFzayA9IFN0cnVjdHVyZU5vdGlm
eU1hc2s7CiAgICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IEZhbHNlOwog
ICAgIC8vIENyZWF0ZSB0aGUgd2luZG93IG9mIGF0IGxhc3QgMXgxIHNpbmNlIFggZG9lc24ndCBh
bGxvdyB0byBjcmVhdGUgZW1wdHkgd2luZG93cy4KICAgICBtX3dpbmRvdyA9IFhDcmVhdGVXaW5k
b3cobV9kaXNwbGF5LAotICAgICAgICBtX3BhcmVudFdpbmRvdywKKyAgICAgICAgbV9wYXJlbnRX
aW5kb3cuZ2V0KCksCiAgICAgICAgIDAsIDAsCiAgICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS53
aWR0aCgpKSwKICAgICAgICAgc3RkOjptYXgoMSwgbV9zaXplLmhlaWdodCgpKSwKQEAgLTE4MCwy
MSArMTc4LDE5IEBAIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdyhHZGtXaW5kb3cqIHBhcmVudFdpbmRvdywKICAgICAgICAgQ29weUZyb21QYXJl
bnQsCiAgICAgICAgIENXRXZlbnRNYXNrLAogICAgICAgICAmd2luZG93QXR0cmlidXRlcyk7Ci0g
ICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93KTsKKyAgICBYTWFwV2luZG93KG1fZGlz
cGxheSwgbV93aW5kb3cuZ2V0KCkpOwogCi0gICAgWEZyZWVDb2xvcm1hcChtX2Rpc3BsYXksIGNv
bG9ybWFwKTsKLQotICAgIHhEYW1hZ2VOb3RpZmllcigpLmFkZChtX3dpbmRvdywgV1RGOjptb3Zl
KGRhbWFnZU5vdGlmeSkpOworICAgIHhEYW1hZ2VOb3RpZmllcigpLmFkZChtX3dpbmRvdy5nZXQo
KSwgV1RGOjptb3ZlKGRhbWFnZU5vdGlmeSkpOwogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAg
WEV2ZW50IGV2ZW50OwotICAgICAgICBYV2luZG93RXZlbnQobV9kaXNwbGF5LCBtX3dpbmRvdywg
U3RydWN0dXJlTm90aWZ5TWFzaywgJmV2ZW50KTsKLSAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT0g
TWFwTm90aWZ5ICYmIGV2ZW50LnhtYXAud2luZG93ID09IG1fd2luZG93KQorICAgICAgICBYV2lu
ZG93RXZlbnQobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgU3RydWN0dXJlTm90aWZ5TWFzaywg
JmV2ZW50KTsKKyAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT0gTWFwTm90aWZ5ICYmIGV2ZW50Lnht
YXAud2luZG93ID09IG1fd2luZG93LmdldCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgIFhTZWxlY3RJbnB1dChtX2Rpc3BsYXksIG1fd2luZG93LCBOb0V2ZW50TWFzayk7Ci0gICAg
WENvbXBvc2l0ZVJlZGlyZWN0V2luZG93KG1fZGlzcGxheSwgbV93aW5kb3csIENvbXBvc2l0ZVJl
ZGlyZWN0TWFudWFsKTsKLSAgICBtX2RhbWFnZSA9IFhEYW1hZ2VDcmVhdGUobV9kaXNwbGF5LCBt
X3dpbmRvdywgWERhbWFnZVJlcG9ydE5vbkVtcHR5KTsKKyAgICBYU2VsZWN0SW5wdXQobV9kaXNw
bGF5LCBtX3dpbmRvdy5nZXQoKSwgTm9FdmVudE1hc2spOworICAgIFhDb21wb3NpdGVSZWRpcmVj
dFdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBDb21wb3NpdGVSZWRpcmVjdE1hbnVh
bCk7CisgICAgbV9kYW1hZ2UgPSBYRGFtYWdlQ3JlYXRlKG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0
KCksIFhEYW1hZ2VSZXBvcnROb25FbXB0eSk7CiB9CiAKIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93Ojp+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coKQpAQCAtMjA0LDEyICsyMDAsMTIgQEAg
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6On5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygp
CiAgICAgQVNTRVJUKG1fd2luZG93KTsKICAgICBBU1NFUlQobV9wYXJlbnRXaW5kb3cpOwogCi0g
ICAgeERhbWFnZU5vdGlmaWVyKCkucmVtb3ZlKG1fd2luZG93KTsKKyAgICB4RGFtYWdlTm90aWZp
ZXIoKS5yZW1vdmUobV93aW5kb3cuZ2V0KCkpOwogCi0gICAgWERhbWFnZURlc3Ryb3kobV9kaXNw
bGF5LCBtX2RhbWFnZSk7Ci0gICAgWERlc3Ryb3lXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdyk7
Ci0gICAgWERlc3Ryb3lXaW5kb3cobV9kaXNwbGF5LCBtX3BhcmVudFdpbmRvdyk7Ci0gICAgY2xl
YW51cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UoKTsKKyAgICAvLyBFeHBsaWNpdCByZXNldCB0aGVz
ZSBiZWNhdXNlIHdlIG5lZWQgdG8gZW5zdXJlIGl0IGhhcHBlbnMgaW4gdGhpcyBvcmRlci4KKyAg
ICBtX2RhbWFnZS5yZXNldCgpOworICAgIG1fd2luZG93LnJlc2V0KCk7CisgICAgbV9wYXJlbnRX
aW5kb3cucmVzZXQoKTsKIH0KIAogdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVz
aXplKGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0yMTgsNyArMjE0LDcgQEAgdm9pZCBSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFJlc2l6ZSB0aGUgd2luZG93IHRvIGF0IGxhc3QgMXgxIHNpbmNl
IFggZG9lc24ndCBhbGxvdyB0byBjcmVhdGUgZW1wdHkgd2luZG93cy4KLSAgICBYUmVzaXplV2lu
ZG93KG1fZGlzcGxheSwgbV93aW5kb3csIHN0ZDo6bWF4KDEsIHNpemUud2lkdGgoKSksIHN0ZDo6
bWF4KDEsIHNpemUuaGVpZ2h0KCkpKTsKKyAgICBYUmVzaXplV2luZG93KG1fZGlzcGxheSwgbV93
aW5kb3cuZ2V0KCksIHN0ZDo6bWF4KDEsIHNpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIHNpemUu
aGVpZ2h0KCkpKTsKICAgICBYRmx1c2gobV9kaXNwbGF5KTsKIAogICAgIG1fc2l6ZSA9IHNpemU7
CkBAIC0yMzIsOSArMjI4LDggQEAgdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y2xl
YW51cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UoKQogICAgIGlmICghbV9waXhtYXApCiAgICAgICAg
IHJldHVybjsKIAotICAgIFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbV9waXhtYXApOwotICAgIG1f
cGl4bWFwID0gMDsKICAgICBtX3N1cmZhY2UgPSBudWxscHRyOworICAgIG1fcGl4bWFwLnJlc2V0
KCk7CiB9CiAKIGNhaXJvX3N1cmZhY2VfdCogUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnN1
cmZhY2UoKQpAQCAtMjQ3LDIwICsyNDIsMTkgQEAgY2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdzo6c3VyZmFjZSgpCiAKICAgICBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJS
ZXNpemUgPSBmYWxzZTsKIAotICAgIFBpeG1hcCBuZXdQaXhtYXAgPSBYQ29tcG9zaXRlTmFtZVdp
bmRvd1BpeG1hcChtX2Rpc3BsYXksIG1fd2luZG93KTsKKyAgICBYVW5pcXVlUGl4bWFwIG5ld1Bp
eG1hcChYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgp
KSk7CiAgICAgaWYgKCFuZXdQaXhtYXApIHsKICAgICAgICAgY2xlYW51cFBpeG1hcEFuZFBpeG1h
cFN1cmZhY2UoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgWFdpbmRv
d0F0dHJpYnV0ZXMgd2luZG93QXR0cmlidXRlczsKLSAgICBpZiAoIVhHZXRXaW5kb3dBdHRyaWJ1
dGVzKG1fZGlzcGxheSwgbV93aW5kb3csICZ3aW5kb3dBdHRyaWJ1dGVzKSkgeworICAgIGlmICgh
WEdldFdpbmRvd0F0dHJpYnV0ZXMobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgJndpbmRvd0F0
dHJpYnV0ZXMpKSB7CiAgICAgICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7Ci0g
ICAgICAgIFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbmV3UGl4bWFwKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmV3U3VyZmFj
ZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9kaXNwbGF5LCBuZXdQaXht
YXAsIHdpbmRvd0F0dHJpYnV0ZXMudmlzdWFsLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdo
dCgpKSk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmV3U3VyZmFjZSA9IGFkb3B0UmVm
KGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9kaXNwbGF5LCBuZXdQaXhtYXAuZ2V0KCksIHdp
bmRvd0F0dHJpYnV0ZXMudmlzdWFsLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7
CiAKICAgICAvLyBOdmlkaWEgZHJpdmVycyBzZWVtIHRvIHByZXBhcmUgdGhlaXIgcmVkaXJlY3Rl
ZCB3aW5kb3cgcGl4bWFwIGFzeW5jaHJvbm91c2x5LCBzbyBmb3IgYSBmZXcgZnJhY3Rpb25zCiAg
ICAgLy8gb2YgYSBzZWNvbmQgYWZ0ZXIgZWFjaCByZXNpemUsIHdoaWxlIGRvaW5nIGNvbnRpbnVv
dXMgcmVzaXppbmcgKHdoaWNoIGNvbnN0YW50bHkgZGVzdHJveXMgYW5kIGNyZWF0ZXMKQEAgLTI3
NSw3ICsyNjksNyBAQCBjYWlyb19zdXJmYWNlX3QqIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
OjpzdXJmYWNlKCkKICAgICB9CiAKICAgICBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgp
OwotICAgIG1fcGl4bWFwID0gbmV3UGl4bWFwOworICAgIG1fcGl4bWFwID0gV1RGOjptb3ZlKG5l
d1BpeG1hcCk7CiAgICAgbV9zdXJmYWNlID0gbmV3U3VyZmFjZTsKICAgICByZXR1cm4gbV9zdXJm
YWNlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9S
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCmluZGV4IDNhYTRmZjUuLjU0ZjNmN2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdy5oCkBAIC0zMSwxMSArMzEsMTIgQEAKIAogI2luY2x1ZGUgPFdlYkNv
cmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRl
IDxYMTEvWGxpYi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvWFVuaXF1ZS5oPgogI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CiAKIHR5cGVkZWYgc3RydWN0IF9HZGtXaW5kb3cgR2RrV2luZG93OwogdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIERhbWFnZTsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBXaW5kb3c7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00NCw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBjcmVhdGUoR2Rr
V2luZG93Kiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRhbWFnZU5vdGlmeSk7CiAgICAgflJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93KCk7CiAKLSAgICBXaW5kb3cgd2luZG93SUQoKSBjb25zdCB7
IHJldHVybiBtX3dpbmRvdzsgfQorICAgIFdpbmRvdyB3aW5kb3dJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2luZG93LmdldCgpOyB9CiAgICAgdm9pZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpOwogICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSgpOwogCkBAIC01NCwxMCArNTUsMTAg
QEAgcHJpdmF0ZToKIAogICAgIERpc3BsYXkqIG1fZGlzcGxheTsKICAgICBXZWJDb3JlOjpJbnRT
aXplIG1fc2l6ZTsKLSAgICBXaW5kb3cgbV93aW5kb3c7Ci0gICAgV2luZG93IG1fcGFyZW50V2lu
ZG93OwotICAgIFBpeG1hcCBtX3BpeG1hcDsKLSAgICBEYW1hZ2UgbV9kYW1hZ2U7CisgICAgV2Vi
Q29yZTo6WFVuaXF1ZVdpbmRvdyBtX3dpbmRvdzsKKyAgICBXZWJDb3JlOjpYVW5pcXVlV2luZG93
IG1fcGFyZW50V2luZG93OworICAgIFdlYkNvcmU6OlhVbmlxdWVQaXhtYXAgbV9waXhtYXA7Cisg
ICAgV2ViQ29yZTo6WFVuaXF1ZURhbWFnZSBtX2RhbWFnZTsKICAgICBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBtX3N1cmZhY2U7CiAgICAgYm9vbCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCBiM2M4M2JkLi41ZDIyNjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uaApAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlICJXZWJIaXRUZXN0
UmVzdWx0LmgiCiAjZW5kaWYKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorI2luY2x1
ZGUgPFdlYkNvcmUvWFVuaXF1ZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIE1hY2hTZW5kUmlnaHQ7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwpAQCAtMzg3LDcgKzM5MSw3
IEBAIHByaXZhdGU6CiAgICAgTlBfQ0dDb250ZXh0IG1fbnBDR0NvbnRleHQ7CiAjZW5kaWYKICNl
bGlmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgIFBpeG1hcCBtX2RyYXdhYmxlOworICAg
IFdlYkNvcmU6OlhVbmlxdWVQaXhtYXAgbV9kcmF3YWJsZTsKICAgICBEaXNwbGF5KiBtX3BsdWdp
bkRpc3BsYXk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEd0a1dpZGdldCogbV9wbGF0Zm9ybVBs
dWdpbldpZGdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKaW5kZXgg
MzdmNDc5My4uMjM3MWYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtRGlzcGxheVgxMS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvWFVuaXF1ZS5oPgogCiAj
aWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPGd0ay9ndGsuaD4KQEAgLTE3NSwxMiArMTc2LDEw
IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dsZXNz
KCkKICAgICB2aXN1YWxUZW1wbGF0ZS5kZXB0aCA9IGRlcHRoOwogICAgIHZpc3VhbFRlbXBsYXRl
LmNfY2xhc3MgPSBUcnVlQ29sb3I7CiAgICAgaW50IG51bU1hdGNoaW5nOwotICAgIFhWaXN1YWxJ
bmZvKiB2aXN1YWxJbmZvID0gWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsU2NyZWVuTWFz
ayB8IFZpc3VhbERlcHRoTWFzayB8IFZpc3VhbENsYXNzTWFzaywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2aXN1YWxUZW1wbGF0ZSwgJm51bU1hdGNoaW5n
KTsKKyAgICBYVW5pcXVlUHRyPFhWaXN1YWxJbmZvPiB2aXN1YWxJbmZvKFhHZXRWaXN1YWxJbmZv
KGRpc3BsYXksIFZpc3VhbFNjcmVlbk1hc2sgfCBWaXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFz
c01hc2ssICZ2aXN1YWxUZW1wbGF0ZSwgJm51bU1hdGNoaW5nKSk7CiAgICAgQVNTRVJUKHZpc3Vh
bEluZm8pOwotICAgIFZpc3VhbCogdmlzdWFsID0gdmlzdWFsSW5mb1swXS52aXN1YWw7CisgICAg
VmlzdWFsKiB2aXN1YWwgPSB2aXN1YWxJbmZvLmdldCgpWzBdLnZpc3VhbDsKICAgICBBU1NFUlQo
dmlzdWFsKTsKLSAgICBYRnJlZSh2aXN1YWxJbmZvKTsKIAogICAgIGNhbGxiYWNrU3RydWN0LT52
aXN1YWwgPSB2aXN1YWw7CiAgICAgY2FsbGJhY2tTdHJ1Y3QtPmNvbG9ybWFwID0gWENyZWF0ZUNv
bG9ybWFwKGRpc3BsYXksIHJvb3RXaW5kb3dJRCgpLCB2aXN1YWwsIEFsbG9jTm9uZSk7CkBAIC0y
MzIsMTAgKzIzMSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtRGVzdHJveSgpCiAg
ICAgWEZyZWVDb2xvcm1hcChob3N0RGlzcGxheSwgY2FsbGJhY2tTdHJ1Y3QtPmNvbG9ybWFwKTsK
ICAgICBkZWxldGUgY2FsbGJhY2tTdHJ1Y3Q7CiAKLSAgICBpZiAobV9kcmF3YWJsZSkgewotICAg
ICAgICBYRnJlZVBpeG1hcChob3N0RGlzcGxheSwgbV9kcmF3YWJsZSk7Ci0gICAgICAgIG1fZHJh
d2FibGUgPSAwOwotICAgIH0KKyAgICBtX2RyYXdhYmxlLnJlc2V0KCk7CiAKICNpZiBQTEFURk9S
TShHVEspCiAgICAgaWYgKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpIHsKQEAgLTI2MiwxOCArMjU4
LDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRGlzcGxheSogZGlzcGxheSA9IHgxMUhvc3RE
aXNwbGF5KCk7Ci0gICAgaWYgKG1fZHJhd2FibGUpCi0gICAgICAgIFhGcmVlUGl4bWFwKGRpc3Bs
YXksIG1fZHJhd2FibGUpOwotCi0gICAgaWYgKG1fcGx1Z2luU2l6ZS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgbV9kcmF3YWJsZSA9IDA7CisgICAgbV9kcmF3YWJsZS5yZXNldCgpOworICAgIGlmICht
X3BsdWdpblNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9k
cmF3YWJsZSA9IFhDcmVhdGVQaXhtYXAoZGlzcGxheSwgcm9vdFdpbmRvd0lEKCksIG1fcGx1Z2lu
U2l6ZS53aWR0aCgpLCBtX3BsdWdpblNpemUuaGVpZ2h0KCksIGRpc3BsYXlEZXB0aCgpKTsKIAot
ICAgIFhTeW5jKGRpc3BsYXksIGZhbHNlKTsgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHNlcnZlciBr
bm93cyBhYm91dCB0aGUgRHJhd2FibGUuCisgICAgbV9kcmF3YWJsZSA9IFhDcmVhdGVQaXhtYXAo
eDExSG9zdERpc3BsYXkoKSwgcm9vdFdpbmRvd0lEKCksIG1fcGx1Z2luU2l6ZS53aWR0aCgpLCBt
X3BsdWdpblNpemUuaGVpZ2h0KCksIGRpc3BsYXlEZXB0aCgpKTsKKyAgICBYU3luYyh4MTFIb3N0
RGlzcGxheSgpLCBmYWxzZSk7IC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzZXJ2ZXIga25vd3MgYWJv
dXQgdGhlIERyYXdhYmxlLgogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVZpc2li
aWxpdHlEaWRDaGFuZ2UoKQpAQCAtMzA3LDcgKzI5Nyw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46
OnBsYXRmb3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBk
aXJ0CiAgICAgWEdyYXBoaWNzRXhwb3NlRXZlbnQmIGV4cG9zZUV2ZW50ID0geGV2ZW50LnhncmFw
aGljc2V4cG9zZTsKICAgICBleHBvc2VFdmVudC50eXBlID0gR3JhcGhpY3NFeHBvc2U7CiAgICAg
ZXhwb3NlRXZlbnQuZGlzcGxheSA9IHgxMUhvc3REaXNwbGF5KCk7Ci0gICAgZXhwb3NlRXZlbnQu
ZHJhd2FibGUgPSBtX2RyYXdhYmxlOworICAgIGV4cG9zZUV2ZW50LmRyYXdhYmxlID0gbV9kcmF3
YWJsZS5nZXQoKTsKIAogICAgIEludFJlY3QgZXhwb3NlZFJlY3QoZGlydHlSZWN0KTsKICAgICBl
eHBvc2VFdmVudC54ID0gZXhwb3NlZFJlY3QueCgpOwpAQCAtMzI0LDExICszMTQsOCBAQCB2b2lk
IE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGlydAogICAgICAgICBYU3luYyhtX3BsdWdpbkRpc3BsYXksIGZhbHNl
KTsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgVVNFKENBSVJPKSkK
LSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihj
YWlyb194bGliX3N1cmZhY2VfY3JlYXRlKG1fcGx1Z2luRGlzcGxheSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZHJhd2FibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRvdy53c19pbmZvKS0+dmlzdWFs
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wbHVnaW5TaXplLndpZHRoKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BsdWdpblNpemUuaGVpZ2h0KCkpKTsKKyAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZh
Y2VfY3JlYXRlKG1fcGx1Z2luRGlzcGxheSwgbV9kcmF3YWJsZS5nZXQoKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbykt
PnZpc3VhbCwgbV9wbHVnaW5TaXplLndpZHRoKCksIG1fcGx1Z2luU2l6ZS5oZWlnaHQoKSkpOwog
ICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAg
Y2Fpcm9fc2F2ZShjcik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252270</attachid>
            <date>2015-05-03 08:25:54 -0700</date>
            <delta_ts>2015-05-06 09:10:37 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wk-xunique.diff</filename>
            <type>text/plain</type>
            <size>54659</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NmUyNzYzLi45ODFkNTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQg
QEAKKzIwMTUtMDUtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtYMTFdIEFkZCBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8g
YXV0b21hdGljYWxseSBmcmVlIFggcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgWFVuaXF1ZVB0ciBhcyBhIHRlbXBsYXRlIGFsaWFz
IG9mIHN0ZDp1bmlxdWVfcHRyIHRvIGhhbmRsZSBYCisgICAgICAgIHJlc291cmNlcyB1c2luZyBw
b2ludGVycyBhbmQgWFVuaXF1ZVJlc291cmNlIGFzIGEgbmV3IGNsYXNzIHRvCisgICAgICAgIGhh
bmRsZSBYIHJlc291cmNlcyB1c2luZyBhIGxvbmcgdW5zaWduZWQgaWRlbnRpZmllci4gVGhpcwor
ICAgICAgICBzaW1wbGlmaWVzIHRoZSBjb2RlIGFuZCBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdCB0
byBsZWFrIFggcmVzb3VyY2VzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBu
ZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFk
ZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDEx
KToKKyAgICAgICAgUmVtb3ZlIHRoZSBkaXNwbGF5IG1lbWJlciwgYW5kIHVzZSBYVW5pcXVlIGZv
ciBQaXhtYXAgYW5kIEdDLgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZENh
aXJvWDExOjp+QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKToKKyAgICAgICAgUmVtb3ZlIGNv
ZGUgdG8gZXhwbGljaXRseSBmcmVlIFBpeG1hcCBhbmQgR0MuCisgICAgICAgIChXZWJDb3JlOjpC
YWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6OnNjcm9sbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQpOiBVc2UgWFVuaXF1ZSBhbmQgdGhl
CisgICAgICAgIG5ldyBjb25zdHJ1Y3RvciB0aGF0IHJlY2VpdmVzIGEgWElELCBzaW5jZSB0aGVy
ZSdzIG5vIGxvbmdlcgorICAgICAgICBjb25mbGljdCB3aXRoIHRoZSBvbmUgcmVjZWl2aW5nIGEg
UGJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNv
bnRleHQpOiBVc2UgWFVuaXF1ZSBhbmQgdGhlCisgICAgICAgIG5ldyBjb25zdHJ1Y3RvciB0aGF0
IHJlY2VpdmVzIGEgWFVuaXF1ZUdMWFBidWZmZXImJi4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRHTFg6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpH
TENvbnRleHRHTFgpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0
R0xYKTogUmVtb3ZlIGNvZGUgdG8gZXhwbGljaXRseQorICAgICAgICBmcmVlIFggcmVzb3VyY2Vz
LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjptYWtlQ29udGV4dEN1cnJlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRHTFg6OnBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFR0xY
VHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OmRlc3Ryb3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OnByZXBhcmVUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTFRleHR1cmVGcm9tUGl4bWFwOjpFR0xUZXh0dXJlRnJv
bVBpeG1hcCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
ZWdsL0VHTFhTdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWENvbmZpZ1NlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxl
Y3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnKTogVXNlIFhVbmlxdWUKKyAgICAgICAgaW5zdGVhZCBv
ZiB0aGUgY3VzdG9tIHN0ZDo6dW5pcXVlIFgxMURlbGV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpH
TFhDb25maWdTZWxlY3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnV2l0aFZpc3VhbElkKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0U3Vy
ZmFjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R0xYT2ZmU2NyZWVuU3VyZmFjZTo6aW5p
dGlhbGl6ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9YMTFIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WDExSGVscGVyOjpjcmVhdGVPZmZT
Y3JlZW5XaW5kb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlgxMUhlbHBlcjo6Y3JlYXRl
UGl4bWFwKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L1gxMUhlbHBlci5oOiBSZW1vdmUgWDExRGVsZXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy94MTEvWFVuaXF1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJl
c291cmNlPFhSZXNvdXJjZTo6Q29sb3JtYXA+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6RGFtYWdlPjo6ZGVsZXRlWFJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OlBpeG1h
cD46OmRlbGV0ZVhSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8
WFJlc291cmNlOjpXaW5kb3c+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj46OmRlbGV0ZVhSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpHTFhQaXhtYXA+
OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5p
cXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkp
OgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpYVW5pcXVlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpvcGVyYXRvcj0pOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjp+WFVuaXF1ZVJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVS
ZXNvdXJjZTo6cmVsZWFzZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U6OnJl
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6b3BlcmF0b3IhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSopOgorCiAyMDE1LTA0LTI5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gTmV0d29yayBDYWNoZTogSW1wbGVtZW50IFNoYXJl
YWJsZVJlc291cmNlIGZvciBTb3VwIGFuZCBlbmFibGUgaXQgZm9yIEdUSyBwbGF0Zm9ybQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlNjMzMGM1Li4yMjYwYWQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMTk4LDYgKzE5OCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxh
cy5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuY3BwCiAKICAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggODE5ZjViYi4uZmE5YmU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEy
Niw2ICsxMjYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKIAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MveDExL1hVbmlxdWUuY3BwCiAKICAgICBwbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAogICAg
IHBsYXRmb3JtL2d0ay9FdmVudExvb3BHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExLmNwcAppbmRleCA0YzA4NzJmLi43Yjg2MzFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm9YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Jh
Y2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMS5jcHAKQEAgLTI2LDE3ICsyNiwxNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0
b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqIGRpc3BsYXksIHVuc2lnbmVkIGxvbmcgcm9vdFdp
bmRvd0lELCBWaXN1YWwqIHZpc3VhbCwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiBzaXplLCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFj
a2luZ1N0b3JlQmFja2VuZENhaXJvWDExKHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lELCBWaXN1
YWwqIHZpc3VhbCwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikKICAgICA6IEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyhzaXplKQotICAgICwg
bV9kaXNwbGF5KGRpc3BsYXkpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gc2l6ZTsKICAg
ICBzY2FsZWRTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKIAotICAgIG1fcGl4bWFwID0g
WENyZWF0ZVBpeG1hcChtX2Rpc3BsYXksIHJvb3RXaW5kb3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgp
LCBzY2FsZWRTaXplLmhlaWdodCgpLCBkZXB0aCk7Ci0gICAgbV9nYyA9IFhDcmVhdGVHQyhtX2Rp
c3BsYXksIG1fcGl4bWFwLCAwLCBudWxscHRyKTsKKyAgICBhdXRvKiBkaXNwbGF5ID0gZG93bmNh
c3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSku
bmF0aXZlKCk7CisgICAgbV9waXhtYXAgPSBYQ3JlYXRlUGl4bWFwKGRpc3BsYXksIHJvb3RXaW5k
b3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhlaWdodCgpLCBkZXB0aCk7Cisg
ICAgbV9nYy5yZXNldChYQ3JlYXRlR0MoZGlzcGxheSwgbV9waXhtYXAuZ2V0KCksIDAsIG51bGxw
dHIpKTsKIAotICAgIG1fc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVh
dGUobV9kaXNwbGF5LCBtX3BpeG1hcCwgdmlzdWFsLCBzY2FsZWRTaXplLndpZHRoKCksIHNjYWxl
ZFNpemUuaGVpZ2h0KCkpKTsKKyAgICBtX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1
cmZhY2VfY3JlYXRlKGRpc3BsYXksIG1fcGl4bWFwLmdldCgpLCB2aXN1YWwsIHNjYWxlZFNpemUu
d2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWlnaHQoKSkpOwogICAgIGNhaXJvU3VyZmFjZVNldERldmlj
ZVNjYWxlKG1fc3VyZmFjZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFj
dG9yKTsKIH0KIApAQCAtNDQsOCArNDQsNiBAQCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6
On5CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEoKQogewogICAgIC8vIFRoZSBwaXhtYXAgbmVl
ZHMgdG8gZXhpc3Qgd2hlbiB0aGUgc3VyZmFjZSBpcyBkZXN0cm95ZWQsIHNvIGJlZ2luIGJ5IGNs
ZWFyaW5nIGl0LgogICAgIG1fc3VyZmFjZS5jbGVhcigpOwotICAgIFhGcmVlUGl4bWFwKG1fZGlz
cGxheSwgbV9waXhtYXApOwotICAgIFhGcmVlR0MobV9kaXNwbGF5LCBtX2djKTsKIH0KIAogdm9p
ZCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3Jv
bGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpCkBAIC02NSw3ICs2Myw3IEBAIHZv
aWQgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExOjpzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Ny
b2xsUmVjdCwgY29uc3QgSW50U2l6CiAgICAgc2NhbGVkU2Nyb2xsT2Zmc2V0LnNjYWxlKHhTY2Fs
ZSwgeVNjYWxlKTsKIAogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsK
LSAgICBYQ29weUFyZWEobV9kaXNwbGF5LCBtX3BpeG1hcCwgbV9waXhtYXAsIG1fZ2MsCisgICAg
WENvcHlBcmVhKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBtX3BpeG1hcC5nZXQoKSwgbV9waXhtYXAuZ2V0KCks
IG1fZ2MuZ2V0KCksCiAgICAgICAgIHRhcmdldFJlY3QueCgpIC0gc2NhbGVkU2Nyb2xsT2Zmc2V0
LndpZHRoKCksIHRhcmdldFJlY3QueSgpIC0gc2NhbGVkU2Nyb2xsT2Zmc2V0LmhlaWdodCgpLAog
ICAgICAgICB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIHRhcmdldFJl
Y3QueCgpLCB0YXJnZXRSZWN0LnkoKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3Jl
Y3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwg
dGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyb1gxMS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2lu
Z1N0b3JlQmFja2VuZENhaXJvWDExLmgKaW5kZXggMWRlMGQ4NC4uNDA3OGE2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmgKQEAgLTIyLDIxICsyMiwyMCBAQAogI2lu
Y2x1ZGUgIkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyby5oIgogCiAjaWYgVVNFKENBSVJPKSAmJiBQ
TEFURk9STShYMTEpCi0jaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlICJYVW5pcXVlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmFja2luZ1N0b3JlQmFja2VuZENhaXJv
WDExIGZpbmFsIDogcHVibGljIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyB7CiBwdWJsaWM6Ci0g
ICAgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqLCB1bnNpZ25lZCBsb25nIHJv
b3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IpOworICAgIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMSh1bnNpZ25l
ZCBsb25nIHJvb3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIHZpcnR1YWwgfkJhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb1gxMSgpOwogCiAgICAgdm9pZCBzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVj
dCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBEaXNwbGF5KiBtX2Rpc3BsYXk7Ci0gICAgUGl4bWFwIG1fcGl4bWFwOwotICAgIEdDIG1fZ2M7
CisgICAgWFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKKyAgICBYVW5pcXVlR0MgbV9nYzsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggZjc0NjdhNy4uYzEwOGNjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5jcHAKQEAgLTQzLDI1ICs0MywxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgR0xDbwog
ICAgIHZpc3VhbEluZm8udmlzdWFsaWQgPSBYVmlzdWFsSURGcm9tVmlzdWFsKGF0dHJpYnV0ZXMu
dmlzdWFsKTsKIAogICAgIGludCBudW1SZXR1cm5lZCA9IDA7Ci0gICAgWFZpc3VhbEluZm8qIHZp
c3VhbEluZm9MaXN0ID0gWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsSURNYXNrLCAmdmlz
dWFsSW5mbywgJm51bVJldHVybmVkKTsKLQotICAgIEdMWENvbnRleHQgZ2x4U2hhcmluZ0NvbnRl
eHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEdMWCo+KHNoYXJpbmdD
b250ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBnbFhDcmVh
dGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9MaXN0LCBnbHhTaGFyaW5nQ29udGV4dCwgVHJ1
ZSk7Ci0gICAgWEZyZWUodmlzdWFsSW5mb0xpc3QpOworICAgIFhVbmlxdWVQdHI8WFZpc3VhbElu
Zm8+IHZpc3VhbEluZm9MaXN0KFhHZXRWaXN1YWxJbmZvKGRpc3BsYXksIFZpc3VhbElETWFzaywg
JnZpc3VhbEluZm8sICZudW1SZXR1cm5lZCkpOwogCisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5n
Q29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hh
cmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkgOiBudWxscHRyOworICAgIFhVbmlxdWVHTFhD
b250ZXh0IGNvbnRleHQoZ2xYQ3JlYXRlQ29udGV4dChkaXNwbGF5LCB2aXN1YWxJbmZvTGlzdC5n
ZXQoKSwgZ2x4U2hhcmluZ0NvbnRleHQsIFRydWUpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gR0xYUGJ1ZmZlciBhbmQgWElEIGFyZSBib3Ro
IHRoZSBzYW1lIHR5cGVzIHVuZGVybmVhdGgsIHNvIHdlIGhhdmUgdG8gc2hhcmUKLSAgICAvLyBh
IGNvbnN0cnVjdG9yIGhlcmUgd2l0aCB0aGUgd2luZG93IHBhdGguCi0gICAgYXV0byBjb250ZXh0
V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihjb250ZXh0KTsKLSAgICBj
b250ZXh0V3JhcHBlci0+bV93aW5kb3cgPSB3aW5kb3c7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShj
b250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xY
PihXVEY6Om1vdmUoY29udGV4dCksIHdpbmRvdyk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBz
aGFyaW5nQ29udGV4dCkKIHsKLSAgICBpbnQgZmJDb25maWdBdHRyaWJ1dGVzW10gPSB7CisgICAg
c3RhdGljIGNvbnN0IGludCBmYkNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHsKICAgICAgICAgR0xYX0RS
QVdBQkxFX1RZUEUsIEdMWF9QQlVGRkVSX0JJVCwKICAgICAgICAgR0xYX1JFTkRFUl9UWVBFLCBH
TFhfUkdCQV9CSVQsCiAgICAgICAgIEdMWF9SRURfU0laRSwgMSwKQEAgLTc0LDMyICs2OCwyMSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZm
ZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcgogCiAgICAgaW50IHJldHVybmVkRWxlbWVudHM7CiAg
ICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwotICAgIEdMWEZCQ29uZmlnKiBj
b25maWdzID0gZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRyaWJ1dGVz
LCAmcmV0dXJuZWRFbGVtZW50cyk7Ci0gICAgaWYgKCFyZXR1cm5lZEVsZW1lbnRzKSB7Ci0gICAg
ICAgIFhGcmVlKGNvbmZpZ3MpOworICAgIFhVbmlxdWVQdHI8R0xYRkJDb25maWc+IGNvbmZpZ3Mo
Z2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRyaWJ1dGVzLCAmcmV0dXJu
ZWRFbGVtZW50cykpOworICAgIGlmICghcmV0dXJuZWRFbGVtZW50cykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQogCiAgICAgLy8gV2Ugd2lsbCBiZSByZW5kZXJpbmcgdG8gYSB0ZXh0
dXJlLCBzbyBvdXIgcGJ1ZmZlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGxhcmdlLgogICAgIHN0YXRp
YyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgR0xYX1BCVUZGRVJfV0lEVEgsIDEs
IEdMWF9QQlVGRkVSX0hFSUdIVCwgMSwgMCB9OwotICAgIEdMWFBidWZmZXIgcGJ1ZmZlciA9IGds
WENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmlnc1swXSwgcGJ1ZmZlckF0dHJpYnV0ZXMpOwot
ICAgIGlmICghcGJ1ZmZlcikgewotICAgICAgICBYRnJlZShjb25maWdzKTsKKyAgICBYVW5pcXVl
R0xYUGJ1ZmZlciBwYnVmZmVyKGdsWENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmlncy5nZXQo
KVswXSwgcGJ1ZmZlckF0dHJpYnV0ZXMpKTsKKyAgICBpZiAoIXBidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWENvbnRleHQgY29udGV4dCA9IGdsWENyZWF0
ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmlnc1swXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0Nv
bnRleHQsIEdMX1RSVUUpOwotICAgIFhGcmVlKGNvbmZpZ3MpOwotICAgIGlmICghY29udGV4dCkg
ewotICAgICAgICBnbFhEZXN0cm95UGJ1ZmZlcihkaXNwbGF5LCBwYnVmZmVyKTsKKyAgICBYVW5p
cXVlR0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmln
cy5nZXQoKVswXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0NvbnRleHQsIEdMX1RSVUUpKTsKKyAg
ICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIC8v
IEdMWFBidWZmZXIgYW5kIFhJRCBhcmUgYm90aCB0aGUgc2FtZSB0eXBlcyB1bmRlcm5lYXRoLCBz
byB3ZSBoYXZlIHRvIHNoYXJlCi0gICAgLy8gYSBjb25zdHJ1Y3RvciBoZXJlIHdpdGggdGhlIHdp
bmRvdyBwYXRoLgotICAgIGF1dG8gY29udGV4dFdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdM
Q29udGV4dEdMWD4oY29udGV4dCk7Ci0gICAgY29udGV4dFdyYXBwZXItPm1fcGJ1ZmZlciA9IHBi
dWZmZXI7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEY6Om1vdmUoY29udGV4dCksIFdURjo6
bW92ZShwYnVmZmVyKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KQpA
QCAtMTE0LDMxICs5NywyMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRl
eHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaQogICAgIH07CiAKICAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7Ci0gICAgWFZpc3VhbEluZm8qIHZp
c3VhbEluZm8gPSBnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5
KSwgdmlzdWFsQXR0cmlidXRlcyk7CisgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFs
SW5mbyhnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5KSwgdmlz
dWFsQXR0cmlidXRlcykpOwogICAgIGlmICghdmlzdWFsSW5mbykKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBnbFhDcmVhdGVDb250ZXh0KGRpc3Bs
YXksIHZpc3VhbEluZm8sIHNoYXJpbmdDb250ZXh0LCBHTF9UUlVFKTsKLSAgICBpZiAoIWNvbnRl
eHQpIHsKLSAgICAgICAgWEZyZWUodmlzdWFsSW5mbyk7CisgICAgWFVuaXF1ZUdMWENvbnRleHQg
Y29udGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm8uZ2V0KCksIHNoYXJp
bmdDb250ZXh0LCBHTF9UUlVFKSk7CisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9CiAKLSAgICBQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcChkaXNw
bGF5LCBEZWZhdWx0Um9vdFdpbmRvdyhkaXNwbGF5KSwgMSwgMSwgdmlzdWFsSW5mby0+ZGVwdGgp
OwotICAgIGlmICghcGl4bWFwKSB7Ci0gICAgICAgIFhGcmVlKHZpc3VhbEluZm8pOworICAgIFhV
bmlxdWVQaXhtYXAgcGl4bWFwKFhDcmVhdGVQaXhtYXAoZGlzcGxheSwgRGVmYXVsdFJvb3RXaW5k
b3coZGlzcGxheSksIDEsIDEsIHZpc3VhbEluZm8tPmRlcHRoKSk7CisgICAgaWYgKCFwaXhtYXAp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWFBpeG1hcCBnbHhQaXht
YXAgPSBnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mbywgcGl4bWFwKTsKLSAg
ICBpZiAoIWdseFBpeG1hcCkgewotICAgICAgICBYRnJlZVBpeG1hcChkaXNwbGF5LCBwaXhtYXAp
OwotICAgICAgICBYRnJlZSh2aXN1YWxJbmZvKTsKKyAgICBYVW5pcXVlR0xYUGl4bWFwIGdseFBp
eG1hcChnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mby5nZXQoKSwgcGl4bWFw
LmdldCgpKSk7CisgICAgaWYgKCFnbHhQaXhtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KIAotICAgIFhGcmVlKHZpc3VhbEluZm8pOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdMQ29udGV4dEdMWD4oY29udGV4dCwgcGl4bWFwLCBnbHhQaXhtYXApOworICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdMWD4oV1RGOjptb3ZlKGNvbnRleHQpLCBXVEY6
Om1vdmUocGl4bWFwKSwgV1RGOjptb3ZlKGdseFBpeG1hcCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRvdywg
R0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKQEAgLTE1Miw3ICsxMjcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRv
dywgR0xDb250ZXh0KgogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBz
dGF0aWNfY2FzdDxHTENvbnRleHRHTFgqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dCA6IDA7
CisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3Rh
dGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkg
OiBudWxscHRyOwogICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRl
eHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOwogICAgIGlmICghY29udGV4dCkK
ICAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGdseFNoYXJpbmdDb250ZXh0
KTsKQEAgLTE2NCwyMyArMTM5LDI3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdM
Q29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqCiAgICAgcmV0
dXJuIFdURjo6bW92ZShjb250ZXh0KTsKIH0KIAotR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgo
R0xYQ29udGV4dCBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitHTENvbnRleHRH
TFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhJRCB3aW5kb3cp
CisgICAgOiBtX2NvbnRleHQoV1RGOjptb3ZlKGNvbnRleHQpKQorICAgICwgbV93aW5kb3cod2lu
ZG93KQorICAgICwgbV9jYWlyb0RldmljZShudWxscHRyKQoreworfQorCitHTENvbnRleHRHTFg6
OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhVbmlxdWVHTFhQYnVm
ZmVyJiYgcGJ1ZmZlcikKKyAgICA6IG1fY29udGV4dChXVEY6Om1vdmUoY29udGV4dCkpCiAgICAg
LCBtX3dpbmRvdygwKQotICAgICwgbV9wYnVmZmVyKDApCi0gICAgLCBtX3BpeG1hcCgwKQotICAg
ICwgbV9nbHhQaXhtYXAoMCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKKyAgICAsIG1fcGJ1ZmZl
cihXVEY6Om1vdmUocGJ1ZmZlcikpCisgICAgLCBtX2NhaXJvRGV2aWNlKG51bGxwdHIpCiB7CiB9
CiAKLUdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKEdMWENvbnRleHQgY29udGV4dCwgUGl4bWFw
IHBpeG1hcCwgR0xYUGl4bWFwIGdseFBpeG1hcCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQor
R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBY
VW5pcXVlUGl4bWFwJiYgcGl4bWFwLCBYVW5pcXVlR0xYUGl4bWFwJiYgZ2x4UGl4bWFwKQorICAg
IDogbV9jb250ZXh0KFdURjo6bW92ZShjb250ZXh0KSkKICAgICAsIG1fd2luZG93KDApCi0gICAg
LCBtX3BidWZmZXIoMCkKLSAgICAsIG1fcGl4bWFwKHBpeG1hcCkKLSAgICAsIG1fZ2x4UGl4bWFw
KGdseFBpeG1hcCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKKyAgICAsIG1fcGl4bWFwKFdURjo6
bW92ZShwaXhtYXApKQorICAgICwgbV9nbHhQaXhtYXAoV1RGOjptb3ZlKGdseFBpeG1hcCkpCisg
ICAgLCBtX2NhaXJvRGV2aWNlKG51bGxwdHIpCiB7CiB9CiAKQEAgLTE4OSwyNiArMTY4LDEyIEBA
IEdMQ29udGV4dEdMWDo6fkdMQ29udGV4dEdMWCgpCiAgICAgaWYgKG1fY2Fpcm9EZXZpY2UpCiAg
ICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95KG1fY2Fpcm9EZXZpY2UpOwogCi0gICAgRGlzcGxh
eSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAg
ICAgLy8gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZXZlbnQgY3Jhc2hlcyB3aXRoIE5WaWRp
YSdzIGNsb3NlZCBzb3VyY2UgZHJpdmVycy4gT3JpZ2luYWxseQogICAgICAgICAvLyBmcm9tIE1v
emlsbGEncyAzRCBjYW52YXMgaW1wbGVtZW50YXRpb24gYXQ6IGh0dHA6Ly9iaXRidWNrZXQub3Jn
L2lsbWFyaS9jYW52YXMzZC8KKyAgICAgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpOwogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIDAp
OwogICAgICAgICBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBOb25lLCBOb25lKTsKLSAgICAgICAg
Z2xYRGVzdHJveUNvbnRleHQoZGlzcGxheSwgbV9jb250ZXh0KTsKLSAgICB9Ci0KLSAgICBpZiAo
bV9wYnVmZmVyKSB7Ci0gICAgICAgIGdsWERlc3Ryb3lQYnVmZmVyKGRpc3BsYXksIG1fcGJ1ZmZl
cik7Ci0gICAgICAgIG1fcGJ1ZmZlciA9IDA7Ci0gICAgfQotICAgIGlmIChtX2dseFBpeG1hcCkg
ewotICAgICAgICBnbFhEZXN0cm95R0xYUGl4bWFwKGRpc3BsYXksIG1fZ2x4UGl4bWFwKTsKLSAg
ICAgICAgbV9nbHhQaXhtYXAgPSAwOwotICAgIH0KLSAgICBpZiAobV9waXhtYXApIHsKLSAgICAg
ICAgWEZyZWVQaXhtYXAoZGlzcGxheSwgbV9waXhtYXApOwotICAgICAgICBtX3BpeG1hcCA9IDA7
CiAgICAgfQogfQogCkBAIC0yMzcsMTcgKzIwMiwxNyBAQCBib29sIEdMQ29udGV4dEdMWDo6bWFr
ZUNvbnRleHRDdXJyZW50KCkKICAgICBBU1NFUlQobV9jb250ZXh0ICYmIChtX3dpbmRvdyB8fCBt
X3BidWZmZXIgfHwgbV9nbHhQaXhtYXApKTsKIAogICAgIEdMQ29udGV4dDo6bWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0gICAgaWYgKGdsWEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0KQor
ICAgIGlmIChnbFhHZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dC5nZXQoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7
CiAgICAgaWYgKG1fd2luZG93KQotICAgICAgICByZXR1cm4gZ2xYTWFrZUN1cnJlbnQoZGlzcGxh
eSwgbV93aW5kb3csIG1fY29udGV4dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChk
aXNwbGF5LCBtX3dpbmRvdywgbV9jb250ZXh0LmdldCgpKTsKIAogICAgIGlmIChtX3BidWZmZXIp
Ci0gICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3BidWZmZXIsIG1fY29u
dGV4dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3BidWZmZXIu
Z2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiAKLSAgICByZXR1cm4gOjpnbFhNYWtlQ3VycmVudChk
aXNwbGF5LCBtX2dseFBpeG1hcCwgbV9jb250ZXh0KTsKKyAgICByZXR1cm4gOjpnbFhNYWtlQ3Vy
cmVudChkaXNwbGF5LCBtX2dseFBpeG1hcC5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKIH0KIAog
dm9pZCBHTENvbnRleHRHTFg6OnN3YXBCdWZmZXJzKCkKQEAgLTI2Nyw3ICsyMzIsNyBAQCBjYWly
b19kZXZpY2VfdCogR0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSgpCiAgICAgICAgIHJldHVybiBt
X2NhaXJvRGV2aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBt
X2NhaXJvRGV2aWNlID0gY2Fpcm9fZ2x4X2RldmljZV9jcmVhdGUoZG93bmNhc3Q8UGxhdGZvcm1E
aXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIG1f
Y29udGV4dCk7CisgICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2dseF9kZXZpY2VfY3JlYXRlKGRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkpLm5hdGl2ZSgpLCBtX2NvbnRleHQuZ2V0KCkpOwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9j
YWlyb0RldmljZTsKQEAgLTI3Niw3ICsyNDEsNyBAQCBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0
R0xYOjpjYWlyb0RldmljZSgpCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCiBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEdMWDo6cGxhdGZvcm1Db250ZXh0KCkKIHsK
LSAgICByZXR1cm4gbV9jb250ZXh0OworICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4
L0dMQ29udGV4dEdMWC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dM
Q29udGV4dEdMWC5oCmluZGV4IDY5MzRmMjQuLjQwMjNiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKQEAgLTIzLDEyICsy
Myw5IEBACiAjaWYgVVNFKEdMWCkKIAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgorI2luY2x1ZGUg
IlhVbmlxdWUuaCIKIAotdHlwZWRlZiBzdHJ1Y3QgX19HTFhjb250ZXh0UmVjKiBHTFhDb250ZXh0
OwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdMWFBidWZmZXI7Ci10eXBlZGVmIHVuc2lnbmVkIGxv
bmcgR0xYUGl4bWFwOwogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIEdMdWJ5dGU7Ci10eXBlZGVmIHVu
c2lnbmVkIGxvbmcgUGl4bWFwOwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJRDsKIHR5cGVkZWYg
dm9pZCogQ29udGV4dEtleVR5cGU7CiAKQEAgLTQwLDggKzM3LDkgQEAgcHVibGljOgogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVDb250ZXh0KFhJRCB3aW5k
b3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBjcmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4
dCogc2hhcmluZ0NvbnRleHQpOwogCi0gICAgR0xDb250ZXh0R0xYKEdMWENvbnRleHQpOwotICAg
IEdMQ29udGV4dEdMWChHTFhDb250ZXh0LCBQaXhtYXAsIEdMWFBpeG1hcCk7CisgICAgR0xDb250
ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYsIFhJRCk7CisgICAgR0xDb250ZXh0R0xYKFhVbmlx
dWVHTFhDb250ZXh0JiYsIFhVbmlxdWVHTFhQYnVmZmVyJiYpOworICAgIEdMQ29udGV4dEdMWChY
VW5pcXVlR0xYQ29udGV4dCYmLCBYVW5pcXVlUGl4bWFwJiYsIFhVbmlxdWVHTFhQaXhtYXAmJik7
CiAgICAgdmlydHVhbCB+R0xDb250ZXh0R0xYKCk7CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpOwpAQCAtNTksMTEg
KzU3LDExIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRH
TFg+IGNyZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQaXhtYXBDb250ZXh0
KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogCi0gICAgR0xYQ29udGV4dCBtX2NvbnRleHQ7
CisgICAgWFVuaXF1ZUdMWENvbnRleHQgbV9jb250ZXh0OwogICAgIFhJRCBtX3dpbmRvdzsKLSAg
ICBHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKLSAgICBQaXhtYXAgbV9waXhtYXA7Ci0gICAgR0xYUGl4
bWFwIG1fZ2x4UGl4bWFwOworICAgIFhVbmlxdWVHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKKyAgICBY
VW5pcXVlUGl4bWFwIG1fcGl4bWFwOworICAgIFhVbmlxdWVHTFhQaXhtYXAgbV9nbHhQaXhtYXA7
CiAgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhT
dXJmYWNlLmNwcAppbmRleCA3OTJhOThiLi4xZmYzZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFj
ZS5jcHAKQEAgLTE0MCw3ICsxNDAsNiBAQCB2b2lkIEVHTFBpeG1hcFN1cmZhY2U6OmRlc3Ryb3ko
KQogCiBFR0xYVHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGll
bnQoY29uc3QgUGxhdGZvcm1CdWZmZXJIYW5kbGUgaGFuZGxlLCBjb25zdCBJbnRTaXplJiBzaXpl
LCBib29sIGhhc0FscGhhKQogICAgIDogR0xUcmFuc3BvcnRTdXJmYWNlQ2xpZW50KCkKLSAgICAs
IG1faW1hZ2UoMCkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV90b3RhbEJ5dGVzKDApCiB7
CkBAIC0xOTYsMTEgKzE5NSw3IEBAIHZvaWQgRUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OmRl
c3Ryb3koKQogICAgIH0KIAogICAgIGVnbFdhaXRHTCgpOwotCi0gICAgaWYgKG1faW1hZ2UpIHsK
LSAgICAgICAgWERlc3Ryb3lJbWFnZShtX2ltYWdlKTsKLSAgICAgICAgbV9pbWFnZSA9IDA7Ci0g
ICAgfQorICAgIG1faW1hZ2UucmVzZXQoKTsKIH0KIAogdm9pZCBFR0xYVHJhbnNwb3J0U3VyZmFj
ZUNsaWVudDo6cHJlcGFyZVRleHR1cmUoKQpAQCAtMjEzLDcgKzIwOCw3IEBAIHZvaWQgRUdMWFRy
YW5zcG9ydFN1cmZhY2VDbGllbnQ6OnByZXBhcmVUZXh0dXJlKCkKICAgICB9CiAKICAgICAvLyBG
YWxsYmFjayB0byB1c2UgWEltYWdlIGluIGNhc2UgRUdMSW1hZ2UgYW5kIFRleHR1cmVUb1BpeG1h
cCBhcmUgbm90IHN1cHBvcnRlZC4KLSAgICBtX2ltYWdlID0gWEdldEltYWdlKE5hdGl2ZVdyYXBw
ZXI6Om5hdGl2ZURpc3BsYXkoKSwgbV9oYW5kbGUsIDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3Np
emUuaGVpZ2h0KCksIEFsbFBsYW5lcywgWlBpeG1hcCk7CisgICAgbV9pbWFnZS5yZXNldChYR2V0
SW1hZ2UoTmF0aXZlV3JhcHBlcjo6bmF0aXZlRGlzcGxheSgpLCBtX2hhbmRsZSwgMCwgMCwgbV9z
aXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgQWxsUGxhbmVzLCBaUGl4bWFwKSk7CiAKICNp
ZiBVU0UoT1BFTkdMX0VTXzIpCiAgICAgaWYgKG1fZm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpCR1JBKSB7CkBAIC0yMjQsMTAgKzIxOSw3IEBAIHZvaWQgRUdMWFRyYW5zcG9ydFN1cmZhY2VD
bGllbnQ6OnByZXBhcmVUZXh0dXJlKCkKIAogICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBtX2Zvcm1hdCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgMCwgbV9mb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIG1faW1hZ2UtPmRhdGEpOwogCi0gICAgaWYgKG1faW1hZ2Up
IHsKLSAgICAgICAgWERlc3Ryb3lJbWFnZShtX2ltYWdlKTsKLSAgICAgICAgbV9pbWFnZSA9IDA7
Ci0gICAgfQorICAgIG1faW1hZ2UucmVzZXQoKTsKIH0KIAogRUdMVGV4dHVyZUZyb21QaXhtYXA6
OkVHTFRleHR1cmVGcm9tUGl4bWFwKGNvbnN0IE5hdGl2ZVBpeG1hcCBoYW5kbGUsIGJvb2wgaGFz
QWxwaGEsIEVHTENvbmZpZyBjb25maWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCmluZGV4IDk2Yzhh
NjYuLjI0Y2Y4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aWYgUExBVEZPUk0oWDExKSAmJiBVU0UoRUdMKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIAog
I2luY2x1ZGUgIkVHTFN1cmZhY2UuaCIKKyNpbmNsdWRlICJYVW5pcXVlLmgiCiAjaW5jbHVkZSA8
Z2x4L1gxMUhlbHBlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NCw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgotICAgIFhJbWFnZSogbV9pbWFnZTsKKyAgICBYVW5pcXVlPFhJbWFnZT4gbV9pbWFnZTsKICAg
ICBJbnRTaXplIG1fc2l6ZTsKICAgICBQbGF0Zm9ybUJ1ZmZlckhhbmRsZSBtX2hhbmRsZTsKICAg
ICBHTHVpbnQgbV9mb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCmluZGV4
IDVjZGVkZTUuLjdmZGNkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKEdMWCkKIAogI2luY2x1ZGUgIlgxMUhlbHBlci5oIgor
I2luY2x1ZGUgIlhVbmlxdWUuaCIKICNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+CiAjaW5jbHVk
ZSA8b3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmg+CiAKQEAgLTE0MCwxMyArMTQxLDEzIEBAIHBy
aXZhdGU6CiAgICAgR0xYRkJDb25maWcgZmluZE1hdGNoaW5nQ29uZmlnKGNvbnN0IGludCBhdHRy
aWJ1dGVzW10sIGludCBkZXB0aCA9IDMyKQogICAgIHsKICAgICAgICAgaW50IG51bUF2YWlsYWJs
ZUNvbmZpZ3M7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHTFhGQkNvbmZpZ1tdLCBYMTFEZWxl
dGVyPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCBE
ZWZhdWx0U2NyZWVuKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpKSwgYXR0cmlidXRlcywgJm51
bUF2YWlsYWJsZUNvbmZpZ3MpKTsKKyAgICAgICAgWFVuaXF1ZVB0cjxHTFhGQkNvbmZpZz4gdGVt
cChnbFhDaG9vc2VGQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgRGVmYXVsdFNj
cmVlbihYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFi
bGVDb25maWdzKSk7CiAKICAgICAgICAgaWYgKCFudW1BdmFpbGFibGVDb25maWdzIHx8ICF0ZW1w
LmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1BdmFpbGFibGVDb25maWdzOyArK2kpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gc2NvcGVkVmlzdWFsSW5mbyB7IGdsWEdldFZp
c3VhbEZyb21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgdGVtcFtpXSkgfTsK
KyAgICAgICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHNjb3BlZFZpc3VhbEluZm8geyBn
bFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXBb
aV0pIH07CiAgICAgICAgICAgICBpZiAoIXNjb3BlZFZpc3VhbEluZm8uZ2V0KCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKQEAgLTE2OCw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAKICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIGFueSB2aXN1YWwgc3VwcG9ydGluZyBhbHBo
YSwgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUgY29uZmlnLgotICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8WFZpc3VhbEluZm8sIFgxMURlbGV0ZXI+IHNjb3BlZFZpc3VhbEluZm8geyBnbFhHZXRW
aXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXBbMF0pIH07
CisgICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHNjb3BlZFZpc3VhbEluZm8geyBnbFhH
ZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXBbMF0p
IH07CiAKICAgICAgICAgaWYgKChtX2F0dHJpYnV0ZXMgJiBHTFBsYXRmb3JtU3VyZmFjZTo6U3Vw
cG9ydEFscGhhKSAmJiAoc2NvcGVkVmlzdWFsSW5mby0+ZGVwdGggIT0gMzIpKQogICAgICAgICAg
ICAgbV9hdHRyaWJ1dGVzICY9IH5HTFBsYXRmb3JtU3VyZmFjZTo6U3VwcG9ydEFscGhhOwpAQCAt
MTc5LDEzICsxODAsMTMgQEAgcHJpdmF0ZToKICAgICBHTFhGQkNvbmZpZyBmaW5kTWF0Y2hpbmdD
b25maWdXaXRoVmlzdWFsSWQoY29uc3QgaW50IGF0dHJpYnV0ZXNbXSwgaW50IGRlcHRoLCBWaXN1
YWxJRCBpZCkKICAgICB7CiAgICAgICAgIGludCBudW1BdmFpbGFibGVDb25maWdzOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R0xYRkJDb25maWdbXSwgWDExRGVsZXRlcj4gdGVtcChnbFhDaG9v
c2VGQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgRGVmYXVsdFNjcmVlbihYMTFI
ZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVDb25maWdz
KSk7CisgICAgICAgIFhVbmlxdWVQdHI8R0xYRkJDb25maWc+IHRlbXAoZ2xYQ2hvb3NlRkJDb25m
aWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIERlZmF1bHRTY3JlZW4oWDExSGVscGVyOjpu
YXRpdmVEaXNwbGF5KCkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncykpOwogCiAg
ICAgICAgIGlmICghbnVtQXZhaWxhYmxlQ29uZmlncyB8fCAhdGVtcC5nZXQoKSkKICAgICAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXZhaWxhYmxl
Q29uZmlnczsgKytpKSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8WFZpc3VhbEluZm8s
IFgxMURlbGV0ZXI+IHNjb3BlZFZpc3VhbEluZm8geyBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWco
WDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXBbaV0pIH07CisgICAgICAgICAgICBYVW5p
cXVlUHRyPFhWaXN1YWxJbmZvPiBzY29wZWRWaXN1YWxJbmZvIHsgZ2xYR2V0VmlzdWFsRnJvbUZC
Q29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCB0ZW1wW2ldKSB9OwogICAgICAgICAg
ICAgaWYgKCFzY29wZWRWaXN1YWxJbmZvLmdldCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9nbHgvR0xYU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAKaW5kZXggMTZhOGUwMy4uNWY3NjI2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1
cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2dseC9HTFhTdXJmYWNlLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgVVNFKEdMWCkKIAor
I2luY2x1ZGUgIlhVbmlxdWUuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgUEZO
R0xYQklORFRFWElNQUdFRVhUUFJPQyBwR2xYQmluZFRleEltYWdlRVhUID0gMDsKQEAgLTY3LDcg
KzY5LDcgQEAgR0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0U3VyZmFjZShjb25zdCBJ
bnRTaXplJiBzaXplLCBTdXJmYWNlQXR0cmlidXRlcwogICAgIG1fc2hhcmVkRGlzcGxheSA9IFgx
MUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpOwogICAgIGF0dHJpYnV0ZXMgfD0gR0xQbGF0Zm9ybVN1
cmZhY2U6OkRvdWJsZUJ1ZmZlcmVkOwogICAgIG1fY29uZmlnU2VsZWN0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEdMWENvbmZpZ1NlbGVjdG9yPihhdHRyaWJ1dGVzKTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8WFZpc3VhbEluZm8sIFgxMURlbGV0ZXI+IHZpc0luZm8obV9jb25maWdTZWxlY3Rvci0+dmlz
dWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT5zdXJmYWNlQ29udGV4dENvbmZpZygpKSk7CisgICAg
WFVuaXF1ZTxYVmlzdWFsSW5mbz4gdmlzSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT52aXN1YWxJbmZv
KG1fY29uZmlnU2VsZWN0b3ItPnN1cmZhY2VDb250ZXh0Q29uZmlnKCkpKTsKIAogICAgIGlmICgh
dmlzSW5mby5nZXQoKSkgewogICAgICAgICBkZXN0cm95KCk7CkBAIC0xNDUsNyArMTQ3LDcgQEAg
dm9pZCBHTFhPZmZTY3JlZW5TdXJmYWNlOjppbml0aWFsaXplKFN1cmZhY2VBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMpCiAKICAgICBtX2NvbmZpZ1NlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxHTFhD
b25maWdTZWxlY3Rvcj4oYXR0cmlidXRlcyk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8WFZpc3Vh
bEluZm8sIFgxMURlbGV0ZXI+IHZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rvci0+dmlzdWFsSW5m
byhtX2NvbmZpZ1NlbGVjdG9yLT5waXhtYXBDb250ZXh0Q29uZmlnKCkpKTsKKyAgICBYVW5pcXVl
PFhWaXN1YWxJbmZvPiB2aXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnZpc3VhbEluZm8obV9j
b25maWdTZWxlY3Rvci0+cGl4bWFwQ29udGV4dENvbmZpZygpKSk7CiAgICAgWDExSGVscGVyOjpj
cmVhdGVQaXhtYXAoJm1fcGl4bWFwLCAqdmlzdWFsSW5mby5nZXQoKSk7CiAKICAgICBpZiAoIW1f
cGl4bWFwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvWDExSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2dseC9YMTFIZWxwZXIuY3BwCmluZGV4IDgwMTBiNTcuLjM2OGJhNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9Y
MTFIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL2dseC9YMTFIZWxwZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiWDExSGVs
cGVyLmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXlYMTEuaCIKKyNpbmNsdWRlICJYVW5p
cXVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjIzLDcgKzIyNCw3IEBAIHZvaWQg
WDExSGVscGVyOjpjcmVhdGVPZmZTY3JlZW5XaW5kb3codWludDMyX3QqIGhhbmRsZUlkLCBjb25z
dCBFR0xpbnQgaWQsIGJvb2wKICAgICBtZW1zZXQoJnZpc3VhbEluZm9UZW1wbGF0ZSwgMCwgc2l6
ZW9mKFhWaXN1YWxJbmZvKSk7CiAgICAgdmlzdWFsSW5mb1RlbXBsYXRlLnZpc3VhbGlkID0gdmlz
dWFsSWQ7CiAgICAgaW50IG1hdGNoaW5nQ291bnQgPSAwOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxY
VmlzdWFsSW5mbywgWDExRGVsZXRlcj4gbWF0Y2hpbmdWaXN1YWxzKFhHZXRWaXN1YWxJbmZvKG5h
dGl2ZURpc3BsYXkoKSwgVmlzdWFsSURNYXNrLCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hp
bmdDb3VudCkpOworICAgIFhVbmlxdWU8WFZpc3VhbEluZm8+IG1hdGNoaW5nVmlzdWFscyhYR2V0
VmlzdWFsSW5mbyhuYXRpdmVEaXNwbGF5KCksIFZpc3VhbElETWFzaywgJnZpc3VhbEluZm9UZW1w
bGF0ZSwgJm1hdGNoaW5nQ291bnQpKTsKICAgICBYVmlzdWFsSW5mbyogZm91bmRWaXN1YWwgPSAw
OwogCiAgICAgaWYgKG1hdGNoaW5nVmlzdWFscykgewpAQCAtMjYwLDcgKzI2MSw3IEBAIHZvaWQg
WDExSGVscGVyOjpjcmVhdGVQaXhtYXAoUGl4bWFwKiBoYW5kbGVJZCwgY29uc3QgRUdMaW50IGlk
LCBib29sIGhhc0FscGhhLCBjCiAgICAgbWVtc2V0KCZ2aXN1YWxJbmZvVGVtcGxhdGUsIDAsIHNp
emVvZihYVmlzdWFsSW5mbykpOwogICAgIHZpc3VhbEluZm9UZW1wbGF0ZS52aXN1YWxpZCA9IHZp
c3VhbElkOwogICAgIGludCBtYXRjaGluZ0NvdW50ID0gMDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
WFZpc3VhbEluZm8sIFgxMURlbGV0ZXI+IG1hdGNoaW5nVmlzdWFscyhYR2V0VmlzdWFsSW5mbyhu
YXRpdmVEaXNwbGF5KCksIFZpc3VhbElETWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNo
aW5nQ291bnQpKTsKKyAgICBYVW5pcXVlPFhWaXN1YWxJbmZvPiBtYXRjaGluZ1Zpc3VhbHMoWEdl
dFZpc3VhbEluZm8obmF0aXZlRGlzcGxheSgpLCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZvVGVt
cGxhdGUsICZtYXRjaGluZ0NvdW50KSk7CiAgICAgWFZpc3VhbEluZm8qIGZvdW5kVmlzdWFsID0g
MDsKICAgICBpbnQgcmVxdWlyZWREZXB0aCA9IGhhc0FscGhhID8gMzIgOiAyNDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhl
bHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gx
MUhlbHBlci5oCmluZGV4IDEwM2YwMDEuLjdmNWU0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFIZWxwZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmgKQEAg
LTQyLDE1ICs0Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgWDExRGVsZXRl
ciB7Ci1wdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBvcGVyYXRvcigpKFQq
IHJlc291cmNlKQotICAgIHsKLSAgICAgICAgaWYgKHJlc291cmNlKQotICAgICAgICAgICAgWEZy
ZWUocmVzb3VyY2UpOwotICAgIH0KLX07Ci0KIGNsYXNzIFgxMUhlbHBlciB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgY3JlYXRlUGl4bWFwKFBpeG1hcCosIGNvbnN0IFhWaXN1YWxJbmZvJiwg
Y29uc3QgSW50U2l6ZSYgPSBJbnRTaXplKDEsIDEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4xYmUzNDI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuY3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJYVW5pcXVlLmgiCisKKyNpZiBQTEFURk9STShYMTEpCisjaW5jbHVkZSA8WDExL1hs
aWIuaD4KKyNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YZGFtYWdlLmg+CisKKyNpZiBVU0UoR0xY
KQorI2luY2x1ZGUgPEdML2dseC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dGVtcGxhdGU8PiB2b2lkIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OkNvbG9ybWFwPjo6ZGVs
ZXRlWFJlc291cmNlKGxvbmcgdW5zaWduZWQgcmVzb3VyY2UpCit7CisgICAgaWYgKHJlc291cmNl
KQorICAgICAgICBYRnJlZUNvbG9ybWFwKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxh
dGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCByZXNvdXJjZSk7Cit9CisK
K3RlbXBsYXRlIDw+IHZvaWQgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6RGFtYWdlPjo6ZGVs
ZXRlWFJlc291cmNlKGxvbmcgdW5zaWduZWQgcmVzb3VyY2UpCit7CisgICAgaWYgKHJlc291cmNl
KQorICAgICAgICBYRGFtYWdlRGVzdHJveShkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgcmVzb3VyY2UpOworfQor
Cit0ZW1wbGF0ZSA8PiB2b2lkIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OlBpeG1hcD46OmRl
bGV0ZVhSZXNvdXJjZShsb25nIHVuc2lnbmVkIHJlc291cmNlKQoreworICAgIGlmIChyZXNvdXJj
ZSkKKyAgICAgICAgWEZyZWVQaXhtYXAoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0
Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIHJlc291cmNlKTsKK30KKwor
dGVtcGxhdGUgPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpXaW5kb3c+OjpkZWxl
dGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKK3sKKyAgICBpZiAocmVzb3VyY2Up
CisgICAgICAgIFhEZXN0cm95V2luZG93KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxh
dGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCByZXNvdXJjZSk7Cit9CisK
KyNpZiBVU0UoR0xYKQordGVtcGxhdGU8PiB2b2lkIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6
OkdMWFBidWZmZXI+OjpkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKK3sK
KyAgICBpZiAocmVzb3VyY2UpCisgICAgICAgIGdsWERlc3Ryb3lQYnVmZmVyKGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpLCByZXNvdXJjZSk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8WFJl
c291cmNlOjpHTFhQaXhtYXA+OjpkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJj
ZSkKK3sKKyAgICBpZiAocmVzb3VyY2UpCisgICAgICAgIGdsWERlc3Ryb3lHTFhQaXhtYXAoZG93
bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXko
KSkubmF0aXZlKCksIHJlc291cmNlKTsKK30KKyNlbmRpZiAvLyBVU0UoR0xYKQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShYMTEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kNjlhNWFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuaApAQCAtMCwwICsxLDE2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBYVW5pcXVlX2gK
KyNkZWZpbmUgWFVuaXF1ZV9oCisKKyNpZiBQTEFURk9STShYMTEpCisjaW5jbHVkZSAiUGxhdGZv
cm1EaXNwbGF5WDExLmgiCisjaW5jbHVkZSA8WDExL1h1dGlsLmg+CisKKyNpZiBVU0UoR0xYKQor
dHlwZWRlZiBzdHJ1Y3QgX19HTFhjb250ZXh0UmVjKiBHTFhDb250ZXh0OwordHlwZWRlZiB1bnNp
Z25lZCBsb25nIEdMWFBidWZmZXI7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgR0xYUGl4bWFwOwor
CitleHRlcm4gIkMiIHZvaWQgZ2xYRGVzdHJveUNvbnRleHQoRGlzcGxheSosIEdMWENvbnRleHQp
OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3N0cnVjdCBYUHRyRGVsZXRlciB7CisgICAgdm9pZCBvcGVyYXRvcigpKFQqIHB0cikgY29uc3Qg
eyBYRnJlZShwdHIpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordXNpbmcgWFVuaXF1
ZVB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxULCBYUHRyRGVsZXRlcjxUPj47CisKKyNkZWZpbmUgREVG
SU5FX1hQVFJfREVMRVRFUih0eXBlTmFtZSwgZGVsZXRlckZ1bmMpIFwKKyAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBYUHRyRGVsZXRlcjx0eXBlTmFtZT4gXAorICAgIHsgXAorICAgICAgICB2b2lkIG9w
ZXJhdG9yKCkgKHR5cGVOYW1lKiBwdHIpIGNvbnN0IFwKKyAgICAgICAgeyBcCisgICAgICAgICAg
ICBpZiAocHRyKSBcCisgICAgICAgICAgICAgICAgZGVsZXRlckZ1bmMocHRyKTsgXAorICAgICAg
ICB9IFwKKyAgICB9OworCisjZGVmaW5lIERFRklORV9YUFRSX0RFTEVURVJfV0lUSF9ESVNQTEFZ
KHR5cGVOYW1lLCBkZWxldGVyRnVuYykgXAorICAgIHRlbXBsYXRlPD4gc3RydWN0IFhQdHJEZWxl
dGVyPHR5cGVOYW1lPiBcCisgICAgeyBcCisgICAgICAgIHZvaWQgb3BlcmF0b3IoKSAodHlwZU5h
bWUqIHB0cikgY29uc3QgXAorICAgICAgICB7IFwKKyAgICAgICAgICAgIGlmIChwdHIpIFwKKyAg
ICAgICAgICAgICAgICBkZWxldGVyRnVuYyhkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgcHRyKTsgXAorICAgICAg
ICB9IFwKKyAgICB9OworCisKK0RFRklORV9YUFRSX0RFTEVURVIoWEltYWdlLCBYRGVzdHJveUlt
YWdlKQorREVGSU5FX1hQVFJfREVMRVRFUl9XSVRIX0RJU1BMQVkoX1hHQywgWEZyZWVHQykKKwor
I2lmIFVTRShHTFgpCitERUZJTkVfWFBUUl9ERUxFVEVSX1dJVEhfRElTUExBWShfX0dMWGNvbnRl
eHRSZWMsIGdsWERlc3Ryb3lDb250ZXh0KQorI2VuZGlmCisKKyN1bmRlZiBERUZJTkVfWFBUUl9E
RUxFVEVSCisjdW5kZWYgREVGSU5FX1hQVFJfREVMRVRFUl9XSVRIX0RJU1BMQVkKKworZW51bSBj
bGFzcyBYUmVzb3VyY2UgeworICAgIENvbG9ybWFwLAorICAgIERhbWFnZSwKKyAgICBQaXhtYXAs
CisgICAgV2luZG93LAorI2lmIFVTRShHTFgpCisgICAgR0xYUGJ1ZmZlciwKKyAgICBHTFhQaXht
YXAsCisjZW5kaWYKK307CisKK3RlbXBsYXRlIDxYUmVzb3VyY2UgVD4gY2xhc3MgWFVuaXF1ZVJl
c291cmNlIHsKK3B1YmxpYzoKKyAgICBYVW5pcXVlUmVzb3VyY2UoKQorICAgICAgICA6IG1fcmVz
b3VyY2UoMCkKKyAgICB7CisgICAgfQorCisgICAgWFVuaXF1ZVJlc291cmNlKGxvbmcgdW5zaWdu
ZWQgcmVzb3VyY2UpCisgICAgICAgIDogbV9yZXNvdXJjZShyZXNvdXJjZSkKKyAgICB7CisgICAg
fQorCisgICAgWFVuaXF1ZVJlc291cmNlKFhVbmlxdWVSZXNvdXJjZSYmIHVuaXF1ZVJlc291cmNl
KQorICAgICAgICA6IG1fcmVzb3VyY2UodW5pcXVlUmVzb3VyY2UucmVsZWFzZSgpKQorICAgIHsK
KyAgICB9CisKKyAgICBYVW5pcXVlUmVzb3VyY2UmIG9wZXJhdG9yPShYVW5pcXVlUmVzb3VyY2Um
JiB1bmlxdWVSZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHJlc2V0KHVuaXF1ZVJlc291cmNlLnJl
bGVhc2UoKSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB+WFVuaXF1ZVJl
c291cmNlKCkKKyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgfQorCisgICAgbG9uZyB1bnNp
Z25lZCBnZXQoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlOyB9CisgICAgbG9uZyB1bnNpZ25l
ZCByZWxlYXNlKCkgeyBsb25nIHVuc2lnbmVkIHJlc291cmNlID0gbV9yZXNvdXJjZTsgbV9yZXNv
dXJjZSA9IDA7IHJldHVybiByZXNvdXJjZTsgfQorCisgICAgdm9pZCByZXNldChsb25nIHVuc2ln
bmVkIHJlc291cmNlID0gMCkKKyAgICB7CisgICAgICAgIHN0ZDo6c3dhcChtX3Jlc291cmNlLCBy
ZXNvdXJjZSk7CisgICAgICAgIGRlbGV0ZVhSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfQorCisg
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9yZXNvdXJjZTsgfQorCisgICAg
Ly8gVGhpcyBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRv
IGJvb2wgYnV0IG5vdCB0byBvdGhlciBpbnRlZ2VyIHR5cGVzLgorICAgIHR5cGVkZWYgdm9pZCog
KFhVbmlxdWVSZXNvdXJjZTo6KlVuc3BlY2lmaWVkQm9vbFR5cGUpOworICAgIG9wZXJhdG9yIFVu
c3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Jlc291
cmNlID8gcmVpbnRlcnByZXRfY2FzdDxVbnNwZWNpZmllZEJvb2xUeXBlKj4oMSkgOiAwOworICAg
IH0KKworICAgIFhVbmlxdWVSZXNvdXJjZShjb25zdCBYVW5pcXVlUmVzb3VyY2UmKSA9IGRlbGV0
ZTsKKyAgICBYVW5pcXVlUmVzb3VyY2UmIG9wZXJhdG9yPShjb25zdCBYVW5pcXVlUmVzb3VyY2Um
KSA9IGRlbGV0ZTsKK3ByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgZGVsZXRlWFJlc291cmNlKGxv
bmcgdW5zaWduZWQgcmVzb3VyY2UpOworCisgICAgbG9uZyB1bnNpZ25lZCBtX3Jlc291cmNlOwor
fTsKKwordHlwZWRlZiBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpDb2xvcm1hcD4gWFVuaXF1
ZUNvbG9ybWFwOwordHlwZWRlZiBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpEYW1hZ2U+IFhV
bmlxdWVEYW1hZ2U7Cit0eXBlZGVmIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OlBpeG1hcD4g
WFVuaXF1ZVBpeG1hcDsKK3R5cGVkZWYgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6V2luZG93
PiBYVW5pcXVlV2luZG93OworI2lmIFVTRShHTFgpCit0eXBlZGVmIFhVbmlxdWVSZXNvdXJjZTxY
UmVzb3VyY2U6OkdMWFBidWZmZXI+IFhVbmlxdWVHTFhQYnVmZmVyOwordHlwZWRlZiBYVW5pcXVl
UmVzb3VyY2U8WFJlc291cmNlOjpHTFhQaXhtYXA+IFhVbmlxdWVHTFhQaXhtYXA7CisjZW5kaWYK
KworLy8gR2l2ZSBhIG5hbWUgYWxzbyB0byB0aGVzZSBYVW5pcXVlUHRyIHRvIGF2b2lkIGhhdmlu
ZyB0byB1c2UgdGhlIGludGVybmFsIHN0cnVjdCBuYW1lcyAoX1hHQywgX19HTFhjb250ZXh0UmVj
LCAuLi4pLgordHlwZWRlZiBYVW5pcXVlUHRyPF9YR0M+IFhVbmlxdWVHQzsKKyNpZiBVU0UoR0xY
KQordHlwZWRlZiBYVW5pcXVlUHRyPF9fR0xYY29udGV4dFJlYz4gWFVuaXF1ZUdMWENvbnRleHQ7
CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUExBVEZPUk0o
WDExKQorCisjZW5kaWYgLy8gWFVuaXF1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjBjNjNjNi4uZjU1YjE0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA1LTAyICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbWDExXSBBZGQgWFVuaXF1
ZVB0ciBhbmQgWFVuaXF1ZVJlc291cmNlIHRvIGF1dG9tYXRpY2FsbHkgZnJlZSBYIHJlc291cmNl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NTIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFhV
bmlxdWVQdHIgYW5kIFhVbmlxdWVSZXNvdXJjZSB0byBmcmVlIFggcmVzb3VyY2VzLgorCisgICAg
ICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy94MTEgZGlyCisgICAgICAgIHRvIHRoZSBpbmNsdWRlIGRpciBsaXN0LgorICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFj
a2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0
ZUJhY2tlbmQpOiBEbyBub3QgcGFzcyB0aGUgZGlzcGxheSB0bworICAgICAgICB0aGUgQmFja2lu
Z1N0b3JlQmFja2VuZENhaXJvWDExIGNvbnN0cnVjdG9yLgorICAgICAgICAqIFVJUHJvY2Vzcy9n
dGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cpOgorICAg
ICAgICAoV2ViS2l0OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6flJlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3c6OnJlc2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
OjpjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpzdXJmYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3Rr
L1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93Ojp3aW5kb3dJRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93bGVzcyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybURlc3Ryb3kpOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KToKKwogMjAxNS0wNC0y
OSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W1NPVVBdIE5ldHdvcmsgQ2FjaGU6IEltcGxlbWVudCBTaGFyZWFibGVSZXNvdXJjZSBmb3IgU291
cCBhbmQgZW5hYmxlIGl0IGZvciBHVEsgcGxhdGZvcm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
aW5kZXggYzJhMDA0Ni4uMDA2ZTMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTIy
Nyw2ICsyMjcsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8iCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2VmbCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBo
aWNzL3gxMSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3VwIgogICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQiCiAgICAgIiR7V0VCS0lUMl9E
SVJ9L05ldHdvcmtQcm9jZXNzL2VmbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOWE2
NDllOC4uMDRjZTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21h
a2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTQ1OSw2ICs0NTks
NyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3RrIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlybyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3gxMSIKICAgICAiJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3VwIgogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS90ZXh0L2VuY2hhbnQiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L0RhdGFiYXNlUHJvY2Vz
cy91bml4IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5n
U3RvcmVDYWlyby5jcHAKaW5kZXggYmQ4MGIzNy4uMmZiMzBiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC01NCw3
ICs1NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm8+IEJhY2tp
bmdTdG9yZTo6Y3JlYXRlQmFja2VuZCgpCiAgICAgICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ3Rr
X3dpZGdldF9nZXRfdmlzdWFsKG1fd2ViUGFnZVByb3h5LnZpZXdXaWRnZXQoKSk7CiAgICAgICAg
IEdka1NjcmVlbiogc2NyZWVuID0gZ2RrX3Zpc3VhbF9nZXRfc2NyZWVuKHZpc3VhbCk7CiAgICAg
ICAgIEFTU0VSVChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHNoYXJlZERpc3BsYXkpLm5h
dGl2ZSgpID09IEdES19TQ1JFRU5fWERJU1BMQVkoc2NyZWVuKSk7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMT4oZG93bmNhc3Q8UGxh
dGZvcm1EaXNwbGF5WDExPihzaGFyZWREaXNwbGF5KS5uYXRpdmUoKSwgR0RLX1dJTkRPV19YSUQo
Z2RrX3NjcmVlbl9nZXRfcm9vdF93aW5kb3coc2NyZWVuKSksCisgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMT4oR0RLX1dJTkRPV19YSUQo
Z2RrX3NjcmVlbl9nZXRfcm9vdF93aW5kb3coc2NyZWVuKSksCiAgICAgICAgICAgICBHREtfVklT
VUFMX1hWSVNVQUwodmlzdWFsKSwgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgodmlzdWFsKSwgbV9zaXpl
LCBtX2RldmljZVNjYWxlRmFjdG9yKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5j
cHAKaW5kZXggNDQ0Zjg2NC4uM2ZiYTMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQogCisj
aW5jbHVkZSA8WDExL1hsaWIuaD4KICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YY29tcG9zaXRl
Lmg+CiAjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgogI2luY2x1ZGUgPGNhaXJv
LXhsaWIuaD4KQEAgLTEzNSwyMSArMTM2LDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdz4gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShHCiAK
IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhH
ZGtXaW5kb3cqIHBhcmVudFdpbmRvdywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRhbWFnZU5vdGlm
eSkKICAgICA6IG1fZGlzcGxheShHREtfRElTUExBWV9YRElTUExBWShnZGtfd2luZG93X2dldF9k
aXNwbGF5KHBhcmVudFdpbmRvdykpKQotICAgICwgbV93aW5kb3coMCkKLSAgICAsIG1fcGFyZW50
V2luZG93KDApCi0gICAgLCBtX3BpeG1hcCgwKQotICAgICwgbV9kYW1hZ2UoMCkKICAgICAsIG1f
bmVlZHNOZXdQaXhtYXBBZnRlclJlc2l6ZShmYWxzZSkKIHsKKyAgICBBU1NFUlQoZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0
aXZlKCkgPT0gbV9kaXNwbGF5KTsKICAgICBTY3JlZW4qIHNjcmVlbiA9IERlZmF1bHRTY3JlZW5P
ZkRpc3BsYXkobV9kaXNwbGF5KTsKIAogICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ2RrX3dpbmRv
d19nZXRfdmlzdWFsKHBhcmVudFdpbmRvdyk7Ci0gICAgQ29sb3JtYXAgY29sb3JtYXAgPSBYQ3Jl
YXRlQ29sb3JtYXAobV9kaXNwbGF5LCBSb290V2luZG93T2ZTY3JlZW4oc2NyZWVuKSwgR0RLX1ZJ
U1VBTF9YVklTVUFMKHZpc3VhbCksIEFsbG9jTm9uZSk7CisgICAgWFVuaXF1ZUNvbG9ybWFwIGNv
bG9ybWFwKFhDcmVhdGVDb2xvcm1hcChtX2Rpc3BsYXksIFJvb3RXaW5kb3dPZlNjcmVlbihzY3Jl
ZW4pLCBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgQWxsb2NOb25lKSk7CiAKICAgICAvLyBU
aGlzIGlzIGJhc2VkIG9uIGNvZGUgZnJvbSBDaHJvbWl1bTogc3JjL2NvbnRlbnQvY29tbW9uL2dw
dS9pbWFnZV90cmFuc3BvcnRfc3VyZmFjZV9saW51eC5jYwogICAgIFhTZXRXaW5kb3dBdHRyaWJ1
dGVzIHdpbmRvd0F0dHJpYnV0ZXM7CiAgICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRp
cmVjdCA9IFRydWU7Ci0gICAgd2luZG93QXR0cmlidXRlcy5jb2xvcm1hcCA9IGNvbG9ybWFwOwor
ICAgIHdpbmRvd0F0dHJpYnV0ZXMuY29sb3JtYXAgPSBjb2xvcm1hcC5nZXQoKTsKIAogICAgIC8v
IENXQm9yZGVyUGl4ZWwgbXVzdCBiZSBwcmVzZW50IHdoZW4gdGhlIGRlcHRoIGRvZXNuJ3QgbWF0
Y2ggdGhlIHBhcmVudCdzIG9uZS4KICAgICAvLyBTZWUgaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Au
b3JnL3hvcmcveHNlcnZlci90cmVlL2RpeC93aW5kb3cuYz9pZD14b3JnLXNlcnZlci0xLjE2LjAj
bjcwMy4KQEAgLTE2NCwxMyArMTYyLDEzIEBAIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpS
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhHZGtXaW5kb3cqIHBhcmVudFdpbmRvdywKICAgICAg
ICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksCiAgICAgICAgIENXT3ZlcnJpZGVSZWRpcmVj
dCB8IENXQ29sb3JtYXAgfCBDV0JvcmRlclBpeGVsLAogICAgICAgICAmd2luZG93QXR0cmlidXRl
cyk7Ci0gICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fcGFyZW50V2luZG93KTsKKyAgICBYTWFw
V2luZG93KG1fZGlzcGxheSwgbV9wYXJlbnRXaW5kb3cuZ2V0KCkpOwogCiAgICAgd2luZG93QXR0
cmlidXRlcy5ldmVudF9tYXNrID0gU3RydWN0dXJlTm90aWZ5TWFzazsKICAgICB3aW5kb3dBdHRy
aWJ1dGVzLm92ZXJyaWRlX3JlZGlyZWN0ID0gRmFsc2U7CiAgICAgLy8gQ3JlYXRlIHRoZSB3aW5k
b3cgb2YgYXQgbGFzdCAxeDEgc2luY2UgWCBkb2Vzbid0IGFsbG93IHRvIGNyZWF0ZSBlbXB0eSB3
aW5kb3dzLgogICAgIG1fd2luZG93ID0gWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksCi0gICAgICAg
IG1fcGFyZW50V2luZG93LAorICAgICAgICBtX3BhcmVudFdpbmRvdy5nZXQoKSwKICAgICAgICAg
MCwgMCwKICAgICAgICAgc3RkOjptYXgoMSwgbV9zaXplLndpZHRoKCkpLAogICAgICAgICBzdGQ6
Om1heCgxLCBtX3NpemUuaGVpZ2h0KCkpLApAQCAtMTgwLDIxICsxNzgsMTkgQEAgUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KEdka1dpbmRvdyog
cGFyZW50V2luZG93LAogICAgICAgICBDb3B5RnJvbVBhcmVudCwKICAgICAgICAgQ1dFdmVudE1h
c2ssCiAgICAgICAgICZ3aW5kb3dBdHRyaWJ1dGVzKTsKLSAgICBYTWFwV2luZG93KG1fZGlzcGxh
eSwgbV93aW5kb3cpOworICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSk7
CiAKLSAgICBYRnJlZUNvbG9ybWFwKG1fZGlzcGxheSwgY29sb3JtYXApOwotCi0gICAgeERhbWFn
ZU5vdGlmaWVyKCkuYWRkKG1fd2luZG93LCBXVEY6Om1vdmUoZGFtYWdlTm90aWZ5KSk7CisgICAg
eERhbWFnZU5vdGlmaWVyKCkuYWRkKG1fd2luZG93LmdldCgpLCBXVEY6Om1vdmUoZGFtYWdlTm90
aWZ5KSk7CiAKICAgICB3aGlsZSAoMSkgewogICAgICAgICBYRXZlbnQgZXZlbnQ7Ci0gICAgICAg
IFhXaW5kb3dFdmVudChtX2Rpc3BsYXksIG1fd2luZG93LCBTdHJ1Y3R1cmVOb3RpZnlNYXNrLCAm
ZXZlbnQpOwotICAgICAgICBpZiAoZXZlbnQudHlwZSA9PSBNYXBOb3RpZnkgJiYgZXZlbnQueG1h
cC53aW5kb3cgPT0gbV93aW5kb3cpCisgICAgICAgIFhXaW5kb3dFdmVudChtX2Rpc3BsYXksIG1f
d2luZG93LmdldCgpLCBTdHJ1Y3R1cmVOb3RpZnlNYXNrLCAmZXZlbnQpOworICAgICAgICBpZiAo
ZXZlbnQudHlwZSA9PSBNYXBOb3RpZnkgJiYgZXZlbnQueG1hcC53aW5kb3cgPT0gbV93aW5kb3cu
Z2V0KCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9Ci0gICAgWFNlbGVjdElucHV0KG1fZGlz
cGxheSwgbV93aW5kb3csIE5vRXZlbnRNYXNrKTsKLSAgICBYQ29tcG9zaXRlUmVkaXJlY3RXaW5k
b3cobV9kaXNwbGF5LCBtX3dpbmRvdywgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOwotICAgIG1f
ZGFtYWdlID0gWERhbWFnZUNyZWF0ZShtX2Rpc3BsYXksIG1fd2luZG93LCBYRGFtYWdlUmVwb3J0
Tm9uRW1wdHkpOworICAgIFhTZWxlY3RJbnB1dChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBO
b0V2ZW50TWFzayk7CisgICAgWENvbXBvc2l0ZVJlZGlyZWN0V2luZG93KG1fZGlzcGxheSwgbV93
aW5kb3cuZ2V0KCksIENvbXBvc2l0ZVJlZGlyZWN0TWFudWFsKTsKKyAgICBtX2RhbWFnZSA9IFhE
YW1hZ2VDcmVhdGUobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgWERhbWFnZVJlcG9ydE5vbkVt
cHR5KTsKIH0KIAogUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6On5SZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdygpCkBAIC0yMDQsMTIgKzIwMCwxMiBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKICAgICBBU1NFUlQobV93aW5kb3cp
OwogICAgIEFTU0VSVChtX3BhcmVudFdpbmRvdyk7CiAKLSAgICB4RGFtYWdlTm90aWZpZXIoKS5y
ZW1vdmUobV93aW5kb3cpOworICAgIHhEYW1hZ2VOb3RpZmllcigpLnJlbW92ZShtX3dpbmRvdy5n
ZXQoKSk7CiAKLSAgICBYRGFtYWdlRGVzdHJveShtX2Rpc3BsYXksIG1fZGFtYWdlKTsKLSAgICBY
RGVzdHJveVdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93KTsKLSAgICBYRGVzdHJveVdpbmRvdyht
X2Rpc3BsYXksIG1fcGFyZW50V2luZG93KTsKLSAgICBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3Vy
ZmFjZSgpOworICAgIC8vIEV4cGxpY2l0IHJlc2V0IHRoZXNlIGJlY2F1c2Ugd2UgbmVlZCB0byBl
bnN1cmUgaXQgaGFwcGVucyBpbiB0aGlzIG9yZGVyLgorICAgIG1fZGFtYWdlLnJlc2V0KCk7Cisg
ICAgbV93aW5kb3cucmVzZXQoKTsKKyAgICBtX3BhcmVudFdpbmRvdy5yZXNldCgpOwogfQogCiB2
b2lkIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKQEAgLTIxOCw3ICsyMTQsNyBAQCB2b2lkIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojpy
ZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUmVz
aXplIHRoZSB3aW5kb3cgdG8gYXQgbGFzdCAxeDEgc2luY2UgWCBkb2Vzbid0IGFsbG93IHRvIGNy
ZWF0ZSBlbXB0eSB3aW5kb3dzLgotICAgIFhSZXNpemVXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRv
dywgc3RkOjptYXgoMSwgc2l6ZS53aWR0aCgpKSwgc3RkOjptYXgoMSwgc2l6ZS5oZWlnaHQoKSkp
OworICAgIFhSZXNpemVXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgc3RkOjptYXgo
MSwgc2l6ZS53aWR0aCgpKSwgc3RkOjptYXgoMSwgc2l6ZS5oZWlnaHQoKSkpOwogICAgIFhGbHVz
aChtX2Rpc3BsYXkpOwogCiAgICAgbV9zaXplID0gc2l6ZTsKQEAgLTIzMiw5ICsyMjgsOCBAQCB2
b2lkIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3Vy
ZmFjZSgpCiAgICAgaWYgKCFtX3BpeG1hcCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgWEZyZWVQ
aXhtYXAobV9kaXNwbGF5LCBtX3BpeG1hcCk7Ci0gICAgbV9waXhtYXAgPSAwOwogICAgIG1fc3Vy
ZmFjZSA9IG51bGxwdHI7CisgICAgbV9waXhtYXAucmVzZXQoKTsKIH0KIAogY2Fpcm9fc3VyZmFj
ZV90KiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6c3VyZmFjZSgpCkBAIC0yNDcsMjAgKzI0
MiwxOSBAQCBjYWlyb19zdXJmYWNlX3QqIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpzdXJm
YWNlKCkKIAogICAgIG1fbmVlZHNOZXdQaXhtYXBBZnRlclJlc2l6ZSA9IGZhbHNlOwogCi0gICAg
UGl4bWFwIG5ld1BpeG1hcCA9IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKG1fZGlzcGxheSwg
bV93aW5kb3cpOworICAgIFhVbmlxdWVQaXhtYXAgbmV3UGl4bWFwKFhDb21wb3NpdGVOYW1lV2lu
ZG93UGl4bWFwKG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkpKTsKICAgICBpZiAoIW5ld1BpeG1h
cCkgewogICAgICAgICBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBYV2luZG93QXR0cmlidXRlcyB3aW5kb3dBdHRy
aWJ1dGVzOwotICAgIGlmICghWEdldFdpbmRvd0F0dHJpYnV0ZXMobV9kaXNwbGF5LCBtX3dpbmRv
dywgJndpbmRvd0F0dHJpYnV0ZXMpKSB7CisgICAgaWYgKCFYR2V0V2luZG93QXR0cmlidXRlcyht
X2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCAmd2luZG93QXR0cmlidXRlcykpIHsKICAgICAgICAg
Y2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UoKTsKLSAgICAgICAgWEZyZWVQaXhtYXAobV9k
aXNwbGF5LCBuZXdQaXhtYXApOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBuZXdTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9feGxp
Yl9zdXJmYWNlX2NyZWF0ZShtX2Rpc3BsYXksIG5ld1BpeG1hcCwgd2luZG93QXR0cmlidXRlcy52
aXN1YWwsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKKyAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBuZXdTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9feGxpYl9zdXJmYWNlX2Ny
ZWF0ZShtX2Rpc3BsYXksIG5ld1BpeG1hcC5nZXQoKSwgd2luZG93QXR0cmlidXRlcy52aXN1YWws
IG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKIAogICAgIC8vIE52aWRpYSBkcml2
ZXJzIHNlZW0gdG8gcHJlcGFyZSB0aGVpciByZWRpcmVjdGVkIHdpbmRvdyBwaXhtYXAgYXN5bmNo
cm9ub3VzbHksIHNvIGZvciBhIGZldyBmcmFjdGlvbnMKICAgICAvLyBvZiBhIHNlY29uZCBhZnRl
ciBlYWNoIHJlc2l6ZSwgd2hpbGUgZG9pbmcgY29udGludW91cyByZXNpemluZyAod2hpY2ggY29u
c3RhbnRseSBkZXN0cm95cyBhbmQgY3JlYXRlcwpAQCAtMjc1LDcgKzI2OSw3IEBAIGNhaXJvX3N1
cmZhY2VfdCogUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnN1cmZhY2UoKQogICAgIH0KIAog
ICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7Ci0gICAgbV9waXhtYXAgPSBuZXdQ
aXhtYXA7CisgICAgbV9waXhtYXAgPSBXVEY6Om1vdmUobmV3UGl4bWFwKTsKICAgICBtX3N1cmZh
Y2UgPSBuZXdTdXJmYWNlOwogICAgIHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93LmgKaW5kZXggM2FhNGZmNS4uNTRmM2Y3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKQEAg
LTMxLDExICszMSwxMiBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgotI2luY2x1ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9YVW5pcXVlLmg+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KIAogdHlwZWRlZiBz
dHJ1Y3QgX0dka1dpbmRvdyBHZGtXaW5kb3c7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgRGFtYWdl
OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIFdpbmRvdzsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
QEAgLTQ0LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IGNyZWF0ZShHZGtXaW5kb3cqLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4gZGFtYWdlTm90aWZ5KTsKICAgICB+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3co
KTsKIAotICAgIFdpbmRvdyB3aW5kb3dJRCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93OyB9Cisg
ICAgV2luZG93IHdpbmRvd0lEKCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3cuZ2V0KCk7IH0KICAg
ICB2b2lkIHJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlKCk7CiAKQEAgLTU0LDEwICs1NSwxMCBAQCBwcml2YXRlOgogCiAgICAgRGlz
cGxheSogbV9kaXNwbGF5OwogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwotICAgIFdpbmRv
dyBtX3dpbmRvdzsKLSAgICBXaW5kb3cgbV9wYXJlbnRXaW5kb3c7Ci0gICAgUGl4bWFwIG1fcGl4
bWFwOwotICAgIERhbWFnZSBtX2RhbWFnZTsKKyAgICBXZWJDb3JlOjpYVW5pcXVlV2luZG93IG1f
d2luZG93OworICAgIFdlYkNvcmU6OlhVbmlxdWVXaW5kb3cgbV9wYXJlbnRXaW5kb3c7CisgICAg
V2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKKyAgICBXZWJDb3JlOjpYVW5pcXVlRGFt
YWdlIG1fZGFtYWdlOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKICAg
ICBib29sIG1fbmVlZHNOZXdQaXhtYXBBZnRlclJlc2l6ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCmluZGV4IGIzYzgzYmQuLjVkMjI2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC00
Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHQuaCIKICNlbmRpZgogCisj
aWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCisjaW5jbHVkZSA8V2ViQ29yZS9YVW5pcXVlLmg+
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKIGNs
YXNzIEhUVFBIZWFkZXJNYXA7CkBAIC0zODcsNyArMzkxLDcgQEAgcHJpdmF0ZToKICAgICBOUF9D
R0NvbnRleHQgbV9ucENHQ29udGV4dDsKICNlbmRpZgogI2VsaWYgUExVR0lOX0FSQ0hJVEVDVFVS
RShYMTEpCi0gICAgUGl4bWFwIG1fZHJhd2FibGU7CisgICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1h
cCBtX2RyYXdhYmxlOwogICAgIERpc3BsYXkqIG1fcGx1Z2luRGlzcGxheTsKICNpZiBQTEFURk9S
TShHVEspCiAgICAgR3RrV2lkZ2V0KiBtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2Fw
ZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAppbmRleCAzN2Y0NzkzLi4yMzcxZjM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05l
dHNjYXBlUGx1Z2luWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDExLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9YVW5pcXVlLmg+CiAKICNpZiBQTEFURk9STShHVEspCiAjaW5j
bHVkZSA8Z3RrL2d0ay5oPgpAQCAtMTc1LDEyICsxNzYsMTAgQEAgYm9vbCBOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZVdpbmRvd2xlc3MoKQogICAgIHZpc3VhbFRlbXBsYXRl
LmRlcHRoID0gZGVwdGg7CiAgICAgdmlzdWFsVGVtcGxhdGUuY19jbGFzcyA9IFRydWVDb2xvcjsK
ICAgICBpbnQgbnVtTWF0Y2hpbmc7Ci0gICAgWFZpc3VhbEluZm8qIHZpc3VhbEluZm8gPSBYR2V0
VmlzdWFsSW5mbyhkaXNwbGF5LCBWaXN1YWxTY3JlZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwg
VmlzdWFsQ2xhc3NNYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnZpc3VhbFRlbXBsYXRlLCAmbnVtTWF0Y2hpbmcpOworICAgIFhVbmlxdWVQdHI8WFZp
c3VhbEluZm8+IHZpc3VhbEluZm8oWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsU2NyZWVu
TWFzayB8IFZpc3VhbERlcHRoTWFzayB8IFZpc3VhbENsYXNzTWFzaywgJnZpc3VhbFRlbXBsYXRl
LCAmbnVtTWF0Y2hpbmcpKTsKICAgICBBU1NFUlQodmlzdWFsSW5mbyk7Ci0gICAgVmlzdWFsKiB2
aXN1YWwgPSB2aXN1YWxJbmZvWzBdLnZpc3VhbDsKKyAgICBWaXN1YWwqIHZpc3VhbCA9IHZpc3Vh
bEluZm8uZ2V0KClbMF0udmlzdWFsOwogICAgIEFTU0VSVCh2aXN1YWwpOwotICAgIFhGcmVlKHZp
c3VhbEluZm8pOwogCiAgICAgY2FsbGJhY2tTdHJ1Y3QtPnZpc3VhbCA9IHZpc3VhbDsKICAgICBj
YWxsYmFja1N0cnVjdC0+Y29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoZGlzcGxheSwgcm9vdFdp
bmRvd0lEKCksIHZpc3VhbCwgQWxsb2NOb25lKTsKQEAgLTIzMiwxMCArMjMxLDcgQEAgdm9pZCBO
ZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1EZXN0cm95KCkKICAgICBYRnJlZUNvbG9ybWFwKGhvc3RE
aXNwbGF5LCBjYWxsYmFja1N0cnVjdC0+Y29sb3JtYXApOwogICAgIGRlbGV0ZSBjYWxsYmFja1N0
cnVjdDsKIAotICAgIGlmIChtX2RyYXdhYmxlKSB7Ci0gICAgICAgIFhGcmVlUGl4bWFwKGhvc3RE
aXNwbGF5LCBtX2RyYXdhYmxlKTsKLSAgICAgICAgbV9kcmF3YWJsZSA9IDA7Ci0gICAgfQorICAg
IG1fZHJhd2FibGUucmVzZXQoKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAobV9wbGF0
Zm9ybVBsdWdpbldpZGdldCkgewpAQCAtMjYyLDE4ICsyNTgsMTIgQEAgdm9pZCBOZXRzY2FwZVBs
dWdpbjo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBEaXNwbGF5KiBkaXNwbGF5ID0geDExSG9zdERpc3BsYXkoKTsKLSAgICBpZiAobV9k
cmF3YWJsZSkKLSAgICAgICAgWEZyZWVQaXhtYXAoZGlzcGxheSwgbV9kcmF3YWJsZSk7Ci0KLSAg
ICBpZiAobV9wbHVnaW5TaXplLmlzRW1wdHkoKSkgewotICAgICAgICBtX2RyYXdhYmxlID0gMDsK
KyAgICBtX2RyYXdhYmxlLnJlc2V0KCk7CisgICAgaWYgKG1fcGx1Z2luU2l6ZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2RyYXdhYmxlID0gWENyZWF0ZVBpeG1h
cChkaXNwbGF5LCByb290V2luZG93SUQoKSwgbV9wbHVnaW5TaXplLndpZHRoKCksIG1fcGx1Z2lu
U2l6ZS5oZWlnaHQoKSwgZGlzcGxheURlcHRoKCkpOwogCi0gICAgWFN5bmMoZGlzcGxheSwgZmFs
c2UpOyAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc2VydmVyIGtub3dzIGFib3V0IHRoZSBEcmF3YWJs
ZS4KKyAgICBtX2RyYXdhYmxlID0gWENyZWF0ZVBpeG1hcCh4MTFIb3N0RGlzcGxheSgpLCByb290
V2luZG93SUQoKSwgbV9wbHVnaW5TaXplLndpZHRoKCksIG1fcGx1Z2luU2l6ZS5oZWlnaHQoKSwg
ZGlzcGxheURlcHRoKCkpOworICAgIFhTeW5jKHgxMUhvc3REaXNwbGF5KCksIGZhbHNlKTsgLy8g
TWFrZSBzdXJlIHRoYXQgdGhlIHNlcnZlciBrbm93cyBhYm91dCB0aGUgRHJhd2FibGUuCiB9CiAK
IHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtVmlzaWJpbGl0eURpZENoYW5nZSgpCkBAIC0z
MDcsNyArMjk3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnQKICAgICBYR3JhcGhpY3NFeHBv
c2VFdmVudCYgZXhwb3NlRXZlbnQgPSB4ZXZlbnQueGdyYXBoaWNzZXhwb3NlOwogICAgIGV4cG9z
ZUV2ZW50LnR5cGUgPSBHcmFwaGljc0V4cG9zZTsKICAgICBleHBvc2VFdmVudC5kaXNwbGF5ID0g
eDExSG9zdERpc3BsYXkoKTsKLSAgICBleHBvc2VFdmVudC5kcmF3YWJsZSA9IG1fZHJhd2FibGU7
CisgICAgZXhwb3NlRXZlbnQuZHJhd2FibGUgPSBtX2RyYXdhYmxlLmdldCgpOwogCiAgICAgSW50
UmVjdCBleHBvc2VkUmVjdChkaXJ0eVJlY3QpOwogICAgIGV4cG9zZUV2ZW50LnggPSBleHBvc2Vk
UmVjdC54KCk7CkBAIC0zMjQsMTEgKzMxNCw4IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRm
b3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0CiAg
ICAgICAgIFhTeW5jKG1fcGx1Z2luRGlzcGxheSwgZmFsc2UpOwogCiAjaWYgUExBVEZPUk0oR1RL
KSB8fCAoUExBVEZPUk0oRUZMKSAmJiBVU0UoQ0FJUk8pKQotICAgIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IGRyYXdhYmxlU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVh
dGUobV9wbHVnaW5EaXNwbGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kcmF3YWJsZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE5QU2V0V2luZG93Q2FsbGJhY2tT
dHJ1Y3QqPihtX25wV2luZG93LndzX2luZm8pLT52aXN1YWwsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3BsdWdpblNpemUud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGx1
Z2luU2l6ZS5oZWlnaHQoKSkpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGRyYXdhYmxl
U3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9wbHVnaW5EaXNw
bGF5LCBtX2RyYXdhYmxlLmdldCgpLAorICAgICAgICBzdGF0aWNfY2FzdDxOUFNldFdpbmRvd0Nh
bGxiYWNrU3RydWN0Kj4obV9ucFdpbmRvdy53c19pbmZvKS0+dmlzdWFsLCBtX3BsdWdpblNpemUu
d2lkdGgoKSwgbV9wbHVnaW5TaXplLmhlaWdodCgpKSk7CiAgICAgY2Fpcm9fdCogY3IgPSBjb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252479</attachid>
            <date>2015-05-06 09:10:37 -0700</date>
            <delta_ts>2015-05-06 09:21:41 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>wk-xunique.diff</filename>
            <type>text/plain</type>
            <size>54612</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjhiMGU1Li5iNTgzNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQg
QEAKKzIwMTUtMDUtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtYMTFdIEFkZCBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8g
YXV0b21hdGljYWxseSBmcmVlIFggcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgWFVuaXF1ZVB0ciBhcyBhIHRlbXBsYXRlIGFsaWFz
IG9mIHN0ZDp1bmlxdWVfcHRyIHRvIGhhbmRsZSBYCisgICAgICAgIHJlc291cmNlcyB1c2luZyBw
b2ludGVycyBhbmQgWFVuaXF1ZVJlc291cmNlIGFzIGEgbmV3IGNsYXNzIHRvCisgICAgICAgIGhh
bmRsZSBYIHJlc291cmNlcyB1c2luZyBhIGxvbmcgdW5zaWduZWQgaWRlbnRpZmllci4gVGhpcwor
ICAgICAgICBzaW1wbGlmaWVzIHRoZSBjb2RlIGFuZCBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdCB0
byBsZWFrIFggcmVzb3VyY2VzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBu
ZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFk
ZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDEx
KToKKyAgICAgICAgUmVtb3ZlIHRoZSBkaXNwbGF5IG1lbWJlciwgYW5kIHVzZSBYVW5pcXVlIGZv
ciBQaXhtYXAgYW5kIEdDLgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZENh
aXJvWDExOjp+QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKToKKyAgICAgICAgUmVtb3ZlIGNv
ZGUgdG8gZXhwbGljaXRseSBmcmVlIFBpeG1hcCBhbmQgR0MuCisgICAgICAgIChXZWJDb3JlOjpC
YWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6OnNjcm9sbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQpOiBVc2UgWFVuaXF1ZSBhbmQgdGhl
CisgICAgICAgIG5ldyBjb25zdHJ1Y3RvciB0aGF0IHJlY2VpdmVzIGEgWElELCBzaW5jZSB0aGVy
ZSdzIG5vIGxvbmdlcgorICAgICAgICBjb25mbGljdCB3aXRoIHRoZSBvbmUgcmVjZWl2aW5nIGEg
UGJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNv
bnRleHQpOiBVc2UgWFVuaXF1ZSBhbmQgdGhlCisgICAgICAgIG5ldyBjb25zdHJ1Y3RvciB0aGF0
IHJlY2VpdmVzIGEgWFVuaXF1ZUdMWFBidWZmZXImJi4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRHTFg6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpH
TENvbnRleHRHTFgpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0
R0xYKTogUmVtb3ZlIGNvZGUgdG8gZXhwbGljaXRseQorICAgICAgICBmcmVlIFggcmVzb3VyY2Vz
LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjptYWtlQ29udGV4dEN1cnJlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRHTFg6OnBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFR0xY
VHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OmRlc3Ryb3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OnByZXBhcmVUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTFRleHR1cmVGcm9tUGl4bWFwOjpFR0xUZXh0dXJlRnJv
bVBpeG1hcCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
ZWdsL0VHTFhTdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWENvbmZpZ1NlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxl
Y3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnKTogVXNlIFhVbmlxdWUKKyAgICAgICAgaW5zdGVhZCBv
ZiB0aGUgY3VzdG9tIHN0ZDo6dW5pcXVlIFgxMURlbGV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpH
TFhDb25maWdTZWxlY3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnV2l0aFZpc3VhbElkKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0U3Vy
ZmFjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R0xYT2ZmU2NyZWVuU3VyZmFjZTo6aW5p
dGlhbGl6ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9YMTFIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WDExSGVscGVyOjpjcmVhdGVPZmZT
Y3JlZW5XaW5kb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlgxMUhlbHBlcjo6Y3JlYXRl
UGl4bWFwKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L1gxMUhlbHBlci5oOiBSZW1vdmUgWDExRGVsZXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy94MTEvWFVuaXF1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJl
c291cmNlPFhSZXNvdXJjZTo6Q29sb3JtYXA+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6RGFtYWdlPjo6ZGVsZXRlWFJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OlBpeG1h
cD46OmRlbGV0ZVhSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8
WFJlc291cmNlOjpXaW5kb3c+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj46OmRlbGV0ZVhSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpHTFhQaXhtYXA+
OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5p
cXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkp
OgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpYVW5pcXVlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpvcGVyYXRvcj0pOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjp+WFVuaXF1ZVJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVS
ZXNvdXJjZTo6cmVsZWFzZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U6OnJl
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6b3BlcmF0b3IhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSopOgorCiAyMDE1LTA1LTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gTmV0d29yayBDYWNoZTogSW1wbGVtZW50IFNoYXJl
YWJsZVJlc291cmNlIGZvciBTb3VwIGFuZCBlbmFibGUgaXQgZm9yIEdUSyBwbGF0Zm9ybQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3NjRiMzM2Li40ZmY2ODk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMTk3LDYgKzE5Nyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxh
cy5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuY3BwCiAKICAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggYjVkMDliNy4uYWU5OGY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEy
Niw2ICsxMjYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKIAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MveDExL1hVbmlxdWUuY3BwCiAKICAgICBwbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAogICAg
IHBsYXRmb3JtL2d0ay9FdmVudExvb3BHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExLmNwcAppbmRleCA0YzA4NzJmLi43Yjg2MzFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm9YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Jh
Y2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMS5jcHAKQEAgLTI2LDE3ICsyNiwxNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0
b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqIGRpc3BsYXksIHVuc2lnbmVkIGxvbmcgcm9vdFdp
bmRvd0lELCBWaXN1YWwqIHZpc3VhbCwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiBzaXplLCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFj
a2luZ1N0b3JlQmFja2VuZENhaXJvWDExKHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lELCBWaXN1
YWwqIHZpc3VhbCwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikKICAgICA6IEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyhzaXplKQotICAgICwg
bV9kaXNwbGF5KGRpc3BsYXkpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gc2l6ZTsKICAg
ICBzY2FsZWRTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKIAotICAgIG1fcGl4bWFwID0g
WENyZWF0ZVBpeG1hcChtX2Rpc3BsYXksIHJvb3RXaW5kb3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgp
LCBzY2FsZWRTaXplLmhlaWdodCgpLCBkZXB0aCk7Ci0gICAgbV9nYyA9IFhDcmVhdGVHQyhtX2Rp
c3BsYXksIG1fcGl4bWFwLCAwLCBudWxscHRyKTsKKyAgICBhdXRvKiBkaXNwbGF5ID0gZG93bmNh
c3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSku
bmF0aXZlKCk7CisgICAgbV9waXhtYXAgPSBYQ3JlYXRlUGl4bWFwKGRpc3BsYXksIHJvb3RXaW5k
b3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhlaWdodCgpLCBkZXB0aCk7Cisg
ICAgbV9nYy5yZXNldChYQ3JlYXRlR0MoZGlzcGxheSwgbV9waXhtYXAuZ2V0KCksIDAsIG51bGxw
dHIpKTsKIAotICAgIG1fc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVh
dGUobV9kaXNwbGF5LCBtX3BpeG1hcCwgdmlzdWFsLCBzY2FsZWRTaXplLndpZHRoKCksIHNjYWxl
ZFNpemUuaGVpZ2h0KCkpKTsKKyAgICBtX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1
cmZhY2VfY3JlYXRlKGRpc3BsYXksIG1fcGl4bWFwLmdldCgpLCB2aXN1YWwsIHNjYWxlZFNpemUu
d2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWlnaHQoKSkpOwogICAgIGNhaXJvU3VyZmFjZVNldERldmlj
ZVNjYWxlKG1fc3VyZmFjZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFj
dG9yKTsKIH0KIApAQCAtNDQsOCArNDQsNiBAQCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6
On5CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEoKQogewogICAgIC8vIFRoZSBwaXhtYXAgbmVl
ZHMgdG8gZXhpc3Qgd2hlbiB0aGUgc3VyZmFjZSBpcyBkZXN0cm95ZWQsIHNvIGJlZ2luIGJ5IGNs
ZWFyaW5nIGl0LgogICAgIG1fc3VyZmFjZS5jbGVhcigpOwotICAgIFhGcmVlUGl4bWFwKG1fZGlz
cGxheSwgbV9waXhtYXApOwotICAgIFhGcmVlR0MobV9kaXNwbGF5LCBtX2djKTsKIH0KIAogdm9p
ZCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3Jv
bGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpCkBAIC02NSw3ICs2Myw3IEBAIHZv
aWQgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExOjpzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Ny
b2xsUmVjdCwgY29uc3QgSW50U2l6CiAgICAgc2NhbGVkU2Nyb2xsT2Zmc2V0LnNjYWxlKHhTY2Fs
ZSwgeVNjYWxlKTsKIAogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsK
LSAgICBYQ29weUFyZWEobV9kaXNwbGF5LCBtX3BpeG1hcCwgbV9waXhtYXAsIG1fZ2MsCisgICAg
WENvcHlBcmVhKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBtX3BpeG1hcC5nZXQoKSwgbV9waXhtYXAuZ2V0KCks
IG1fZ2MuZ2V0KCksCiAgICAgICAgIHRhcmdldFJlY3QueCgpIC0gc2NhbGVkU2Nyb2xsT2Zmc2V0
LndpZHRoKCksIHRhcmdldFJlY3QueSgpIC0gc2NhbGVkU2Nyb2xsT2Zmc2V0LmhlaWdodCgpLAog
ICAgICAgICB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIHRhcmdldFJl
Y3QueCgpLCB0YXJnZXRSZWN0LnkoKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3Jl
Y3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwg
dGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyb1gxMS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2lu
Z1N0b3JlQmFja2VuZENhaXJvWDExLmgKaW5kZXggMWRlMGQ4NC4uNDA3OGE2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmgKQEAgLTIyLDIxICsyMiwyMCBAQAogI2lu
Y2x1ZGUgIkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyby5oIgogCiAjaWYgVVNFKENBSVJPKSAmJiBQ
TEFURk9STShYMTEpCi0jaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlICJYVW5pcXVlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmFja2luZ1N0b3JlQmFja2VuZENhaXJv
WDExIGZpbmFsIDogcHVibGljIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyB7CiBwdWJsaWM6Ci0g
ICAgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqLCB1bnNpZ25lZCBsb25nIHJv
b3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IpOworICAgIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMSh1bnNpZ25l
ZCBsb25nIHJvb3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIHZpcnR1YWwgfkJhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb1gxMSgpOwogCiAgICAgdm9pZCBzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVj
dCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBEaXNwbGF5KiBtX2Rpc3BsYXk7Ci0gICAgUGl4bWFwIG1fcGl4bWFwOwotICAgIEdDIG1fZ2M7
CisgICAgWFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKKyAgICBYVW5pcXVlR0MgbV9nYzsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggZjc0NjdhNy4uYzEwOGNjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5jcHAKQEAgLTQzLDI1ICs0MywxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgR0xDbwog
ICAgIHZpc3VhbEluZm8udmlzdWFsaWQgPSBYVmlzdWFsSURGcm9tVmlzdWFsKGF0dHJpYnV0ZXMu
dmlzdWFsKTsKIAogICAgIGludCBudW1SZXR1cm5lZCA9IDA7Ci0gICAgWFZpc3VhbEluZm8qIHZp
c3VhbEluZm9MaXN0ID0gWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsSURNYXNrLCAmdmlz
dWFsSW5mbywgJm51bVJldHVybmVkKTsKLQotICAgIEdMWENvbnRleHQgZ2x4U2hhcmluZ0NvbnRl
eHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEdMWCo+KHNoYXJpbmdD
b250ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBnbFhDcmVh
dGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9MaXN0LCBnbHhTaGFyaW5nQ29udGV4dCwgVHJ1
ZSk7Ci0gICAgWEZyZWUodmlzdWFsSW5mb0xpc3QpOworICAgIFhVbmlxdWVQdHI8WFZpc3VhbElu
Zm8+IHZpc3VhbEluZm9MaXN0KFhHZXRWaXN1YWxJbmZvKGRpc3BsYXksIFZpc3VhbElETWFzaywg
JnZpc3VhbEluZm8sICZudW1SZXR1cm5lZCkpOwogCisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5n
Q29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hh
cmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkgOiBudWxscHRyOworICAgIFhVbmlxdWVHTFhD
b250ZXh0IGNvbnRleHQoZ2xYQ3JlYXRlQ29udGV4dChkaXNwbGF5LCB2aXN1YWxJbmZvTGlzdC5n
ZXQoKSwgZ2x4U2hhcmluZ0NvbnRleHQsIFRydWUpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gR0xYUGJ1ZmZlciBhbmQgWElEIGFyZSBib3Ro
IHRoZSBzYW1lIHR5cGVzIHVuZGVybmVhdGgsIHNvIHdlIGhhdmUgdG8gc2hhcmUKLSAgICAvLyBh
IGNvbnN0cnVjdG9yIGhlcmUgd2l0aCB0aGUgd2luZG93IHBhdGguCi0gICAgYXV0byBjb250ZXh0
V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihjb250ZXh0KTsKLSAgICBj
b250ZXh0V3JhcHBlci0+bV93aW5kb3cgPSB3aW5kb3c7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShj
b250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xY
PihXVEY6Om1vdmUoY29udGV4dCksIHdpbmRvdyk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBz
aGFyaW5nQ29udGV4dCkKIHsKLSAgICBpbnQgZmJDb25maWdBdHRyaWJ1dGVzW10gPSB7CisgICAg
c3RhdGljIGNvbnN0IGludCBmYkNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHsKICAgICAgICAgR0xYX0RS
QVdBQkxFX1RZUEUsIEdMWF9QQlVGRkVSX0JJVCwKICAgICAgICAgR0xYX1JFTkRFUl9UWVBFLCBH
TFhfUkdCQV9CSVQsCiAgICAgICAgIEdMWF9SRURfU0laRSwgMSwKQEAgLTc0LDMyICs2OCwyMSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZm
ZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcgogCiAgICAgaW50IHJldHVybmVkRWxlbWVudHM7CiAg
ICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwotICAgIEdMWEZCQ29uZmlnKiBj
b25maWdzID0gZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRyaWJ1dGVz
LCAmcmV0dXJuZWRFbGVtZW50cyk7Ci0gICAgaWYgKCFyZXR1cm5lZEVsZW1lbnRzKSB7Ci0gICAg
ICAgIFhGcmVlKGNvbmZpZ3MpOworICAgIFhVbmlxdWVQdHI8R0xYRkJDb25maWc+IGNvbmZpZ3Mo
Z2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRyaWJ1dGVzLCAmcmV0dXJu
ZWRFbGVtZW50cykpOworICAgIGlmICghcmV0dXJuZWRFbGVtZW50cykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQogCiAgICAgLy8gV2Ugd2lsbCBiZSByZW5kZXJpbmcgdG8gYSB0ZXh0
dXJlLCBzbyBvdXIgcGJ1ZmZlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGxhcmdlLgogICAgIHN0YXRp
YyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgR0xYX1BCVUZGRVJfV0lEVEgsIDEs
IEdMWF9QQlVGRkVSX0hFSUdIVCwgMSwgMCB9OwotICAgIEdMWFBidWZmZXIgcGJ1ZmZlciA9IGds
WENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmlnc1swXSwgcGJ1ZmZlckF0dHJpYnV0ZXMpOwot
ICAgIGlmICghcGJ1ZmZlcikgewotICAgICAgICBYRnJlZShjb25maWdzKTsKKyAgICBYVW5pcXVl
R0xYUGJ1ZmZlciBwYnVmZmVyKGdsWENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmlncy5nZXQo
KVswXSwgcGJ1ZmZlckF0dHJpYnV0ZXMpKTsKKyAgICBpZiAoIXBidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWENvbnRleHQgY29udGV4dCA9IGdsWENyZWF0
ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmlnc1swXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0Nv
bnRleHQsIEdMX1RSVUUpOwotICAgIFhGcmVlKGNvbmZpZ3MpOwotICAgIGlmICghY29udGV4dCkg
ewotICAgICAgICBnbFhEZXN0cm95UGJ1ZmZlcihkaXNwbGF5LCBwYnVmZmVyKTsKKyAgICBYVW5p
cXVlR0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmln
cy5nZXQoKVswXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0NvbnRleHQsIEdMX1RSVUUpKTsKKyAg
ICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIC8v
IEdMWFBidWZmZXIgYW5kIFhJRCBhcmUgYm90aCB0aGUgc2FtZSB0eXBlcyB1bmRlcm5lYXRoLCBz
byB3ZSBoYXZlIHRvIHNoYXJlCi0gICAgLy8gYSBjb25zdHJ1Y3RvciBoZXJlIHdpdGggdGhlIHdp
bmRvdyBwYXRoLgotICAgIGF1dG8gY29udGV4dFdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdM
Q29udGV4dEdMWD4oY29udGV4dCk7Ci0gICAgY29udGV4dFdyYXBwZXItPm1fcGJ1ZmZlciA9IHBi
dWZmZXI7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEY6Om1vdmUoY29udGV4dCksIFdURjo6
bW92ZShwYnVmZmVyKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KQpA
QCAtMTE0LDMxICs5NywyMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRl
eHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaQogICAgIH07CiAKICAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7Ci0gICAgWFZpc3VhbEluZm8qIHZp
c3VhbEluZm8gPSBnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5
KSwgdmlzdWFsQXR0cmlidXRlcyk7CisgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFs
SW5mbyhnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5KSwgdmlz
dWFsQXR0cmlidXRlcykpOwogICAgIGlmICghdmlzdWFsSW5mbykKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBnbFhDcmVhdGVDb250ZXh0KGRpc3Bs
YXksIHZpc3VhbEluZm8sIHNoYXJpbmdDb250ZXh0LCBHTF9UUlVFKTsKLSAgICBpZiAoIWNvbnRl
eHQpIHsKLSAgICAgICAgWEZyZWUodmlzdWFsSW5mbyk7CisgICAgWFVuaXF1ZUdMWENvbnRleHQg
Y29udGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm8uZ2V0KCksIHNoYXJp
bmdDb250ZXh0LCBHTF9UUlVFKSk7CisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9CiAKLSAgICBQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcChkaXNw
bGF5LCBEZWZhdWx0Um9vdFdpbmRvdyhkaXNwbGF5KSwgMSwgMSwgdmlzdWFsSW5mby0+ZGVwdGgp
OwotICAgIGlmICghcGl4bWFwKSB7Ci0gICAgICAgIFhGcmVlKHZpc3VhbEluZm8pOworICAgIFhV
bmlxdWVQaXhtYXAgcGl4bWFwKFhDcmVhdGVQaXhtYXAoZGlzcGxheSwgRGVmYXVsdFJvb3RXaW5k
b3coZGlzcGxheSksIDEsIDEsIHZpc3VhbEluZm8tPmRlcHRoKSk7CisgICAgaWYgKCFwaXhtYXAp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWFBpeG1hcCBnbHhQaXht
YXAgPSBnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mbywgcGl4bWFwKTsKLSAg
ICBpZiAoIWdseFBpeG1hcCkgewotICAgICAgICBYRnJlZVBpeG1hcChkaXNwbGF5LCBwaXhtYXAp
OwotICAgICAgICBYRnJlZSh2aXN1YWxJbmZvKTsKKyAgICBYVW5pcXVlR0xYUGl4bWFwIGdseFBp
eG1hcChnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mby5nZXQoKSwgcGl4bWFw
LmdldCgpKSk7CisgICAgaWYgKCFnbHhQaXhtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KIAotICAgIFhGcmVlKHZpc3VhbEluZm8pOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdMQ29udGV4dEdMWD4oY29udGV4dCwgcGl4bWFwLCBnbHhQaXhtYXApOworICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdMWD4oV1RGOjptb3ZlKGNvbnRleHQpLCBXVEY6
Om1vdmUocGl4bWFwKSwgV1RGOjptb3ZlKGdseFBpeG1hcCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRvdywg
R0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKQEAgLTE1Miw3ICsxMjcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRv
dywgR0xDb250ZXh0KgogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBz
dGF0aWNfY2FzdDxHTENvbnRleHRHTFgqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dCA6IDA7
CisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3Rh
dGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkg
OiBudWxscHRyOwogICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRl
eHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOwogICAgIGlmICghY29udGV4dCkK
ICAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGdseFNoYXJpbmdDb250ZXh0
KTsKQEAgLTE2NCwyMyArMTM5LDI3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdM
Q29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqCiAgICAgcmV0
dXJuIFdURjo6bW92ZShjb250ZXh0KTsKIH0KIAotR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgo
R0xYQ29udGV4dCBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitHTENvbnRleHRH
TFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhJRCB3aW5kb3cp
CisgICAgOiBtX2NvbnRleHQoV1RGOjptb3ZlKGNvbnRleHQpKQorICAgICwgbV93aW5kb3cod2lu
ZG93KQorICAgICwgbV9jYWlyb0RldmljZShudWxscHRyKQoreworfQorCitHTENvbnRleHRHTFg6
OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhVbmlxdWVHTFhQYnVm
ZmVyJiYgcGJ1ZmZlcikKKyAgICA6IG1fY29udGV4dChXVEY6Om1vdmUoY29udGV4dCkpCiAgICAg
LCBtX3dpbmRvdygwKQotICAgICwgbV9wYnVmZmVyKDApCi0gICAgLCBtX3BpeG1hcCgwKQotICAg
ICwgbV9nbHhQaXhtYXAoMCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKKyAgICAsIG1fcGJ1ZmZl
cihXVEY6Om1vdmUocGJ1ZmZlcikpCisgICAgLCBtX2NhaXJvRGV2aWNlKG51bGxwdHIpCiB7CiB9
CiAKLUdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKEdMWENvbnRleHQgY29udGV4dCwgUGl4bWFw
IHBpeG1hcCwgR0xYUGl4bWFwIGdseFBpeG1hcCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQor
R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBY
VW5pcXVlUGl4bWFwJiYgcGl4bWFwLCBYVW5pcXVlR0xYUGl4bWFwJiYgZ2x4UGl4bWFwKQorICAg
IDogbV9jb250ZXh0KFdURjo6bW92ZShjb250ZXh0KSkKICAgICAsIG1fd2luZG93KDApCi0gICAg
LCBtX3BidWZmZXIoMCkKLSAgICAsIG1fcGl4bWFwKHBpeG1hcCkKLSAgICAsIG1fZ2x4UGl4bWFw
KGdseFBpeG1hcCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKKyAgICAsIG1fcGl4bWFwKFdURjo6
bW92ZShwaXhtYXApKQorICAgICwgbV9nbHhQaXhtYXAoV1RGOjptb3ZlKGdseFBpeG1hcCkpCisg
ICAgLCBtX2NhaXJvRGV2aWNlKG51bGxwdHIpCiB7CiB9CiAKQEAgLTE4OSwyNiArMTY4LDEyIEBA
IEdMQ29udGV4dEdMWDo6fkdMQ29udGV4dEdMWCgpCiAgICAgaWYgKG1fY2Fpcm9EZXZpY2UpCiAg
ICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95KG1fY2Fpcm9EZXZpY2UpOwogCi0gICAgRGlzcGxh
eSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAg
ICAgLy8gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZXZlbnQgY3Jhc2hlcyB3aXRoIE5WaWRp
YSdzIGNsb3NlZCBzb3VyY2UgZHJpdmVycy4gT3JpZ2luYWxseQogICAgICAgICAvLyBmcm9tIE1v
emlsbGEncyAzRCBjYW52YXMgaW1wbGVtZW50YXRpb24gYXQ6IGh0dHA6Ly9iaXRidWNrZXQub3Jn
L2lsbWFyaS9jYW52YXMzZC8KKyAgICAgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpOwogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIDAp
OwogICAgICAgICBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBOb25lLCBOb25lKTsKLSAgICAgICAg
Z2xYRGVzdHJveUNvbnRleHQoZGlzcGxheSwgbV9jb250ZXh0KTsKLSAgICB9Ci0KLSAgICBpZiAo
bV9wYnVmZmVyKSB7Ci0gICAgICAgIGdsWERlc3Ryb3lQYnVmZmVyKGRpc3BsYXksIG1fcGJ1ZmZl
cik7Ci0gICAgICAgIG1fcGJ1ZmZlciA9IDA7Ci0gICAgfQotICAgIGlmIChtX2dseFBpeG1hcCkg
ewotICAgICAgICBnbFhEZXN0cm95R0xYUGl4bWFwKGRpc3BsYXksIG1fZ2x4UGl4bWFwKTsKLSAg
ICAgICAgbV9nbHhQaXhtYXAgPSAwOwotICAgIH0KLSAgICBpZiAobV9waXhtYXApIHsKLSAgICAg
ICAgWEZyZWVQaXhtYXAoZGlzcGxheSwgbV9waXhtYXApOwotICAgICAgICBtX3BpeG1hcCA9IDA7
CiAgICAgfQogfQogCkBAIC0yMzcsMTcgKzIwMiwxNyBAQCBib29sIEdMQ29udGV4dEdMWDo6bWFr
ZUNvbnRleHRDdXJyZW50KCkKICAgICBBU1NFUlQobV9jb250ZXh0ICYmIChtX3dpbmRvdyB8fCBt
X3BidWZmZXIgfHwgbV9nbHhQaXhtYXApKTsKIAogICAgIEdMQ29udGV4dDo6bWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0gICAgaWYgKGdsWEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0KQor
ICAgIGlmIChnbFhHZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dC5nZXQoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7
CiAgICAgaWYgKG1fd2luZG93KQotICAgICAgICByZXR1cm4gZ2xYTWFrZUN1cnJlbnQoZGlzcGxh
eSwgbV93aW5kb3csIG1fY29udGV4dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChk
aXNwbGF5LCBtX3dpbmRvdywgbV9jb250ZXh0LmdldCgpKTsKIAogICAgIGlmIChtX3BidWZmZXIp
Ci0gICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3BidWZmZXIsIG1fY29u
dGV4dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3BidWZmZXIu
Z2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiAKLSAgICByZXR1cm4gOjpnbFhNYWtlQ3VycmVudChk
aXNwbGF5LCBtX2dseFBpeG1hcCwgbV9jb250ZXh0KTsKKyAgICByZXR1cm4gOjpnbFhNYWtlQ3Vy
cmVudChkaXNwbGF5LCBtX2dseFBpeG1hcC5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKIH0KIAog
dm9pZCBHTENvbnRleHRHTFg6OnN3YXBCdWZmZXJzKCkKQEAgLTI2Nyw3ICsyMzIsNyBAQCBjYWly
b19kZXZpY2VfdCogR0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSgpCiAgICAgICAgIHJldHVybiBt
X2NhaXJvRGV2aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBt
X2NhaXJvRGV2aWNlID0gY2Fpcm9fZ2x4X2RldmljZV9jcmVhdGUoZG93bmNhc3Q8UGxhdGZvcm1E
aXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIG1f
Y29udGV4dCk7CisgICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2dseF9kZXZpY2VfY3JlYXRlKGRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkpLm5hdGl2ZSgpLCBtX2NvbnRleHQuZ2V0KCkpOwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9j
YWlyb0RldmljZTsKQEAgLTI3Niw3ICsyNDEsNyBAQCBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0
R0xYOjpjYWlyb0RldmljZSgpCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCiBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEdMWDo6cGxhdGZvcm1Db250ZXh0KCkKIHsK
LSAgICByZXR1cm4gbV9jb250ZXh0OworICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4
L0dMQ29udGV4dEdMWC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dM
Q29udGV4dEdMWC5oCmluZGV4IDY5MzRmMjQuLjQwMjNiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKQEAgLTIzLDEyICsy
Myw5IEBACiAjaWYgVVNFKEdMWCkKIAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgorI2luY2x1ZGUg
IlhVbmlxdWUuaCIKIAotdHlwZWRlZiBzdHJ1Y3QgX19HTFhjb250ZXh0UmVjKiBHTFhDb250ZXh0
OwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdMWFBidWZmZXI7Ci10eXBlZGVmIHVuc2lnbmVkIGxv
bmcgR0xYUGl4bWFwOwogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIEdMdWJ5dGU7Ci10eXBlZGVmIHVu
c2lnbmVkIGxvbmcgUGl4bWFwOwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJRDsKIHR5cGVkZWYg
dm9pZCogQ29udGV4dEtleVR5cGU7CiAKQEAgLTQwLDggKzM3LDkgQEAgcHVibGljOgogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVDb250ZXh0KFhJRCB3aW5k
b3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBjcmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4
dCogc2hhcmluZ0NvbnRleHQpOwogCi0gICAgR0xDb250ZXh0R0xYKEdMWENvbnRleHQpOwotICAg
IEdMQ29udGV4dEdMWChHTFhDb250ZXh0LCBQaXhtYXAsIEdMWFBpeG1hcCk7CisgICAgR0xDb250
ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYsIFhJRCk7CisgICAgR0xDb250ZXh0R0xYKFhVbmlx
dWVHTFhDb250ZXh0JiYsIFhVbmlxdWVHTFhQYnVmZmVyJiYpOworICAgIEdMQ29udGV4dEdMWChY
VW5pcXVlR0xYQ29udGV4dCYmLCBYVW5pcXVlUGl4bWFwJiYsIFhVbmlxdWVHTFhQaXhtYXAmJik7
CiAgICAgdmlydHVhbCB+R0xDb250ZXh0R0xYKCk7CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpOwpAQCAtNTksMTEg
KzU3LDExIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRH
TFg+IGNyZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQaXhtYXBDb250ZXh0
KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogCi0gICAgR0xYQ29udGV4dCBtX2NvbnRleHQ7
CisgICAgWFVuaXF1ZUdMWENvbnRleHQgbV9jb250ZXh0OwogICAgIFhJRCBtX3dpbmRvdzsKLSAg
ICBHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKLSAgICBQaXhtYXAgbV9waXhtYXA7Ci0gICAgR0xYUGl4
bWFwIG1fZ2x4UGl4bWFwOworICAgIFhVbmlxdWVHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKKyAgICBY
VW5pcXVlUGl4bWFwIG1fcGl4bWFwOworICAgIFhVbmlxdWVHTFhQaXhtYXAgbV9nbHhQaXhtYXA7
CiAgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhT
dXJmYWNlLmNwcAppbmRleCA2MThmZGMzLi5kNGUzNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFj
ZS5jcHAKQEAgLTE0MSw3ICsxNDEsNiBAQCB2b2lkIEVHTFBpeG1hcFN1cmZhY2U6OmRlc3Ryb3ko
KQogCiBFR0xYVHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGll
bnQoY29uc3QgUGxhdGZvcm1CdWZmZXJIYW5kbGUgaGFuZGxlLCBjb25zdCBJbnRTaXplJiBzaXpl
LCBib29sIGhhc0FscGhhKQogICAgIDogR0xUcmFuc3BvcnRTdXJmYWNlQ2xpZW50KCkKLSAgICAs
IG1faW1hZ2UoMCkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV90b3RhbEJ5dGVzKDApCiB7
CkBAIC0xOTcsMTEgKzE5Niw3IEBAIHZvaWQgRUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OmRl
c3Ryb3koKQogICAgIH0KIAogICAgIGVnbFdhaXRHTCgpOwotCi0gICAgaWYgKG1faW1hZ2UpIHsK
LSAgICAgICAgWERlc3Ryb3lJbWFnZShtX2ltYWdlKTsKLSAgICAgICAgbV9pbWFnZSA9IDA7Ci0g
ICAgfQorICAgIG1faW1hZ2UucmVzZXQoKTsKIH0KIAogdm9pZCBFR0xYVHJhbnNwb3J0U3VyZmFj
ZUNsaWVudDo6cHJlcGFyZVRleHR1cmUoKQpAQCAtMjE0LDcgKzIwOSw3IEBAIHZvaWQgRUdMWFRy
YW5zcG9ydFN1cmZhY2VDbGllbnQ6OnByZXBhcmVUZXh0dXJlKCkKICAgICB9CiAKICAgICAvLyBG
YWxsYmFjayB0byB1c2UgWEltYWdlIGluIGNhc2UgRUdMSW1hZ2UgYW5kIFRleHR1cmVUb1BpeG1h
cCBhcmUgbm90IHN1cHBvcnRlZC4KLSAgICBtX2ltYWdlID0gWEdldEltYWdlKE5hdGl2ZVdyYXBw
ZXI6Om5hdGl2ZURpc3BsYXkoKSwgbV9oYW5kbGUsIDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3Np
emUuaGVpZ2h0KCksIEFsbFBsYW5lcywgWlBpeG1hcCk7CisgICAgbV9pbWFnZS5yZXNldChYR2V0
SW1hZ2UoTmF0aXZlV3JhcHBlcjo6bmF0aXZlRGlzcGxheSgpLCBtX2hhbmRsZSwgMCwgMCwgbV9z
aXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgQWxsUGxhbmVzLCBaUGl4bWFwKSk7CiAKICNp
ZiBVU0UoT1BFTkdMX0VTXzIpCiAgICAgaWYgKG1fZm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpCR1JBKSB7CkBAIC0yMjUsMTAgKzIyMCw3IEBAIHZvaWQgRUdMWFRyYW5zcG9ydFN1cmZhY2VD
bGllbnQ6OnByZXBhcmVUZXh0dXJlKCkKIAogICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBtX2Zvcm1hdCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgMCwgbV9mb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIG1faW1hZ2UtPmRhdGEpOwogCi0gICAgaWYgKG1faW1hZ2Up
IHsKLSAgICAgICAgWERlc3Ryb3lJbWFnZShtX2ltYWdlKTsKLSAgICAgICAgbV9pbWFnZSA9IDA7
Ci0gICAgfQorICAgIG1faW1hZ2UucmVzZXQoKTsKIH0KIAogRUdMVGV4dHVyZUZyb21QaXhtYXA6
OkVHTFRleHR1cmVGcm9tUGl4bWFwKGNvbnN0IE5hdGl2ZVBpeG1hcCBoYW5kbGUsIGJvb2wgaGFz
QWxwaGEsIEVHTENvbmZpZyBjb25maWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCmluZGV4IDk2Yzhh
NjYuLjI0Y2Y4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aWYgUExBVEZPUk0oWDExKSAmJiBVU0UoRUdMKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIAog
I2luY2x1ZGUgIkVHTFN1cmZhY2UuaCIKKyNpbmNsdWRlICJYVW5pcXVlLmgiCiAjaW5jbHVkZSA8
Z2x4L1gxMUhlbHBlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NCw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgotICAgIFhJbWFnZSogbV9pbWFnZTsKKyAgICBYVW5pcXVlPFhJbWFnZT4gbV9pbWFnZTsKICAg
ICBJbnRTaXplIG1fc2l6ZTsKICAgICBQbGF0Zm9ybUJ1ZmZlckhhbmRsZSBtX2hhbmRsZTsKICAg
ICBHTHVpbnQgbV9mb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCmluZGV4
IDVjZGVkZTUuLjdmZGNkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKEdMWCkKIAogI2luY2x1ZGUgIlgxMUhlbHBlci5oIgor
I2luY2x1ZGUgIlhVbmlxdWUuaCIKICNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+CiAjaW5jbHVk
ZSA8b3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmg+CiAKQEAgLTE0MCwxMyArMTQxLDEzIEBAIHBy
aXZhdGU6CiAgICAgR0xYRkJDb25maWcgZmluZE1hdGNoaW5nQ29uZmlnKGNvbnN0IGludCBhdHRy
aWJ1dGVzW10sIGludCBkZXB0aCA9IDMyKQogICAgIHsKICAgICAgICAgaW50IG51bUF2YWlsYWJs
ZUNvbmZpZ3M7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHTFhGQkNvbmZpZ1tdLCBYMTFEZWxl
dGVyPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCBE
ZWZhdWx0U2NyZWVuKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpKSwgYXR0cmlidXRlcywgJm51
bUF2YWlsYWJsZUNvbmZpZ3MpKTsKKyAgICAgICAgWFVuaXF1ZVB0cjxHTFhGQkNvbmZpZz4gdGVt
cChnbFhDaG9vc2VGQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgRGVmYXVsdFNj
cmVlbihYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFi
bGVDb25maWdzKSk7CiAKICAgICAgICAgaWYgKCFudW1BdmFpbGFibGVDb25maWdzIHx8ICF0ZW1w
LmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1BdmFpbGFibGVDb25maWdzOyArK2kpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gc2NvcGVkVmlzdWFsSW5mbyB7IGdsWEdldFZp
c3VhbEZyb21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgdGVtcFtpXSkgfTsK
KyAgICAgICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHNjb3BlZFZpc3VhbEluZm8geyBn
bFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXBb
aV0pIH07CiAgICAgICAgICAgICBpZiAoIXNjb3BlZFZpc3VhbEluZm8uZ2V0KCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKQEAgLTE2OCw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAKICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIGFueSB2aXN1YWwgc3VwcG9ydGluZyBhbHBo
YSwgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUgY29uZmlnLgotICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8WFZpc3VhbEluZm8sIFgxMURlbGV0ZXI+IHNjb3BlZFZpc3VhbEluZm8geyBnbFhHZXRW
aXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXBbMF0pIH07
CisgICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHNjb3BlZFZpc3VhbEluZm8geyBnbFhH
ZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXBbMF0p
IH07CiAKICAgICAgICAgaWYgKChtX2F0dHJpYnV0ZXMgJiBHTFBsYXRmb3JtU3VyZmFjZTo6U3Vw
cG9ydEFscGhhKSAmJiAoc2NvcGVkVmlzdWFsSW5mby0+ZGVwdGggIT0gMzIpKQogICAgICAgICAg
ICAgbV9hdHRyaWJ1dGVzICY9IH5HTFBsYXRmb3JtU3VyZmFjZTo6U3VwcG9ydEFscGhhOwpAQCAt
MTc5LDEzICsxODAsMTMgQEAgcHJpdmF0ZToKICAgICBHTFhGQkNvbmZpZyBmaW5kTWF0Y2hpbmdD
b25maWdXaXRoVmlzdWFsSWQoY29uc3QgaW50IGF0dHJpYnV0ZXNbXSwgaW50IGRlcHRoLCBWaXN1
YWxJRCBpZCkKICAgICB7CiAgICAgICAgIGludCBudW1BdmFpbGFibGVDb25maWdzOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R0xYRkJDb25maWdbXSwgWDExRGVsZXRlcj4gdGVtcChnbFhDaG9v
c2VGQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgRGVmYXVsdFNjcmVlbihYMTFI
ZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVDb25maWdz
KSk7CisgICAgICAgIFhVbmlxdWVQdHI8R0xYRkJDb25maWc+IHRlbXAoZ2xYQ2hvb3NlRkJDb25m
aWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIERlZmF1bHRTY3JlZW4oWDExSGVscGVyOjpu
YXRpdmVEaXNwbGF5KCkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncykpOwogCiAg
ICAgICAgIGlmICghbnVtQXZhaWxhYmxlQ29uZmlncyB8fCAhdGVtcC5nZXQoKSkKICAgICAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXZhaWxhYmxl
Q29uZmlnczsgKytpKSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8WFZpc3VhbEluZm8s
IFgxMURlbGV0ZXI+IHNjb3BlZFZpc3VhbEluZm8geyBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWco
WDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXBbaV0pIH07CisgICAgICAgICAgICBYVW5p
cXVlUHRyPFhWaXN1YWxJbmZvPiBzY29wZWRWaXN1YWxJbmZvIHsgZ2xYR2V0VmlzdWFsRnJvbUZC
Q29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCB0ZW1wW2ldKSB9OwogICAgICAgICAg
ICAgaWYgKCFzY29wZWRWaXN1YWxJbmZvLmdldCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9nbHgvR0xYU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAKaW5kZXggYmE0OTNiMC4uNzBlZWFjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1
cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2dseC9HTFhTdXJmYWNlLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgVVNFKEdMWCkKIAor
I2luY2x1ZGUgIlhVbmlxdWUuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgUEZO
R0xYQklORFRFWElNQUdFRVhUUFJPQyBwR2xYQmluZFRleEltYWdlRVhUID0gMDsKQEAgLTY2LDcg
KzY4LDcgQEAgR0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0U3VyZmFjZShjb25zdCBJ
bnRTaXplJiBzaXplLCBTdXJmYWNlQXR0cmlidXRlcwogewogICAgIGF0dHJpYnV0ZXMgfD0gR0xQ
bGF0Zm9ybVN1cmZhY2U6OkRvdWJsZUJ1ZmZlcmVkOwogICAgIG1fY29uZmlnU2VsZWN0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPEdMWENvbmZpZ1NlbGVjdG9yPihhdHRyaWJ1dGVzKTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8WFZpc3VhbEluZm8sIFgxMURlbGV0ZXI+IHZpc0luZm8obV9jb25maWdTZWxl
Y3Rvci0+dmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT5zdXJmYWNlQ29udGV4dENvbmZpZygp
KSk7CisgICAgWFVuaXF1ZTxYVmlzdWFsSW5mbz4gdmlzSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT52
aXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnN1cmZhY2VDb250ZXh0Q29uZmlnKCkpKTsKIAog
ICAgIGlmICghdmlzSW5mby5nZXQoKSkgewogICAgICAgICBkZXN0cm95KCk7CkBAIC0xNDIsNyAr
MTQ0LDcgQEAgdm9pZCBHTFhPZmZTY3JlZW5TdXJmYWNlOjppbml0aWFsaXplKFN1cmZhY2VBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMpCiB7CiAgICAgbV9jb25maWdTZWxlY3RvciA9IHN0ZDo6bWFrZV91
bmlxdWU8R0xYQ29uZmlnU2VsZWN0b3I+KGF0dHJpYnV0ZXMpOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiB2aXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0b3It
PnZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rvci0+cGl4bWFwQ29udGV4dENvbmZpZygpKSk7Cisg
ICAgWFVuaXF1ZTxYVmlzdWFsSW5mbz4gdmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT52aXN1
YWxJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnBpeG1hcENvbnRleHRDb25maWcoKSkpOwogICAgIFgx
MUhlbHBlcjo6Y3JlYXRlUGl4bWFwKCZtX3BpeG1hcCwgKnZpc3VhbEluZm8uZ2V0KCkpOwogCiAg
ICAgaWYgKCFtX3BpeG1hcCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmNwcAppbmRleCA4MDEwYjU3Li4z
NjhiYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9nbHgvWDExSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIlgxMUhlbHBlci5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5WDExLmgiCisjaW5j
bHVkZSAiWFVuaXF1ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIyMyw3ICsyMjQs
NyBAQCB2b2lkIFgxMUhlbHBlcjo6Y3JlYXRlT2ZmU2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5k
bGVJZCwgY29uc3QgRUdMaW50IGlkLCBib29sCiAgICAgbWVtc2V0KCZ2aXN1YWxJbmZvVGVtcGxh
dGUsIDAsIHNpemVvZihYVmlzdWFsSW5mbykpOwogICAgIHZpc3VhbEluZm9UZW1wbGF0ZS52aXN1
YWxpZCA9IHZpc3VhbElkOwogICAgIGludCBtYXRjaGluZ0NvdW50ID0gMDsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8WFZpc3VhbEluZm8sIFgxMURlbGV0ZXI+IG1hdGNoaW5nVmlzdWFscyhYR2V0Vmlz
dWFsSW5mbyhuYXRpdmVEaXNwbGF5KCksIFZpc3VhbElETWFzaywgJnZpc3VhbEluZm9UZW1wbGF0
ZSwgJm1hdGNoaW5nQ291bnQpKTsKKyAgICBYVW5pcXVlPFhWaXN1YWxJbmZvPiBtYXRjaGluZ1Zp
c3VhbHMoWEdldFZpc3VhbEluZm8obmF0aXZlRGlzcGxheSgpLCBWaXN1YWxJRE1hc2ssICZ2aXN1
YWxJbmZvVGVtcGxhdGUsICZtYXRjaGluZ0NvdW50KSk7CiAgICAgWFZpc3VhbEluZm8qIGZvdW5k
VmlzdWFsID0gMDsKIAogICAgIGlmIChtYXRjaGluZ1Zpc3VhbHMpIHsKQEAgLTI2MCw3ICsyNjEs
NyBAQCB2b2lkIFgxMUhlbHBlcjo6Y3JlYXRlUGl4bWFwKFBpeG1hcCogaGFuZGxlSWQsIGNvbnN0
IEVHTGludCBpZCwgYm9vbCBoYXNBbHBoYSwgYwogICAgIG1lbXNldCgmdmlzdWFsSW5mb1RlbXBs
YXRlLCAwLCBzaXplb2YoWFZpc3VhbEluZm8pKTsKICAgICB2aXN1YWxJbmZvVGVtcGxhdGUudmlz
dWFsaWQgPSB2aXN1YWxJZDsKICAgICBpbnQgbWF0Y2hpbmdDb3VudCA9IDA7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiBtYXRjaGluZ1Zpc3VhbHMoWEdldFZp
c3VhbEluZm8obmF0aXZlRGlzcGxheSgpLCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZvVGVtcGxh
dGUsICZtYXRjaGluZ0NvdW50KSk7CisgICAgWFVuaXF1ZTxYVmlzdWFsSW5mbz4gbWF0Y2hpbmdW
aXN1YWxzKFhHZXRWaXN1YWxJbmZvKG5hdGl2ZURpc3BsYXkoKSwgVmlzdWFsSURNYXNrLCAmdmlz
dWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCkpOwogICAgIFhWaXN1YWxJbmZvKiBmb3Vu
ZFZpc3VhbCA9IDA7CiAgICAgaW50IHJlcXVpcmVkRGVwdGggPSBoYXNBbHBoYSA/IDMyIDogMjQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2dseC9YMTFIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL2dseC9YMTFIZWxwZXIuaAppbmRleCAxMDNmMDAxLi43ZjVlNGMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhl
bHBlci5oCkBAIC00MiwxNSArNDIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFgxMURlbGV0ZXIgewotcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgb3Bl
cmF0b3IoKShUKiByZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIGlmIChyZXNvdXJjZSkKLSAgICAg
ICAgICAgIFhGcmVlKHJlc291cmNlKTsKLSAgICB9Ci19OwotCiBjbGFzcyBYMTFIZWxwZXIgewog
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVBpeG1hcChQaXhtYXAqLCBjb25zdCBYVmlz
dWFsSW5mbyYsIGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgxLCAxKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMWJlMzQyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlLmNwcApAQCAtMCwwICsxLDc5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiWFVuaXF1ZS5oIgorCisjaWYgUExBVEZPUk0oWDExKQorI2luY2x1
ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgorCisj
aWYgVVNFKEdMWCkKKyNpbmNsdWRlIDxHTC9nbHguaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3RlbXBsYXRlPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpDb2xv
cm1hcD46OmRlbGV0ZVhSZXNvdXJjZShsb25nIHVuc2lnbmVkIHJlc291cmNlKQoreworICAgIGlm
IChyZXNvdXJjZSkKKyAgICAgICAgWEZyZWVDb2xvcm1hcChkb3duY2FzdDxQbGF0Zm9ybURpc3Bs
YXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgcmVzb3Vy
Y2UpOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OkRh
bWFnZT46OmRlbGV0ZVhSZXNvdXJjZShsb25nIHVuc2lnbmVkIHJlc291cmNlKQoreworICAgIGlm
IChyZXNvdXJjZSkKKyAgICAgICAgWERhbWFnZURlc3Ryb3koZG93bmNhc3Q8UGxhdGZvcm1EaXNw
bGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIHJlc291
cmNlKTsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpQ
aXhtYXA+OjpkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKK3sKKyAgICBp
ZiAocmVzb3VyY2UpCisgICAgICAgIFhGcmVlUGl4bWFwKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxh
eVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCByZXNvdXJj
ZSk7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6V2lu
ZG93Pjo6ZGVsZXRlWFJlc291cmNlKGxvbmcgdW5zaWduZWQgcmVzb3VyY2UpCit7CisgICAgaWYg
KHJlc291cmNlKQorICAgICAgICBYRGVzdHJveVdpbmRvdyhkb3duY2FzdDxQbGF0Zm9ybURpc3Bs
YXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgcmVzb3Vy
Y2UpOworfQorCisjaWYgVVNFKEdMWCkKK3RlbXBsYXRlPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8
WFJlc291cmNlOjpHTFhQYnVmZmVyPjo6ZGVsZXRlWFJlc291cmNlKGxvbmcgdW5zaWduZWQgcmVz
b3VyY2UpCit7CisgICAgaWYgKHJlc291cmNlKQorICAgICAgICBnbFhEZXN0cm95UGJ1ZmZlcihk
b3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eSgpKS5uYXRpdmUoKSwgcmVzb3VyY2UpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgWFVuaXF1ZVJl
c291cmNlPFhSZXNvdXJjZTo6R0xYUGl4bWFwPjo6ZGVsZXRlWFJlc291cmNlKGxvbmcgdW5zaWdu
ZWQgcmVzb3VyY2UpCit7CisgICAgaWYgKHJlc291cmNlKQorICAgICAgICBnbFhEZXN0cm95R0xY
UGl4bWFwKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFy
ZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCByZXNvdXJjZSk7Cit9CisjZW5kaWYgLy8gVVNFKEdMWCkK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUExBVEZPUk0oWDExKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY5YTVhZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlLmgKQEAgLTAsMCArMSwx
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTAorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
WFVuaXF1ZV9oCisjZGVmaW5lIFhVbmlxdWVfaAorCisjaWYgUExBVEZPUk0oWDExKQorI2luY2x1
ZGUgIlBsYXRmb3JtRGlzcGxheVgxMS5oIgorI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgorCisjaWYg
VVNFKEdMWCkKK3R5cGVkZWYgc3RydWN0IF9fR0xYY29udGV4dFJlYyogR0xYQ29udGV4dDsKK3R5
cGVkZWYgdW5zaWduZWQgbG9uZyBHTFhQYnVmZmVyOwordHlwZWRlZiB1bnNpZ25lZCBsb25nIEdM
WFBpeG1hcDsKKworZXh0ZXJuICJDIiB2b2lkIGdsWERlc3Ryb3lDb250ZXh0KERpc3BsYXkqLCBH
TFhDb250ZXh0KTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+CitzdHJ1Y3QgWFB0ckRlbGV0ZXIgeworICAgIHZvaWQgb3BlcmF0b3IoKShUKiBw
dHIpIGNvbnN0IHsgWEZyZWUocHRyKTsgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3Vz
aW5nIFhVbmlxdWVQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VCwgWFB0ckRlbGV0ZXI8VD4+OworCisj
ZGVmaW5lIERFRklORV9YUFRSX0RFTEVURVIodHlwZU5hbWUsIGRlbGV0ZXJGdW5jKSBcCisgICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgWFB0ckRlbGV0ZXI8dHlwZU5hbWU+IFwKKyAgICB7IFwKKyAgICAg
ICAgdm9pZCBvcGVyYXRvcigpICh0eXBlTmFtZSogcHRyKSBjb25zdCBcCisgICAgICAgIHsgXAor
ICAgICAgICAgICAgaWYgKHB0cikgXAorICAgICAgICAgICAgICAgIGRlbGV0ZXJGdW5jKHB0cik7
IFwKKyAgICAgICAgfSBcCisgICAgfTsKKworI2RlZmluZSBERUZJTkVfWFBUUl9ERUxFVEVSX1dJ
VEhfRElTUExBWSh0eXBlTmFtZSwgZGVsZXRlckZ1bmMpIFwKKyAgICB0ZW1wbGF0ZTw+IHN0cnVj
dCBYUHRyRGVsZXRlcjx0eXBlTmFtZT4gXAorICAgIHsgXAorICAgICAgICB2b2lkIG9wZXJhdG9y
KCkgKHR5cGVOYW1lKiBwdHIpIGNvbnN0IFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBpZiAo
cHRyKSBcCisgICAgICAgICAgICAgICAgZGVsZXRlckZ1bmMoZG93bmNhc3Q8UGxhdGZvcm1EaXNw
bGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIHB0cik7
IFwKKyAgICAgICAgfSBcCisgICAgfTsKKworCitERUZJTkVfWFBUUl9ERUxFVEVSKFhJbWFnZSwg
WERlc3Ryb3lJbWFnZSkKK0RFRklORV9YUFRSX0RFTEVURVJfV0lUSF9ESVNQTEFZKF9YR0MsIFhG
cmVlR0MpCisKKyNpZiBVU0UoR0xYKQorREVGSU5FX1hQVFJfREVMRVRFUl9XSVRIX0RJU1BMQVko
X19HTFhjb250ZXh0UmVjLCBnbFhEZXN0cm95Q29udGV4dCkKKyNlbmRpZgorCisjdW5kZWYgREVG
SU5FX1hQVFJfREVMRVRFUgorI3VuZGVmIERFRklORV9YUFRSX0RFTEVURVJfV0lUSF9ESVNQTEFZ
CisKK2VudW0gY2xhc3MgWFJlc291cmNlIHsKKyAgICBDb2xvcm1hcCwKKyAgICBEYW1hZ2UsCisg
ICAgUGl4bWFwLAorICAgIFdpbmRvdywKKyNpZiBVU0UoR0xYKQorICAgIEdMWFBidWZmZXIsCisg
ICAgR0xYUGl4bWFwLAorI2VuZGlmCit9OworCit0ZW1wbGF0ZSA8WFJlc291cmNlIFQ+IGNsYXNz
IFhVbmlxdWVSZXNvdXJjZSB7CitwdWJsaWM6CisgICAgWFVuaXF1ZVJlc291cmNlKCkKKyAgICAg
ICAgOiBtX3Jlc291cmNlKDApCisgICAgeworICAgIH0KKworICAgIFhVbmlxdWVSZXNvdXJjZShs
b25nIHVuc2lnbmVkIHJlc291cmNlKQorICAgICAgICA6IG1fcmVzb3VyY2UocmVzb3VyY2UpCisg
ICAgeworICAgIH0KKworICAgIFhVbmlxdWVSZXNvdXJjZShYVW5pcXVlUmVzb3VyY2UmJiB1bmlx
dWVSZXNvdXJjZSkKKyAgICAgICAgOiBtX3Jlc291cmNlKHVuaXF1ZVJlc291cmNlLnJlbGVhc2Uo
KSkKKyAgICB7CisgICAgfQorCisgICAgWFVuaXF1ZVJlc291cmNlJiBvcGVyYXRvcj0oWFVuaXF1
ZVJlc291cmNlJiYgdW5pcXVlUmVzb3VyY2UpCisgICAgeworICAgICAgICByZXNldCh1bmlxdWVS
ZXNvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAg
flhVbmlxdWVSZXNvdXJjZSgpCisgICAgeworICAgICAgICByZXNldCgpOworICAgIH0KKworICAg
IGxvbmcgdW5zaWduZWQgZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZTsgfQorICAgIGxv
bmcgdW5zaWduZWQgcmVsZWFzZSgpIHsgbG9uZyB1bnNpZ25lZCByZXNvdXJjZSA9IG1fcmVzb3Vy
Y2U7IG1fcmVzb3VyY2UgPSAwOyByZXR1cm4gcmVzb3VyY2U7IH0KKworICAgIHZvaWQgcmVzZXQo
bG9uZyB1bnNpZ25lZCByZXNvdXJjZSA9IDApCisgICAgeworICAgICAgICBzdGQ6OnN3YXAobV9y
ZXNvdXJjZSwgcmVzb3VyY2UpOworICAgICAgICBkZWxldGVYUmVzb3VyY2UocmVzb3VyY2UpOwor
ICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcmVzb3VyY2U7
IH0KKworICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29u
dmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0eXBl
ZGVmIHZvaWQqIChYVW5pcXVlUmVzb3VyY2U6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKKyAgICBv
cGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9yZXNvdXJjZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZpZWRCb29sVHlwZSo+KDEp
IDogMDsKKyAgICB9CisKKyAgICBYVW5pcXVlUmVzb3VyY2UoY29uc3QgWFVuaXF1ZVJlc291cmNl
JikgPSBkZWxldGU7CisgICAgWFVuaXF1ZVJlc291cmNlJiBvcGVyYXRvcj0oY29uc3QgWFVuaXF1
ZVJlc291cmNlJikgPSBkZWxldGU7Citwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGRlbGV0ZVhS
ZXNvdXJjZShsb25nIHVuc2lnbmVkIHJlc291cmNlKTsKKworICAgIGxvbmcgdW5zaWduZWQgbV9y
ZXNvdXJjZTsKK307CisKK3R5cGVkZWYgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6Q29sb3Jt
YXA+IFhVbmlxdWVDb2xvcm1hcDsKK3R5cGVkZWYgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6
RGFtYWdlPiBYVW5pcXVlRGFtYWdlOwordHlwZWRlZiBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNl
OjpQaXhtYXA+IFhVbmlxdWVQaXhtYXA7Cit0eXBlZGVmIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3Vy
Y2U6OldpbmRvdz4gWFVuaXF1ZVdpbmRvdzsKKyNpZiBVU0UoR0xYKQordHlwZWRlZiBYVW5pcXVl
UmVzb3VyY2U8WFJlc291cmNlOjpHTFhQYnVmZmVyPiBYVW5pcXVlR0xYUGJ1ZmZlcjsKK3R5cGVk
ZWYgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGl4bWFwPiBYVW5pcXVlR0xYUGl4bWFw
OworI2VuZGlmCisKKy8vIEdpdmUgYSBuYW1lIGFsc28gdG8gdGhlc2UgWFVuaXF1ZVB0ciB0byBh
dm9pZCBoYXZpbmcgdG8gdXNlIHRoZSBpbnRlcm5hbCBzdHJ1Y3QgbmFtZXMgKF9YR0MsIF9fR0xY
Y29udGV4dFJlYywgLi4uKS4KK3R5cGVkZWYgWFVuaXF1ZVB0cjxfWEdDPiBYVW5pcXVlR0M7Cisj
aWYgVVNFKEdMWCkKK3R5cGVkZWYgWFVuaXF1ZVB0cjxfX0dMWGNvbnRleHRSZWM+IFhVbmlxdWVH
TFhDb250ZXh0OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFBMQVRGT1JNKFgxMSkKKworI2VuZGlmIC8vIFhVbmlxdWVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI3MTkz
NzMuLjU5OTFhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNS0wNS0wMiAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1gxMV0g
QWRkIFhVbmlxdWVQdHIgYW5kIFhVbmlxdWVSZXNvdXJjZSB0byBhdXRvbWF0aWNhbGx5IGZyZWUg
WCByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0NDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8gZnJlZSBYIHJlc291cmNl
cy4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBBZGQgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MveDExIGRpcgorICAgICAgICB0byB0aGUgaW5jbHVkZSBkaXIgbGlzdC4K
KyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0
b3JlOjpjcmVhdGVCYWNrZW5kKTogRG8gbm90IHBhc3MgdGhlIGRpc3BsYXkgdG8KKyAgICAgICAg
dGhlIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93KToKKyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6On5SZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93OjpyZXNpemUpOgorICAgICAgICAoV2ViS2l0OjpSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdzo6Y2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6c3VyZmFjZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oOgorICAgICAgICAoV2ViS2l0
OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6d2luZG93SUQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZVdpbmRvd2xl
c3MpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1EZXN0cm95KToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludCk6CisK
IDIwMTUtMDUtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtTT1VQXSBOZXR3b3JrIENhY2hlOiBJbXBsZW1lbnQgU2hhcmVhYmxlUmVzb3Vy
Y2UgZm9yIFNvdXAgYW5kIGVuYWJsZSBpdCBmb3IgR1RLIHBsYXRmb3JtCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDVhMDJlYTIuLmVmZWZlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC0yMjYsNiArMjI2LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvIgogICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy94MTEiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsv
c291cCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC9lbmNoYW50IgogICAgICIk
e1dFQktJVDJfRElSfS9OZXR3b3JrUHJvY2Vzcy9lZmwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
CmluZGV4IGQyNzQwYjYuLmU0ODY4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC00
NTgsNiArNDU4LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2d0ayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy94MTEi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvc291cCIKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vdGV4dC9lbmNoYW50IgogICAgICIke1dFQktJVDJfRElSfS9EYXRh
YmFzZVByb2Nlc3MvdW5peCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9j
YWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Fp
cm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IGJkODBiMzcuLjJmYjMwYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNw
cApAQCAtNTQsNyArNTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2luZ1N0b3JlQmFja2VuZENh
aXJvPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQoKQogICAgICAgICBHZGtWaXN1YWwqIHZp
c3VhbCA9IGd0a193aWRnZXRfZ2V0X3Zpc3VhbChtX3dlYlBhZ2VQcm94eS52aWV3V2lkZ2V0KCkp
OwogICAgICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGdka192aXN1YWxfZ2V0X3NjcmVlbih2aXN1
YWwpOwogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihzaGFyZWRE
aXNwbGF5KS5uYXRpdmUoKSA9PSBHREtfU0NSRUVOX1hESVNQTEFZKHNjcmVlbikpOwotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE+KGRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oc2hhcmVkRGlzcGxheSkubmF0aXZlKCksIEdES19X
SU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikpLAorICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE+KEdES19X
SU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikpLAogICAgICAgICAg
ICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIGdka192aXN1YWxfZ2V0X2RlcHRoKHZpc3Vh
bCksIG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cuY3BwCmluZGV4IDQ0NGY4NjQuLjNmYmEzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJ
TkRPVykKIAorI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMv
WGNvbXBvc2l0ZS5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2UuaD4KICNpbmNs
dWRlIDxjYWlyby14bGliLmg+CkBAIC0xMzUsMjEgKzEzNiwxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojpj
cmVhdGUoRwogCiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3coR2RrV2luZG93KiBwYXJlbnRXaW5kb3csIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBk
YW1hZ2VOb3RpZnkpCiAgICAgOiBtX2Rpc3BsYXkoR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX3dp
bmRvd19nZXRfZGlzcGxheShwYXJlbnRXaW5kb3cpKSkKLSAgICAsIG1fd2luZG93KDApCi0gICAg
LCBtX3BhcmVudFdpbmRvdygwKQotICAgICwgbV9waXhtYXAoMCkKLSAgICAsIG1fZGFtYWdlKDAp
CiAgICAgLCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemUoZmFsc2UpCiB7CisgICAgQVNTRVJU
KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNw
bGF5KCkpLm5hdGl2ZSgpID09IG1fZGlzcGxheSk7CiAgICAgU2NyZWVuKiBzY3JlZW4gPSBEZWZh
dWx0U2NyZWVuT2ZEaXNwbGF5KG1fZGlzcGxheSk7CiAKICAgICBHZGtWaXN1YWwqIHZpc3VhbCA9
IGdka193aW5kb3dfZ2V0X3Zpc3VhbChwYXJlbnRXaW5kb3cpOwotICAgIENvbG9ybWFwIGNvbG9y
bWFwID0gWENyZWF0ZUNvbG9ybWFwKG1fZGlzcGxheSwgUm9vdFdpbmRvd09mU2NyZWVuKHNjcmVl
biksIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBBbGxvY05vbmUpOworICAgIFhVbmlxdWVD
b2xvcm1hcCBjb2xvcm1hcChYQ3JlYXRlQ29sb3JtYXAobV9kaXNwbGF5LCBSb290V2luZG93T2ZT
Y3JlZW4oc2NyZWVuKSwgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIEFsbG9jTm9uZSkpOwog
CiAgICAgLy8gVGhpcyBpcyBiYXNlZCBvbiBjb2RlIGZyb20gQ2hyb21pdW06IHNyYy9jb250ZW50
L2NvbW1vbi9ncHUvaW1hZ2VfdHJhbnNwb3J0X3N1cmZhY2VfbGludXguY2MKICAgICBYU2V0V2lu
ZG93QXR0cmlidXRlcyB3aW5kb3dBdHRyaWJ1dGVzOwogICAgIHdpbmRvd0F0dHJpYnV0ZXMub3Zl
cnJpZGVfcmVkaXJlY3QgPSBUcnVlOwotICAgIHdpbmRvd0F0dHJpYnV0ZXMuY29sb3JtYXAgPSBj
b2xvcm1hcDsKKyAgICB3aW5kb3dBdHRyaWJ1dGVzLmNvbG9ybWFwID0gY29sb3JtYXAuZ2V0KCk7
CiAKICAgICAvLyBDV0JvcmRlclBpeGVsIG11c3QgYmUgcHJlc2VudCB3aGVuIHRoZSBkZXB0aCBk
b2Vzbid0IG1hdGNoIHRoZSBwYXJlbnQncyBvbmUuCiAgICAgLy8gU2VlIGh0dHA6Ly9jZ2l0LmZy
ZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvdHJlZS9kaXgvd2luZG93LmM/aWQ9eG9yZy1zZXJ2
ZXItMS4xNi4wI243MDMuCkBAIC0xNjQsMTMgKzE2MiwxMyBAQCBSZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coR2RrV2luZG93KiBwYXJlbnRXaW5k
b3csCiAgICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLAogICAgICAgICBDV092ZXJy
aWRlUmVkaXJlY3QgfCBDV0NvbG9ybWFwIHwgQ1dCb3JkZXJQaXhlbCwKICAgICAgICAgJndpbmRv
d0F0dHJpYnV0ZXMpOwotICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3BhcmVudFdpbmRvdyk7
CisgICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fcGFyZW50V2luZG93LmdldCgpKTsKIAogICAg
IHdpbmRvd0F0dHJpYnV0ZXMuZXZlbnRfbWFzayA9IFN0cnVjdHVyZU5vdGlmeU1hc2s7CiAgICAg
d2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IEZhbHNlOwogICAgIC8vIENyZWF0
ZSB0aGUgd2luZG93IG9mIGF0IGxhc3QgMXgxIHNpbmNlIFggZG9lc24ndCBhbGxvdyB0byBjcmVh
dGUgZW1wdHkgd2luZG93cy4KICAgICBtX3dpbmRvdyA9IFhDcmVhdGVXaW5kb3cobV9kaXNwbGF5
LAotICAgICAgICBtX3BhcmVudFdpbmRvdywKKyAgICAgICAgbV9wYXJlbnRXaW5kb3cuZ2V0KCks
CiAgICAgICAgIDAsIDAsCiAgICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS53aWR0aCgpKSwKICAg
ICAgICAgc3RkOjptYXgoMSwgbV9zaXplLmhlaWdodCgpKSwKQEAgLTE4MCwyMSArMTc4LDE5IEBA
IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhH
ZGtXaW5kb3cqIHBhcmVudFdpbmRvdywKICAgICAgICAgQ29weUZyb21QYXJlbnQsCiAgICAgICAg
IENXRXZlbnRNYXNrLAogICAgICAgICAmd2luZG93QXR0cmlidXRlcyk7Ci0gICAgWE1hcFdpbmRv
dyhtX2Rpc3BsYXksIG1fd2luZG93KTsKKyAgICBYTWFwV2luZG93KG1fZGlzcGxheSwgbV93aW5k
b3cuZ2V0KCkpOwogCi0gICAgWEZyZWVDb2xvcm1hcChtX2Rpc3BsYXksIGNvbG9ybWFwKTsKLQot
ICAgIHhEYW1hZ2VOb3RpZmllcigpLmFkZChtX3dpbmRvdywgV1RGOjptb3ZlKGRhbWFnZU5vdGlm
eSkpOworICAgIHhEYW1hZ2VOb3RpZmllcigpLmFkZChtX3dpbmRvdy5nZXQoKSwgV1RGOjptb3Zl
KGRhbWFnZU5vdGlmeSkpOwogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgWEV2ZW50IGV2ZW50
OwotICAgICAgICBYV2luZG93RXZlbnQobV9kaXNwbGF5LCBtX3dpbmRvdywgU3RydWN0dXJlTm90
aWZ5TWFzaywgJmV2ZW50KTsKLSAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT0gTWFwTm90aWZ5ICYm
IGV2ZW50LnhtYXAud2luZG93ID09IG1fd2luZG93KQorICAgICAgICBYV2luZG93RXZlbnQobV9k
aXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgU3RydWN0dXJlTm90aWZ5TWFzaywgJmV2ZW50KTsKKyAg
ICAgICAgaWYgKGV2ZW50LnR5cGUgPT0gTWFwTm90aWZ5ICYmIGV2ZW50LnhtYXAud2luZG93ID09
IG1fd2luZG93LmdldCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIFhTZWxlY3RJ
bnB1dChtX2Rpc3BsYXksIG1fd2luZG93LCBOb0V2ZW50TWFzayk7Ci0gICAgWENvbXBvc2l0ZVJl
ZGlyZWN0V2luZG93KG1fZGlzcGxheSwgbV93aW5kb3csIENvbXBvc2l0ZVJlZGlyZWN0TWFudWFs
KTsKLSAgICBtX2RhbWFnZSA9IFhEYW1hZ2VDcmVhdGUobV9kaXNwbGF5LCBtX3dpbmRvdywgWERh
bWFnZVJlcG9ydE5vbkVtcHR5KTsKKyAgICBYU2VsZWN0SW5wdXQobV9kaXNwbGF5LCBtX3dpbmRv
dy5nZXQoKSwgTm9FdmVudE1hc2spOworICAgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRvdyhtX2Rp
c3BsYXksIG1fd2luZG93LmdldCgpLCBDb21wb3NpdGVSZWRpcmVjdE1hbnVhbCk7CisgICAgbV9k
YW1hZ2UgPSBYRGFtYWdlQ3JlYXRlKG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIFhEYW1hZ2VS
ZXBvcnROb25FbXB0eSk7CiB9CiAKIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3coKQpAQCAtMjA0LDEyICsyMDAsMTIgQEAgUmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3c6On5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygpCiAgICAgQVNTRVJU
KG1fd2luZG93KTsKICAgICBBU1NFUlQobV9wYXJlbnRXaW5kb3cpOwogCi0gICAgeERhbWFnZU5v
dGlmaWVyKCkucmVtb3ZlKG1fd2luZG93KTsKKyAgICB4RGFtYWdlTm90aWZpZXIoKS5yZW1vdmUo
bV93aW5kb3cuZ2V0KCkpOwogCi0gICAgWERhbWFnZURlc3Ryb3kobV9kaXNwbGF5LCBtX2RhbWFn
ZSk7Ci0gICAgWERlc3Ryb3lXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdyk7Ci0gICAgWERlc3Ry
b3lXaW5kb3cobV9kaXNwbGF5LCBtX3BhcmVudFdpbmRvdyk7Ci0gICAgY2xlYW51cFBpeG1hcEFu
ZFBpeG1hcFN1cmZhY2UoKTsKKyAgICAvLyBFeHBsaWNpdCByZXNldCB0aGVzZSBiZWNhdXNlIHdl
IG5lZWQgdG8gZW5zdXJlIGl0IGhhcHBlbnMgaW4gdGhpcyBvcmRlci4KKyAgICBtX2RhbWFnZS5y
ZXNldCgpOworICAgIG1fd2luZG93LnJlc2V0KCk7CisgICAgbV9wYXJlbnRXaW5kb3cucmVzZXQo
KTsKIH0KIAogdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVzaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCkBAIC0yMTgsNyArMjE0LDcgQEAgdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdzo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIFJlc2l6ZSB0aGUgd2luZG93IHRvIGF0IGxhc3QgMXgxIHNpbmNlIFggZG9lc24ndCBh
bGxvdyB0byBjcmVhdGUgZW1wdHkgd2luZG93cy4KLSAgICBYUmVzaXplV2luZG93KG1fZGlzcGxh
eSwgbV93aW5kb3csIHN0ZDo6bWF4KDEsIHNpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIHNpemUu
aGVpZ2h0KCkpKTsKKyAgICBYUmVzaXplV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCks
IHN0ZDo6bWF4KDEsIHNpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIHNpemUuaGVpZ2h0KCkpKTsK
ICAgICBYRmx1c2gobV9kaXNwbGF5KTsKIAogICAgIG1fc2l6ZSA9IHNpemU7CkBAIC0yMzIsOSAr
MjI4LDggQEAgdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y2xlYW51cFBpeG1hcEFu
ZFBpeG1hcFN1cmZhY2UoKQogICAgIGlmICghbV9waXhtYXApCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbV9waXhtYXApOwotICAgIG1fcGl4bWFwID0gMDsK
ICAgICBtX3N1cmZhY2UgPSBudWxscHRyOworICAgIG1fcGl4bWFwLnJlc2V0KCk7CiB9CiAKIGNh
aXJvX3N1cmZhY2VfdCogUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnN1cmZhY2UoKQpAQCAt
MjQ3LDIwICsyNDIsMTkgQEAgY2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdzo6c3VyZmFjZSgpCiAKICAgICBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemUgPSBmYWxz
ZTsKIAotICAgIFBpeG1hcCBuZXdQaXhtYXAgPSBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcCht
X2Rpc3BsYXksIG1fd2luZG93KTsKKyAgICBYVW5pcXVlUGl4bWFwIG5ld1BpeG1hcChYQ29tcG9z
aXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpKSk7CiAgICAgaWYg
KCFuZXdQaXhtYXApIHsKICAgICAgICAgY2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UoKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgWFdpbmRvd0F0dHJpYnV0ZXMg
d2luZG93QXR0cmlidXRlczsKLSAgICBpZiAoIVhHZXRXaW5kb3dBdHRyaWJ1dGVzKG1fZGlzcGxh
eSwgbV93aW5kb3csICZ3aW5kb3dBdHRyaWJ1dGVzKSkgeworICAgIGlmICghWEdldFdpbmRvd0F0
dHJpYnV0ZXMobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgJndpbmRvd0F0dHJpYnV0ZXMpKSB7
CiAgICAgICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7Ci0gICAgICAgIFhGcmVl
UGl4bWFwKG1fZGlzcGxheSwgbmV3UGl4bWFwKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmV3U3VyZmFjZSA9IGFkb3B0UmVm
KGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9kaXNwbGF5LCBuZXdQaXhtYXAsIHdpbmRvd0F0
dHJpYnV0ZXMudmlzdWFsLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7CisgICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmV3U3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJf
c3VyZmFjZV9jcmVhdGUobV9kaXNwbGF5LCBuZXdQaXhtYXAuZ2V0KCksIHdpbmRvd0F0dHJpYnV0
ZXMudmlzdWFsLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7CiAKICAgICAvLyBO
dmlkaWEgZHJpdmVycyBzZWVtIHRvIHByZXBhcmUgdGhlaXIgcmVkaXJlY3RlZCB3aW5kb3cgcGl4
bWFwIGFzeW5jaHJvbm91c2x5LCBzbyBmb3IgYSBmZXcgZnJhY3Rpb25zCiAgICAgLy8gb2YgYSBz
ZWNvbmQgYWZ0ZXIgZWFjaCByZXNpemUsIHdoaWxlIGRvaW5nIGNvbnRpbnVvdXMgcmVzaXppbmcg
KHdoaWNoIGNvbnN0YW50bHkgZGVzdHJveXMgYW5kIGNyZWF0ZXMKQEAgLTI3NSw3ICsyNjksNyBA
QCBjYWlyb19zdXJmYWNlX3QqIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpzdXJmYWNlKCkK
ICAgICB9CiAKICAgICBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgpOwotICAgIG1fcGl4
bWFwID0gbmV3UGl4bWFwOworICAgIG1fcGl4bWFwID0gV1RGOjptb3ZlKG5ld1BpeG1hcCk7CiAg
ICAgbV9zdXJmYWNlID0gbmV3U3VyZmFjZTsKICAgICByZXR1cm4gbV9zdXJmYWNlLmdldCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdy5oCmluZGV4IDNhYTRmZjUuLjU0ZjNmN2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdy5oCkBAIC0zMSwxMSArMzEsMTIgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRlIDxYMTEvWGxpYi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvWFVuaXF1ZS5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAK
IHR5cGVkZWYgc3RydWN0IF9HZGtXaW5kb3cgR2RrV2luZG93OwogdHlwZWRlZiB1bnNpZ25lZCBs
b25nIERhbWFnZTsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBXaW5kb3c7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCkBAIC00NCw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBjcmVhdGUoR2RrV2luZG93Kiwgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IGRhbWFnZU5vdGlmeSk7CiAgICAgflJlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93KCk7CiAKLSAgICBXaW5kb3cgd2luZG93SUQoKSBjb25zdCB7IHJldHVybiBtX3dp
bmRvdzsgfQorICAgIFdpbmRvdyB3aW5kb3dJRCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93Lmdl
dCgpOyB9CiAgICAgdm9pZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSgpOwogCkBAIC01NCwxMCArNTUsMTAgQEAgcHJpdmF0ZToK
IAogICAgIERpc3BsYXkqIG1fZGlzcGxheTsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsK
LSAgICBXaW5kb3cgbV93aW5kb3c7Ci0gICAgV2luZG93IG1fcGFyZW50V2luZG93OwotICAgIFBp
eG1hcCBtX3BpeG1hcDsKLSAgICBEYW1hZ2UgbV9kYW1hZ2U7CisgICAgV2ViQ29yZTo6WFVuaXF1
ZVdpbmRvdyBtX3dpbmRvdzsKKyAgICBXZWJDb3JlOjpYVW5pcXVlV2luZG93IG1fcGFyZW50V2lu
ZG93OworICAgIFdlYkNvcmU6OlhVbmlxdWVQaXhtYXAgbV9waXhtYXA7CisgICAgV2ViQ29yZTo6
WFVuaXF1ZURhbWFnZSBtX2RhbWFnZTsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1
cmZhY2U7CiAgICAgYm9vbCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemU7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaAppbmRleCBiM2M4M2JkLi41ZDIyNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaApAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0LmgiCiAj
ZW5kaWYKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorI2luY2x1ZGUgPFdlYkNvcmUv
WFVuaXF1ZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1hY2hTZW5k
UmlnaHQ7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwpAQCAtMzg3LDcgKzM5MSw3IEBAIHByaXZhdGU6
CiAgICAgTlBfQ0dDb250ZXh0IG1fbnBDR0NvbnRleHQ7CiAjZW5kaWYKICNlbGlmIFBMVUdJTl9B
UkNISVRFQ1RVUkUoWDExKQotICAgIFBpeG1hcCBtX2RyYXdhYmxlOworICAgIFdlYkNvcmU6OlhV
bmlxdWVQaXhtYXAgbV9kcmF3YWJsZTsKICAgICBEaXNwbGF5KiBtX3BsdWdpbkRpc3BsYXk7CiAj
aWYgUExBVEZPUk0oR1RLKQogICAgIEd0a1dpZGdldCogbV9wbGF0Zm9ybVBsdWdpbldpZGdldDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94
MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKaW5kZXggMzdmNDc5My4uMjM3
MWYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlz
cGxheVgxMS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvWFVuaXF1ZS5oPgogCiAjaWYgUExBVEZPUk0o
R1RLKQogI2luY2x1ZGUgPGd0ay9ndGsuaD4KQEAgLTE3NSwxMiArMTc2LDEwIEBAIGJvb2wgTmV0
c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dsZXNzKCkKICAgICB2aXN1
YWxUZW1wbGF0ZS5kZXB0aCA9IGRlcHRoOwogICAgIHZpc3VhbFRlbXBsYXRlLmNfY2xhc3MgPSBU
cnVlQ29sb3I7CiAgICAgaW50IG51bU1hdGNoaW5nOwotICAgIFhWaXN1YWxJbmZvKiB2aXN1YWxJ
bmZvID0gWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsU2NyZWVuTWFzayB8IFZpc3VhbERl
cHRoTWFzayB8IFZpc3VhbENsYXNzTWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZ2aXN1YWxUZW1wbGF0ZSwgJm51bU1hdGNoaW5nKTsKKyAgICBYVW5p
cXVlUHRyPFhWaXN1YWxJbmZvPiB2aXN1YWxJbmZvKFhHZXRWaXN1YWxJbmZvKGRpc3BsYXksIFZp
c3VhbFNjcmVlbk1hc2sgfCBWaXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01hc2ssICZ2aXN1
YWxUZW1wbGF0ZSwgJm51bU1hdGNoaW5nKSk7CiAgICAgQVNTRVJUKHZpc3VhbEluZm8pOwotICAg
IFZpc3VhbCogdmlzdWFsID0gdmlzdWFsSW5mb1swXS52aXN1YWw7CisgICAgVmlzdWFsKiB2aXN1
YWwgPSB2aXN1YWxJbmZvLmdldCgpWzBdLnZpc3VhbDsKICAgICBBU1NFUlQodmlzdWFsKTsKLSAg
ICBYRnJlZSh2aXN1YWxJbmZvKTsKIAogICAgIGNhbGxiYWNrU3RydWN0LT52aXN1YWwgPSB2aXN1
YWw7CiAgICAgY2FsbGJhY2tTdHJ1Y3QtPmNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFwKGRpc3Bs
YXksIHJvb3RXaW5kb3dJRCgpLCB2aXN1YWwsIEFsbG9jTm9uZSk7CkBAIC0yMzIsMTAgKzIzMSw3
IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtRGVzdHJveSgpCiAgICAgWEZyZWVDb2xv
cm1hcChob3N0RGlzcGxheSwgY2FsbGJhY2tTdHJ1Y3QtPmNvbG9ybWFwKTsKICAgICBkZWxldGUg
Y2FsbGJhY2tTdHJ1Y3Q7CiAKLSAgICBpZiAobV9kcmF3YWJsZSkgewotICAgICAgICBYRnJlZVBp
eG1hcChob3N0RGlzcGxheSwgbV9kcmF3YWJsZSk7Ci0gICAgICAgIG1fZHJhd2FibGUgPSAwOwot
ICAgIH0KKyAgICBtX2RyYXdhYmxlLnJlc2V0KCk7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAg
aWYgKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpIHsKQEAgLTI2MiwxOCArMjU4LDEyIEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgRGlzcGxheSogZGlzcGxheSA9IHgxMUhvc3REaXNwbGF5KCk7Ci0g
ICAgaWYgKG1fZHJhd2FibGUpCi0gICAgICAgIFhGcmVlUGl4bWFwKGRpc3BsYXksIG1fZHJhd2Fi
bGUpOwotCi0gICAgaWYgKG1fcGx1Z2luU2l6ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9kcmF3
YWJsZSA9IDA7CisgICAgbV9kcmF3YWJsZS5yZXNldCgpOworICAgIGlmIChtX3BsdWdpblNpemUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9kcmF3YWJsZSA9IFhD
cmVhdGVQaXhtYXAoZGlzcGxheSwgcm9vdFdpbmRvd0lEKCksIG1fcGx1Z2luU2l6ZS53aWR0aCgp
LCBtX3BsdWdpblNpemUuaGVpZ2h0KCksIGRpc3BsYXlEZXB0aCgpKTsKIAotICAgIFhTeW5jKGRp
c3BsYXksIGZhbHNlKTsgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHNlcnZlciBrbm93cyBhYm91dCB0
aGUgRHJhd2FibGUuCisgICAgbV9kcmF3YWJsZSA9IFhDcmVhdGVQaXhtYXAoeDExSG9zdERpc3Bs
YXkoKSwgcm9vdFdpbmRvd0lEKCksIG1fcGx1Z2luU2l6ZS53aWR0aCgpLCBtX3BsdWdpblNpemUu
aGVpZ2h0KCksIGRpc3BsYXlEZXB0aCgpKTsKKyAgICBYU3luYyh4MTFIb3N0RGlzcGxheSgpLCBm
YWxzZSk7IC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzZXJ2ZXIga25vd3MgYWJvdXQgdGhlIERyYXdh
YmxlLgogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVZpc2liaWxpdHlEaWRDaGFu
Z2UoKQpAQCAtMzA3LDcgKzI5Nyw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFp
bnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0CiAgICAgWEdy
YXBoaWNzRXhwb3NlRXZlbnQmIGV4cG9zZUV2ZW50ID0geGV2ZW50LnhncmFwaGljc2V4cG9zZTsK
ICAgICBleHBvc2VFdmVudC50eXBlID0gR3JhcGhpY3NFeHBvc2U7CiAgICAgZXhwb3NlRXZlbnQu
ZGlzcGxheSA9IHgxMUhvc3REaXNwbGF5KCk7Ci0gICAgZXhwb3NlRXZlbnQuZHJhd2FibGUgPSBt
X2RyYXdhYmxlOworICAgIGV4cG9zZUV2ZW50LmRyYXdhYmxlID0gbV9kcmF3YWJsZS5nZXQoKTsK
IAogICAgIEludFJlY3QgZXhwb3NlZFJlY3QoZGlydHlSZWN0KTsKICAgICBleHBvc2VFdmVudC54
ID0gZXhwb3NlZFJlY3QueCgpOwpAQCAtMzI0LDExICszMTQsOCBAQCB2b2lkIE5ldHNjYXBlUGx1
Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgZGlydAogICAgICAgICBYU3luYyhtX3BsdWdpbkRpc3BsYXksIGZhbHNlKTsKIAogI2lmIFBM
QVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgVVNFKENBSVJPKSkKLSAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1
cmZhY2VfY3JlYXRlKG1fcGx1Z2luRGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
ZHJhd2FibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxOUFNldFdpbmRv
d0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRvdy53c19pbmZvKS0+dmlzdWFsLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wbHVnaW5TaXplLndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3BsdWdpblNpemUuaGVpZ2h0KCkpKTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKG1f
cGx1Z2luRGlzcGxheSwgbV9kcmF3YWJsZS5nZXQoKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8TlBT
ZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyktPnZpc3VhbCwgbV9w
bHVnaW5TaXplLndpZHRoKCksIG1fcGx1Z2luU2l6ZS5oZWlnaHQoKSkpOwogICAgIGNhaXJvX3Qq
IGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShj
cik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252480</attachid>
            <date>2015-05-06 09:21:41 -0700</date>
            <delta_ts>2015-05-06 09:43:26 -0700</delta_ts>
            <desc>Try to gix EFL build</desc>
            <filename>wk-xunique.diff</filename>
            <type>text/plain</type>
            <size>54618</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjhiMGU1Li5iNTgzNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQg
QEAKKzIwMTUtMDUtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtYMTFdIEFkZCBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8g
YXV0b21hdGljYWxseSBmcmVlIFggcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgWFVuaXF1ZVB0ciBhcyBhIHRlbXBsYXRlIGFsaWFz
IG9mIHN0ZDp1bmlxdWVfcHRyIHRvIGhhbmRsZSBYCisgICAgICAgIHJlc291cmNlcyB1c2luZyBw
b2ludGVycyBhbmQgWFVuaXF1ZVJlc291cmNlIGFzIGEgbmV3IGNsYXNzIHRvCisgICAgICAgIGhh
bmRsZSBYIHJlc291cmNlcyB1c2luZyBhIGxvbmcgdW5zaWduZWQgaWRlbnRpZmllci4gVGhpcwor
ICAgICAgICBzaW1wbGlmaWVzIHRoZSBjb2RlIGFuZCBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdCB0
byBsZWFrIFggcmVzb3VyY2VzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBu
ZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFk
ZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDEx
KToKKyAgICAgICAgUmVtb3ZlIHRoZSBkaXNwbGF5IG1lbWJlciwgYW5kIHVzZSBYVW5pcXVlIGZv
ciBQaXhtYXAgYW5kIEdDLgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZENh
aXJvWDExOjp+QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKToKKyAgICAgICAgUmVtb3ZlIGNv
ZGUgdG8gZXhwbGljaXRseSBmcmVlIFBpeG1hcCBhbmQgR0MuCisgICAgICAgIChXZWJDb3JlOjpC
YWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6OnNjcm9sbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQpOiBVc2UgWFVuaXF1ZSBhbmQgdGhl
CisgICAgICAgIG5ldyBjb25zdHJ1Y3RvciB0aGF0IHJlY2VpdmVzIGEgWElELCBzaW5jZSB0aGVy
ZSdzIG5vIGxvbmdlcgorICAgICAgICBjb25mbGljdCB3aXRoIHRoZSBvbmUgcmVjZWl2aW5nIGEg
UGJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNv
bnRleHQpOiBVc2UgWFVuaXF1ZSBhbmQgdGhlCisgICAgICAgIG5ldyBjb25zdHJ1Y3RvciB0aGF0
IHJlY2VpdmVzIGEgWFVuaXF1ZUdMWFBidWZmZXImJi4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRHTFg6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpH
TENvbnRleHRHTFgpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0
R0xYKTogUmVtb3ZlIGNvZGUgdG8gZXhwbGljaXRseQorICAgICAgICBmcmVlIFggcmVzb3VyY2Vz
LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjptYWtlQ29udGV4dEN1cnJlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRHTFg6OnBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFR0xY
VHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OmRlc3Ryb3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OnByZXBhcmVUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTFRleHR1cmVGcm9tUGl4bWFwOjpFR0xUZXh0dXJlRnJv
bVBpeG1hcCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
ZWdsL0VHTFhTdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWENvbmZpZ1NlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxl
Y3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnKTogVXNlIFhVbmlxdWUKKyAgICAgICAgaW5zdGVhZCBv
ZiB0aGUgY3VzdG9tIHN0ZDo6dW5pcXVlIFgxMURlbGV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpH
TFhDb25maWdTZWxlY3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnV2l0aFZpc3VhbElkKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0U3Vy
ZmFjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R0xYT2ZmU2NyZWVuU3VyZmFjZTo6aW5p
dGlhbGl6ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9YMTFIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WDExSGVscGVyOjpjcmVhdGVPZmZT
Y3JlZW5XaW5kb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlgxMUhlbHBlcjo6Y3JlYXRl
UGl4bWFwKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L1gxMUhlbHBlci5oOiBSZW1vdmUgWDExRGVsZXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy94MTEvWFVuaXF1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJl
c291cmNlPFhSZXNvdXJjZTo6Q29sb3JtYXA+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6RGFtYWdlPjo6ZGVsZXRlWFJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OlBpeG1h
cD46OmRlbGV0ZVhSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8
WFJlc291cmNlOjpXaW5kb3c+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj46OmRlbGV0ZVhSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpHTFhQaXhtYXA+
OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5p
cXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkp
OgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpYVW5pcXVlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpvcGVyYXRvcj0pOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjp+WFVuaXF1ZVJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVS
ZXNvdXJjZTo6cmVsZWFzZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U6OnJl
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6b3BlcmF0b3IhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSopOgorCiAyMDE1LTA1LTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gTmV0d29yayBDYWNoZTogSW1wbGVtZW50IFNoYXJl
YWJsZVJlc291cmNlIGZvciBTb3VwIGFuZCBlbmFibGUgaXQgZm9yIEdUSyBwbGF0Zm9ybQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3NjRiMzM2Li40ZmY2ODk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMTk3LDYgKzE5Nyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxh
cy5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuY3BwCiAKICAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggYjVkMDliNy4uYWU5OGY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEy
Niw2ICsxMjYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKIAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MveDExL1hVbmlxdWUuY3BwCiAKICAgICBwbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAogICAg
IHBsYXRmb3JtL2d0ay9FdmVudExvb3BHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExLmNwcAppbmRleCA0YzA4NzJmLi43Yjg2MzFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm9YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Jh
Y2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMS5jcHAKQEAgLTI2LDE3ICsyNiwxNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0
b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqIGRpc3BsYXksIHVuc2lnbmVkIGxvbmcgcm9vdFdp
bmRvd0lELCBWaXN1YWwqIHZpc3VhbCwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiBzaXplLCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFj
a2luZ1N0b3JlQmFja2VuZENhaXJvWDExKHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lELCBWaXN1
YWwqIHZpc3VhbCwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikKICAgICA6IEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyhzaXplKQotICAgICwg
bV9kaXNwbGF5KGRpc3BsYXkpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gc2l6ZTsKICAg
ICBzY2FsZWRTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKIAotICAgIG1fcGl4bWFwID0g
WENyZWF0ZVBpeG1hcChtX2Rpc3BsYXksIHJvb3RXaW5kb3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgp
LCBzY2FsZWRTaXplLmhlaWdodCgpLCBkZXB0aCk7Ci0gICAgbV9nYyA9IFhDcmVhdGVHQyhtX2Rp
c3BsYXksIG1fcGl4bWFwLCAwLCBudWxscHRyKTsKKyAgICBhdXRvKiBkaXNwbGF5ID0gZG93bmNh
c3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSku
bmF0aXZlKCk7CisgICAgbV9waXhtYXAgPSBYQ3JlYXRlUGl4bWFwKGRpc3BsYXksIHJvb3RXaW5k
b3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhlaWdodCgpLCBkZXB0aCk7Cisg
ICAgbV9nYy5yZXNldChYQ3JlYXRlR0MoZGlzcGxheSwgbV9waXhtYXAuZ2V0KCksIDAsIG51bGxw
dHIpKTsKIAotICAgIG1fc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVh
dGUobV9kaXNwbGF5LCBtX3BpeG1hcCwgdmlzdWFsLCBzY2FsZWRTaXplLndpZHRoKCksIHNjYWxl
ZFNpemUuaGVpZ2h0KCkpKTsKKyAgICBtX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1
cmZhY2VfY3JlYXRlKGRpc3BsYXksIG1fcGl4bWFwLmdldCgpLCB2aXN1YWwsIHNjYWxlZFNpemUu
d2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWlnaHQoKSkpOwogICAgIGNhaXJvU3VyZmFjZVNldERldmlj
ZVNjYWxlKG1fc3VyZmFjZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFj
dG9yKTsKIH0KIApAQCAtNDQsOCArNDQsNiBAQCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6
On5CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEoKQogewogICAgIC8vIFRoZSBwaXhtYXAgbmVl
ZHMgdG8gZXhpc3Qgd2hlbiB0aGUgc3VyZmFjZSBpcyBkZXN0cm95ZWQsIHNvIGJlZ2luIGJ5IGNs
ZWFyaW5nIGl0LgogICAgIG1fc3VyZmFjZS5jbGVhcigpOwotICAgIFhGcmVlUGl4bWFwKG1fZGlz
cGxheSwgbV9waXhtYXApOwotICAgIFhGcmVlR0MobV9kaXNwbGF5LCBtX2djKTsKIH0KIAogdm9p
ZCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3Jv
bGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpCkBAIC02NSw3ICs2Myw3IEBAIHZv
aWQgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExOjpzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Ny
b2xsUmVjdCwgY29uc3QgSW50U2l6CiAgICAgc2NhbGVkU2Nyb2xsT2Zmc2V0LnNjYWxlKHhTY2Fs
ZSwgeVNjYWxlKTsKIAogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsK
LSAgICBYQ29weUFyZWEobV9kaXNwbGF5LCBtX3BpeG1hcCwgbV9waXhtYXAsIG1fZ2MsCisgICAg
WENvcHlBcmVhKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBtX3BpeG1hcC5nZXQoKSwgbV9waXhtYXAuZ2V0KCks
IG1fZ2MuZ2V0KCksCiAgICAgICAgIHRhcmdldFJlY3QueCgpIC0gc2NhbGVkU2Nyb2xsT2Zmc2V0
LndpZHRoKCksIHRhcmdldFJlY3QueSgpIC0gc2NhbGVkU2Nyb2xsT2Zmc2V0LmhlaWdodCgpLAog
ICAgICAgICB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIHRhcmdldFJl
Y3QueCgpLCB0YXJnZXRSZWN0LnkoKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3Jl
Y3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwg
dGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyb1gxMS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2lu
Z1N0b3JlQmFja2VuZENhaXJvWDExLmgKaW5kZXggMWRlMGQ4NC4uNDA3OGE2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmgKQEAgLTIyLDIxICsyMiwyMCBAQAogI2lu
Y2x1ZGUgIkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyby5oIgogCiAjaWYgVVNFKENBSVJPKSAmJiBQ
TEFURk9STShYMTEpCi0jaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlICJYVW5pcXVlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmFja2luZ1N0b3JlQmFja2VuZENhaXJv
WDExIGZpbmFsIDogcHVibGljIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyB7CiBwdWJsaWM6Ci0g
ICAgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqLCB1bnNpZ25lZCBsb25nIHJv
b3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IpOworICAgIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMSh1bnNpZ25l
ZCBsb25nIHJvb3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIHZpcnR1YWwgfkJhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb1gxMSgpOwogCiAgICAgdm9pZCBzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVj
dCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBEaXNwbGF5KiBtX2Rpc3BsYXk7Ci0gICAgUGl4bWFwIG1fcGl4bWFwOwotICAgIEdDIG1fZ2M7
CisgICAgWFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKKyAgICBYVW5pcXVlR0MgbV9nYzsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggZjc0NjdhNy4uYzEwOGNjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5jcHAKQEAgLTQzLDI1ICs0MywxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgR0xDbwog
ICAgIHZpc3VhbEluZm8udmlzdWFsaWQgPSBYVmlzdWFsSURGcm9tVmlzdWFsKGF0dHJpYnV0ZXMu
dmlzdWFsKTsKIAogICAgIGludCBudW1SZXR1cm5lZCA9IDA7Ci0gICAgWFZpc3VhbEluZm8qIHZp
c3VhbEluZm9MaXN0ID0gWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsSURNYXNrLCAmdmlz
dWFsSW5mbywgJm51bVJldHVybmVkKTsKLQotICAgIEdMWENvbnRleHQgZ2x4U2hhcmluZ0NvbnRl
eHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEdMWCo+KHNoYXJpbmdD
b250ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBnbFhDcmVh
dGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9MaXN0LCBnbHhTaGFyaW5nQ29udGV4dCwgVHJ1
ZSk7Ci0gICAgWEZyZWUodmlzdWFsSW5mb0xpc3QpOworICAgIFhVbmlxdWVQdHI8WFZpc3VhbElu
Zm8+IHZpc3VhbEluZm9MaXN0KFhHZXRWaXN1YWxJbmZvKGRpc3BsYXksIFZpc3VhbElETWFzaywg
JnZpc3VhbEluZm8sICZudW1SZXR1cm5lZCkpOwogCisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5n
Q29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hh
cmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkgOiBudWxscHRyOworICAgIFhVbmlxdWVHTFhD
b250ZXh0IGNvbnRleHQoZ2xYQ3JlYXRlQ29udGV4dChkaXNwbGF5LCB2aXN1YWxJbmZvTGlzdC5n
ZXQoKSwgZ2x4U2hhcmluZ0NvbnRleHQsIFRydWUpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gR0xYUGJ1ZmZlciBhbmQgWElEIGFyZSBib3Ro
IHRoZSBzYW1lIHR5cGVzIHVuZGVybmVhdGgsIHNvIHdlIGhhdmUgdG8gc2hhcmUKLSAgICAvLyBh
IGNvbnN0cnVjdG9yIGhlcmUgd2l0aCB0aGUgd2luZG93IHBhdGguCi0gICAgYXV0byBjb250ZXh0
V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihjb250ZXh0KTsKLSAgICBj
b250ZXh0V3JhcHBlci0+bV93aW5kb3cgPSB3aW5kb3c7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShj
b250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xY
PihXVEY6Om1vdmUoY29udGV4dCksIHdpbmRvdyk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBz
aGFyaW5nQ29udGV4dCkKIHsKLSAgICBpbnQgZmJDb25maWdBdHRyaWJ1dGVzW10gPSB7CisgICAg
c3RhdGljIGNvbnN0IGludCBmYkNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHsKICAgICAgICAgR0xYX0RS
QVdBQkxFX1RZUEUsIEdMWF9QQlVGRkVSX0JJVCwKICAgICAgICAgR0xYX1JFTkRFUl9UWVBFLCBH
TFhfUkdCQV9CSVQsCiAgICAgICAgIEdMWF9SRURfU0laRSwgMSwKQEAgLTc0LDMyICs2OCwyMSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZm
ZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcgogCiAgICAgaW50IHJldHVybmVkRWxlbWVudHM7CiAg
ICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwotICAgIEdMWEZCQ29uZmlnKiBj
b25maWdzID0gZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRyaWJ1dGVz
LCAmcmV0dXJuZWRFbGVtZW50cyk7Ci0gICAgaWYgKCFyZXR1cm5lZEVsZW1lbnRzKSB7Ci0gICAg
ICAgIFhGcmVlKGNvbmZpZ3MpOworICAgIFhVbmlxdWVQdHI8R0xYRkJDb25maWc+IGNvbmZpZ3Mo
Z2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRyaWJ1dGVzLCAmcmV0dXJu
ZWRFbGVtZW50cykpOworICAgIGlmICghcmV0dXJuZWRFbGVtZW50cykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQogCiAgICAgLy8gV2Ugd2lsbCBiZSByZW5kZXJpbmcgdG8gYSB0ZXh0
dXJlLCBzbyBvdXIgcGJ1ZmZlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGxhcmdlLgogICAgIHN0YXRp
YyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgR0xYX1BCVUZGRVJfV0lEVEgsIDEs
IEdMWF9QQlVGRkVSX0hFSUdIVCwgMSwgMCB9OwotICAgIEdMWFBidWZmZXIgcGJ1ZmZlciA9IGds
WENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmlnc1swXSwgcGJ1ZmZlckF0dHJpYnV0ZXMpOwot
ICAgIGlmICghcGJ1ZmZlcikgewotICAgICAgICBYRnJlZShjb25maWdzKTsKKyAgICBYVW5pcXVl
R0xYUGJ1ZmZlciBwYnVmZmVyKGdsWENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmlncy5nZXQo
KVswXSwgcGJ1ZmZlckF0dHJpYnV0ZXMpKTsKKyAgICBpZiAoIXBidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWENvbnRleHQgY29udGV4dCA9IGdsWENyZWF0
ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmlnc1swXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0Nv
bnRleHQsIEdMX1RSVUUpOwotICAgIFhGcmVlKGNvbmZpZ3MpOwotICAgIGlmICghY29udGV4dCkg
ewotICAgICAgICBnbFhEZXN0cm95UGJ1ZmZlcihkaXNwbGF5LCBwYnVmZmVyKTsKKyAgICBYVW5p
cXVlR0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmln
cy5nZXQoKVswXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0NvbnRleHQsIEdMX1RSVUUpKTsKKyAg
ICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIC8v
IEdMWFBidWZmZXIgYW5kIFhJRCBhcmUgYm90aCB0aGUgc2FtZSB0eXBlcyB1bmRlcm5lYXRoLCBz
byB3ZSBoYXZlIHRvIHNoYXJlCi0gICAgLy8gYSBjb25zdHJ1Y3RvciBoZXJlIHdpdGggdGhlIHdp
bmRvdyBwYXRoLgotICAgIGF1dG8gY29udGV4dFdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdM
Q29udGV4dEdMWD4oY29udGV4dCk7Ci0gICAgY29udGV4dFdyYXBwZXItPm1fcGJ1ZmZlciA9IHBi
dWZmZXI7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEY6Om1vdmUoY29udGV4dCksIFdURjo6
bW92ZShwYnVmZmVyKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KQpA
QCAtMTE0LDMxICs5NywyMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRl
eHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaQogICAgIH07CiAKICAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7Ci0gICAgWFZpc3VhbEluZm8qIHZp
c3VhbEluZm8gPSBnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5
KSwgdmlzdWFsQXR0cmlidXRlcyk7CisgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFs
SW5mbyhnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5KSwgdmlz
dWFsQXR0cmlidXRlcykpOwogICAgIGlmICghdmlzdWFsSW5mbykKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBnbFhDcmVhdGVDb250ZXh0KGRpc3Bs
YXksIHZpc3VhbEluZm8sIHNoYXJpbmdDb250ZXh0LCBHTF9UUlVFKTsKLSAgICBpZiAoIWNvbnRl
eHQpIHsKLSAgICAgICAgWEZyZWUodmlzdWFsSW5mbyk7CisgICAgWFVuaXF1ZUdMWENvbnRleHQg
Y29udGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm8uZ2V0KCksIHNoYXJp
bmdDb250ZXh0LCBHTF9UUlVFKSk7CisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9CiAKLSAgICBQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcChkaXNw
bGF5LCBEZWZhdWx0Um9vdFdpbmRvdyhkaXNwbGF5KSwgMSwgMSwgdmlzdWFsSW5mby0+ZGVwdGgp
OwotICAgIGlmICghcGl4bWFwKSB7Ci0gICAgICAgIFhGcmVlKHZpc3VhbEluZm8pOworICAgIFhV
bmlxdWVQaXhtYXAgcGl4bWFwKFhDcmVhdGVQaXhtYXAoZGlzcGxheSwgRGVmYXVsdFJvb3RXaW5k
b3coZGlzcGxheSksIDEsIDEsIHZpc3VhbEluZm8tPmRlcHRoKSk7CisgICAgaWYgKCFwaXhtYXAp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWFBpeG1hcCBnbHhQaXht
YXAgPSBnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mbywgcGl4bWFwKTsKLSAg
ICBpZiAoIWdseFBpeG1hcCkgewotICAgICAgICBYRnJlZVBpeG1hcChkaXNwbGF5LCBwaXhtYXAp
OwotICAgICAgICBYRnJlZSh2aXN1YWxJbmZvKTsKKyAgICBYVW5pcXVlR0xYUGl4bWFwIGdseFBp
eG1hcChnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mby5nZXQoKSwgcGl4bWFw
LmdldCgpKSk7CisgICAgaWYgKCFnbHhQaXhtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KIAotICAgIFhGcmVlKHZpc3VhbEluZm8pOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdMQ29udGV4dEdMWD4oY29udGV4dCwgcGl4bWFwLCBnbHhQaXhtYXApOworICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdMWD4oV1RGOjptb3ZlKGNvbnRleHQpLCBXVEY6
Om1vdmUocGl4bWFwKSwgV1RGOjptb3ZlKGdseFBpeG1hcCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRvdywg
R0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKQEAgLTE1Miw3ICsxMjcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRv
dywgR0xDb250ZXh0KgogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBz
dGF0aWNfY2FzdDxHTENvbnRleHRHTFgqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dCA6IDA7
CisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3Rh
dGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkg
OiBudWxscHRyOwogICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRl
eHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOwogICAgIGlmICghY29udGV4dCkK
ICAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGdseFNoYXJpbmdDb250ZXh0
KTsKQEAgLTE2NCwyMyArMTM5LDI3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdM
Q29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqCiAgICAgcmV0
dXJuIFdURjo6bW92ZShjb250ZXh0KTsKIH0KIAotR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgo
R0xYQ29udGV4dCBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitHTENvbnRleHRH
TFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhJRCB3aW5kb3cp
CisgICAgOiBtX2NvbnRleHQoV1RGOjptb3ZlKGNvbnRleHQpKQorICAgICwgbV93aW5kb3cod2lu
ZG93KQorICAgICwgbV9jYWlyb0RldmljZShudWxscHRyKQoreworfQorCitHTENvbnRleHRHTFg6
OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhVbmlxdWVHTFhQYnVm
ZmVyJiYgcGJ1ZmZlcikKKyAgICA6IG1fY29udGV4dChXVEY6Om1vdmUoY29udGV4dCkpCiAgICAg
LCBtX3dpbmRvdygwKQotICAgICwgbV9wYnVmZmVyKDApCi0gICAgLCBtX3BpeG1hcCgwKQotICAg
ICwgbV9nbHhQaXhtYXAoMCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKKyAgICAsIG1fcGJ1ZmZl
cihXVEY6Om1vdmUocGJ1ZmZlcikpCisgICAgLCBtX2NhaXJvRGV2aWNlKG51bGxwdHIpCiB7CiB9
CiAKLUdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKEdMWENvbnRleHQgY29udGV4dCwgUGl4bWFw
IHBpeG1hcCwgR0xYUGl4bWFwIGdseFBpeG1hcCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQor
R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBY
VW5pcXVlUGl4bWFwJiYgcGl4bWFwLCBYVW5pcXVlR0xYUGl4bWFwJiYgZ2x4UGl4bWFwKQorICAg
IDogbV9jb250ZXh0KFdURjo6bW92ZShjb250ZXh0KSkKICAgICAsIG1fd2luZG93KDApCi0gICAg
LCBtX3BidWZmZXIoMCkKLSAgICAsIG1fcGl4bWFwKHBpeG1hcCkKLSAgICAsIG1fZ2x4UGl4bWFw
KGdseFBpeG1hcCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKKyAgICAsIG1fcGl4bWFwKFdURjo6
bW92ZShwaXhtYXApKQorICAgICwgbV9nbHhQaXhtYXAoV1RGOjptb3ZlKGdseFBpeG1hcCkpCisg
ICAgLCBtX2NhaXJvRGV2aWNlKG51bGxwdHIpCiB7CiB9CiAKQEAgLTE4OSwyNiArMTY4LDEyIEBA
IEdMQ29udGV4dEdMWDo6fkdMQ29udGV4dEdMWCgpCiAgICAgaWYgKG1fY2Fpcm9EZXZpY2UpCiAg
ICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95KG1fY2Fpcm9EZXZpY2UpOwogCi0gICAgRGlzcGxh
eSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAg
ICAgLy8gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZXZlbnQgY3Jhc2hlcyB3aXRoIE5WaWRp
YSdzIGNsb3NlZCBzb3VyY2UgZHJpdmVycy4gT3JpZ2luYWxseQogICAgICAgICAvLyBmcm9tIE1v
emlsbGEncyAzRCBjYW52YXMgaW1wbGVtZW50YXRpb24gYXQ6IGh0dHA6Ly9iaXRidWNrZXQub3Jn
L2lsbWFyaS9jYW52YXMzZC8KKyAgICAgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpOwogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIDAp
OwogICAgICAgICBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBOb25lLCBOb25lKTsKLSAgICAgICAg
Z2xYRGVzdHJveUNvbnRleHQoZGlzcGxheSwgbV9jb250ZXh0KTsKLSAgICB9Ci0KLSAgICBpZiAo
bV9wYnVmZmVyKSB7Ci0gICAgICAgIGdsWERlc3Ryb3lQYnVmZmVyKGRpc3BsYXksIG1fcGJ1ZmZl
cik7Ci0gICAgICAgIG1fcGJ1ZmZlciA9IDA7Ci0gICAgfQotICAgIGlmIChtX2dseFBpeG1hcCkg
ewotICAgICAgICBnbFhEZXN0cm95R0xYUGl4bWFwKGRpc3BsYXksIG1fZ2x4UGl4bWFwKTsKLSAg
ICAgICAgbV9nbHhQaXhtYXAgPSAwOwotICAgIH0KLSAgICBpZiAobV9waXhtYXApIHsKLSAgICAg
ICAgWEZyZWVQaXhtYXAoZGlzcGxheSwgbV9waXhtYXApOwotICAgICAgICBtX3BpeG1hcCA9IDA7
CiAgICAgfQogfQogCkBAIC0yMzcsMTcgKzIwMiwxNyBAQCBib29sIEdMQ29udGV4dEdMWDo6bWFr
ZUNvbnRleHRDdXJyZW50KCkKICAgICBBU1NFUlQobV9jb250ZXh0ICYmIChtX3dpbmRvdyB8fCBt
X3BidWZmZXIgfHwgbV9nbHhQaXhtYXApKTsKIAogICAgIEdMQ29udGV4dDo6bWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0gICAgaWYgKGdsWEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0KQor
ICAgIGlmIChnbFhHZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dC5nZXQoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7
CiAgICAgaWYgKG1fd2luZG93KQotICAgICAgICByZXR1cm4gZ2xYTWFrZUN1cnJlbnQoZGlzcGxh
eSwgbV93aW5kb3csIG1fY29udGV4dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChk
aXNwbGF5LCBtX3dpbmRvdywgbV9jb250ZXh0LmdldCgpKTsKIAogICAgIGlmIChtX3BidWZmZXIp
Ci0gICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3BidWZmZXIsIG1fY29u
dGV4dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3BidWZmZXIu
Z2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiAKLSAgICByZXR1cm4gOjpnbFhNYWtlQ3VycmVudChk
aXNwbGF5LCBtX2dseFBpeG1hcCwgbV9jb250ZXh0KTsKKyAgICByZXR1cm4gOjpnbFhNYWtlQ3Vy
cmVudChkaXNwbGF5LCBtX2dseFBpeG1hcC5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKIH0KIAog
dm9pZCBHTENvbnRleHRHTFg6OnN3YXBCdWZmZXJzKCkKQEAgLTI2Nyw3ICsyMzIsNyBAQCBjYWly
b19kZXZpY2VfdCogR0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSgpCiAgICAgICAgIHJldHVybiBt
X2NhaXJvRGV2aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBt
X2NhaXJvRGV2aWNlID0gY2Fpcm9fZ2x4X2RldmljZV9jcmVhdGUoZG93bmNhc3Q8UGxhdGZvcm1E
aXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIG1f
Y29udGV4dCk7CisgICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2dseF9kZXZpY2VfY3JlYXRlKGRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkpLm5hdGl2ZSgpLCBtX2NvbnRleHQuZ2V0KCkpOwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9j
YWlyb0RldmljZTsKQEAgLTI3Niw3ICsyNDEsNyBAQCBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0
R0xYOjpjYWlyb0RldmljZSgpCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCiBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEdMWDo6cGxhdGZvcm1Db250ZXh0KCkKIHsK
LSAgICByZXR1cm4gbV9jb250ZXh0OworICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4
L0dMQ29udGV4dEdMWC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dM
Q29udGV4dEdMWC5oCmluZGV4IDY5MzRmMjQuLjQwMjNiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKQEAgLTIzLDEyICsy
Myw5IEBACiAjaWYgVVNFKEdMWCkKIAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgorI2luY2x1ZGUg
IlhVbmlxdWUuaCIKIAotdHlwZWRlZiBzdHJ1Y3QgX19HTFhjb250ZXh0UmVjKiBHTFhDb250ZXh0
OwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdMWFBidWZmZXI7Ci10eXBlZGVmIHVuc2lnbmVkIGxv
bmcgR0xYUGl4bWFwOwogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIEdMdWJ5dGU7Ci10eXBlZGVmIHVu
c2lnbmVkIGxvbmcgUGl4bWFwOwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJRDsKIHR5cGVkZWYg
dm9pZCogQ29udGV4dEtleVR5cGU7CiAKQEAgLTQwLDggKzM3LDkgQEAgcHVibGljOgogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVDb250ZXh0KFhJRCB3aW5k
b3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBjcmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4
dCogc2hhcmluZ0NvbnRleHQpOwogCi0gICAgR0xDb250ZXh0R0xYKEdMWENvbnRleHQpOwotICAg
IEdMQ29udGV4dEdMWChHTFhDb250ZXh0LCBQaXhtYXAsIEdMWFBpeG1hcCk7CisgICAgR0xDb250
ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYsIFhJRCk7CisgICAgR0xDb250ZXh0R0xYKFhVbmlx
dWVHTFhDb250ZXh0JiYsIFhVbmlxdWVHTFhQYnVmZmVyJiYpOworICAgIEdMQ29udGV4dEdMWChY
VW5pcXVlR0xYQ29udGV4dCYmLCBYVW5pcXVlUGl4bWFwJiYsIFhVbmlxdWVHTFhQaXhtYXAmJik7
CiAgICAgdmlydHVhbCB+R0xDb250ZXh0R0xYKCk7CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpOwpAQCAtNTksMTEg
KzU3LDExIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRH
TFg+IGNyZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQaXhtYXBDb250ZXh0
KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogCi0gICAgR0xYQ29udGV4dCBtX2NvbnRleHQ7
CisgICAgWFVuaXF1ZUdMWENvbnRleHQgbV9jb250ZXh0OwogICAgIFhJRCBtX3dpbmRvdzsKLSAg
ICBHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKLSAgICBQaXhtYXAgbV9waXhtYXA7Ci0gICAgR0xYUGl4
bWFwIG1fZ2x4UGl4bWFwOworICAgIFhVbmlxdWVHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKKyAgICBY
VW5pcXVlUGl4bWFwIG1fcGl4bWFwOworICAgIFhVbmlxdWVHTFhQaXhtYXAgbV9nbHhQaXhtYXA7
CiAgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhT
dXJmYWNlLmNwcAppbmRleCA2MThmZGMzLi5kNGUzNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFj
ZS5jcHAKQEAgLTE0MSw3ICsxNDEsNiBAQCB2b2lkIEVHTFBpeG1hcFN1cmZhY2U6OmRlc3Ryb3ko
KQogCiBFR0xYVHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGll
bnQoY29uc3QgUGxhdGZvcm1CdWZmZXJIYW5kbGUgaGFuZGxlLCBjb25zdCBJbnRTaXplJiBzaXpl
LCBib29sIGhhc0FscGhhKQogICAgIDogR0xUcmFuc3BvcnRTdXJmYWNlQ2xpZW50KCkKLSAgICAs
IG1faW1hZ2UoMCkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV90b3RhbEJ5dGVzKDApCiB7
CkBAIC0xOTcsMTEgKzE5Niw3IEBAIHZvaWQgRUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OmRl
c3Ryb3koKQogICAgIH0KIAogICAgIGVnbFdhaXRHTCgpOwotCi0gICAgaWYgKG1faW1hZ2UpIHsK
LSAgICAgICAgWERlc3Ryb3lJbWFnZShtX2ltYWdlKTsKLSAgICAgICAgbV9pbWFnZSA9IDA7Ci0g
ICAgfQorICAgIG1faW1hZ2UucmVzZXQoKTsKIH0KIAogdm9pZCBFR0xYVHJhbnNwb3J0U3VyZmFj
ZUNsaWVudDo6cHJlcGFyZVRleHR1cmUoKQpAQCAtMjE0LDcgKzIwOSw3IEBAIHZvaWQgRUdMWFRy
YW5zcG9ydFN1cmZhY2VDbGllbnQ6OnByZXBhcmVUZXh0dXJlKCkKICAgICB9CiAKICAgICAvLyBG
YWxsYmFjayB0byB1c2UgWEltYWdlIGluIGNhc2UgRUdMSW1hZ2UgYW5kIFRleHR1cmVUb1BpeG1h
cCBhcmUgbm90IHN1cHBvcnRlZC4KLSAgICBtX2ltYWdlID0gWEdldEltYWdlKE5hdGl2ZVdyYXBw
ZXI6Om5hdGl2ZURpc3BsYXkoKSwgbV9oYW5kbGUsIDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3Np
emUuaGVpZ2h0KCksIEFsbFBsYW5lcywgWlBpeG1hcCk7CisgICAgbV9pbWFnZS5yZXNldChYR2V0
SW1hZ2UoTmF0aXZlV3JhcHBlcjo6bmF0aXZlRGlzcGxheSgpLCBtX2hhbmRsZSwgMCwgMCwgbV9z
aXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgQWxsUGxhbmVzLCBaUGl4bWFwKSk7CiAKICNp
ZiBVU0UoT1BFTkdMX0VTXzIpCiAgICAgaWYgKG1fZm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpCR1JBKSB7CkBAIC0yMjUsMTAgKzIyMCw3IEBAIHZvaWQgRUdMWFRyYW5zcG9ydFN1cmZhY2VD
bGllbnQ6OnByZXBhcmVUZXh0dXJlKCkKIAogICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBtX2Zvcm1hdCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgMCwgbV9mb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIG1faW1hZ2UtPmRhdGEpOwogCi0gICAgaWYgKG1faW1hZ2Up
IHsKLSAgICAgICAgWERlc3Ryb3lJbWFnZShtX2ltYWdlKTsKLSAgICAgICAgbV9pbWFnZSA9IDA7
Ci0gICAgfQorICAgIG1faW1hZ2UucmVzZXQoKTsKIH0KIAogRUdMVGV4dHVyZUZyb21QaXhtYXA6
OkVHTFRleHR1cmVGcm9tUGl4bWFwKGNvbnN0IE5hdGl2ZVBpeG1hcCBoYW5kbGUsIGJvb2wgaGFz
QWxwaGEsIEVHTENvbmZpZyBjb25maWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCmluZGV4IDk2Yzhh
NjYuLjI0Y2Y4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aWYgUExBVEZPUk0oWDExKSAmJiBVU0UoRUdMKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIAog
I2luY2x1ZGUgIkVHTFN1cmZhY2UuaCIKKyNpbmNsdWRlICJYVW5pcXVlLmgiCiAjaW5jbHVkZSA8
Z2x4L1gxMUhlbHBlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NCw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgotICAgIFhJbWFnZSogbV9pbWFnZTsKKyAgICBYVW5pcXVlPFhJbWFnZT4gbV9pbWFnZTsKICAg
ICBJbnRTaXplIG1fc2l6ZTsKICAgICBQbGF0Zm9ybUJ1ZmZlckhhbmRsZSBtX2hhbmRsZTsKICAg
ICBHTHVpbnQgbV9mb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCmluZGV4
IDVjZGVkZTUuLjFiOWQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKEdMWCkKIAogI2luY2x1ZGUgIlgxMUhlbHBlci5oIgor
I2luY2x1ZGUgIlhVbmlxdWUuaCIKICNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+CiAjaW5jbHVk
ZSA8b3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmg+CiAKQEAgLTE0MCwxMyArMTQxLDEzIEBAIHBy
aXZhdGU6CiAgICAgR0xYRkJDb25maWcgZmluZE1hdGNoaW5nQ29uZmlnKGNvbnN0IGludCBhdHRy
aWJ1dGVzW10sIGludCBkZXB0aCA9IDMyKQogICAgIHsKICAgICAgICAgaW50IG51bUF2YWlsYWJs
ZUNvbmZpZ3M7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHTFhGQkNvbmZpZ1tdLCBYMTFEZWxl
dGVyPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCBE
ZWZhdWx0U2NyZWVuKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpKSwgYXR0cmlidXRlcywgJm51
bUF2YWlsYWJsZUNvbmZpZ3MpKTsKKyAgICAgICAgWFVuaXF1ZVB0cjxHTFhGQkNvbmZpZz4gdGVt
cChnbFhDaG9vc2VGQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgRGVmYXVsdFNj
cmVlbihYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFi
bGVDb25maWdzKSk7CiAKICAgICAgICAgaWYgKCFudW1BdmFpbGFibGVDb25maWdzIHx8ICF0ZW1w
LmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1BdmFpbGFibGVDb25maWdzOyArK2kpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gc2NvcGVkVmlzdWFsSW5mbyB7IGdsWEdldFZp
c3VhbEZyb21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgdGVtcFtpXSkgfTsK
KyAgICAgICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHNjb3BlZFZpc3VhbEluZm8geyBn
bFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXAu
Z2V0KClbaV0pIH07CiAgICAgICAgICAgICBpZiAoIXNjb3BlZFZpc3VhbEluZm8uZ2V0KCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTE2OCw3ICsxNjksNyBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAKICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIGFueSB2aXN1YWwgc3VwcG9ydGlu
ZyBhbHBoYSwgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUgY29uZmlnLgotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8WFZpc3VhbEluZm8sIFgxMURlbGV0ZXI+IHNjb3BlZFZpc3VhbEluZm8geyBn
bFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXBb
MF0pIH07CisgICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHNjb3BlZFZpc3VhbEluZm8g
eyBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRl
bXBbMF0pIH07CiAKICAgICAgICAgaWYgKChtX2F0dHJpYnV0ZXMgJiBHTFBsYXRmb3JtU3VyZmFj
ZTo6U3VwcG9ydEFscGhhKSAmJiAoc2NvcGVkVmlzdWFsSW5mby0+ZGVwdGggIT0gMzIpKQogICAg
ICAgICAgICAgbV9hdHRyaWJ1dGVzICY9IH5HTFBsYXRmb3JtU3VyZmFjZTo6U3VwcG9ydEFscGhh
OwpAQCAtMTc5LDEzICsxODAsMTMgQEAgcHJpdmF0ZToKICAgICBHTFhGQkNvbmZpZyBmaW5kTWF0
Y2hpbmdDb25maWdXaXRoVmlzdWFsSWQoY29uc3QgaW50IGF0dHJpYnV0ZXNbXSwgaW50IGRlcHRo
LCBWaXN1YWxJRCBpZCkKICAgICB7CiAgICAgICAgIGludCBudW1BdmFpbGFibGVDb25maWdzOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xYRkJDb25maWdbXSwgWDExRGVsZXRlcj4gdGVtcChn
bFhDaG9vc2VGQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgRGVmYXVsdFNjcmVl
bihYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVD
b25maWdzKSk7CisgICAgICAgIFhVbmlxdWVQdHI8R0xYRkJDb25maWc+IHRlbXAoZ2xYQ2hvb3Nl
RkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIERlZmF1bHRTY3JlZW4oWDExSGVs
cGVyOjpuYXRpdmVEaXNwbGF5KCkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncykp
OwogCiAgICAgICAgIGlmICghbnVtQXZhaWxhYmxlQ29uZmlncyB8fCAhdGVtcC5nZXQoKSkKICAg
ICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXZh
aWxhYmxlQ29uZmlnczsgKytpKSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8WFZpc3Vh
bEluZm8sIFgxMURlbGV0ZXI+IHNjb3BlZFZpc3VhbEluZm8geyBnbFhHZXRWaXN1YWxGcm9tRkJD
b25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXBbaV0pIH07CisgICAgICAgICAg
ICBYVW5pcXVlUHRyPFhWaXN1YWxJbmZvPiBzY29wZWRWaXN1YWxJbmZvIHsgZ2xYR2V0VmlzdWFs
RnJvbUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCB0ZW1wW2ldKSB9OwogICAg
ICAgICAgICAgaWYgKCFzY29wZWRWaXN1YWxJbmZvLmdldCgpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAKaW5kZXggYmE0OTNiMC4uNzBlZWFjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L0dMWFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgVVNFKEdM
WCkKIAorI2luY2x1ZGUgIlhVbmlxdWUuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgUEZOR0xYQklORFRFWElNQUdFRVhUUFJPQyBwR2xYQmluZFRleEltYWdlRVhUID0gMDsKQEAg
LTY2LDcgKzY4LDcgQEAgR0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0U3VyZmFjZShj
b25zdCBJbnRTaXplJiBzaXplLCBTdXJmYWNlQXR0cmlidXRlcwogewogICAgIGF0dHJpYnV0ZXMg
fD0gR0xQbGF0Zm9ybVN1cmZhY2U6OkRvdWJsZUJ1ZmZlcmVkOwogICAgIG1fY29uZmlnU2VsZWN0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEdMWENvbmZpZ1NlbGVjdG9yPihhdHRyaWJ1dGVzKTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8WFZpc3VhbEluZm8sIFgxMURlbGV0ZXI+IHZpc0luZm8obV9jb25m
aWdTZWxlY3Rvci0+dmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT5zdXJmYWNlQ29udGV4dENv
bmZpZygpKSk7CisgICAgWFVuaXF1ZTxYVmlzdWFsSW5mbz4gdmlzSW5mbyhtX2NvbmZpZ1NlbGVj
dG9yLT52aXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnN1cmZhY2VDb250ZXh0Q29uZmlnKCkp
KTsKIAogICAgIGlmICghdmlzSW5mby5nZXQoKSkgewogICAgICAgICBkZXN0cm95KCk7CkBAIC0x
NDIsNyArMTQ0LDcgQEAgdm9pZCBHTFhPZmZTY3JlZW5TdXJmYWNlOjppbml0aWFsaXplKFN1cmZh
Y2VBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiB7CiAgICAgbV9jb25maWdTZWxlY3RvciA9IHN0ZDo6
bWFrZV91bmlxdWU8R0xYQ29uZmlnU2VsZWN0b3I+KGF0dHJpYnV0ZXMpOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiB2aXN1YWxJbmZvKG1fY29uZmlnU2Vs
ZWN0b3ItPnZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rvci0+cGl4bWFwQ29udGV4dENvbmZpZygp
KSk7CisgICAgWFVuaXF1ZTxYVmlzdWFsSW5mbz4gdmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9y
LT52aXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnBpeG1hcENvbnRleHRDb25maWcoKSkpOwog
ICAgIFgxMUhlbHBlcjo6Y3JlYXRlUGl4bWFwKCZtX3BpeG1hcCwgKnZpc3VhbEluZm8uZ2V0KCkp
OwogCiAgICAgaWYgKCFtX3BpeG1hcCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmNwcAppbmRleCA4MDEw
YjU3Li4zNjhiYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIlgxMUhlbHBlci5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5WDExLmgi
CisjaW5jbHVkZSAiWFVuaXF1ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIyMyw3
ICsyMjQsNyBAQCB2b2lkIFgxMUhlbHBlcjo6Y3JlYXRlT2ZmU2NyZWVuV2luZG93KHVpbnQzMl90
KiBoYW5kbGVJZCwgY29uc3QgRUdMaW50IGlkLCBib29sCiAgICAgbWVtc2V0KCZ2aXN1YWxJbmZv
VGVtcGxhdGUsIDAsIHNpemVvZihYVmlzdWFsSW5mbykpOwogICAgIHZpc3VhbEluZm9UZW1wbGF0
ZS52aXN1YWxpZCA9IHZpc3VhbElkOwogICAgIGludCBtYXRjaGluZ0NvdW50ID0gMDsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8WFZpc3VhbEluZm8sIFgxMURlbGV0ZXI+IG1hdGNoaW5nVmlzdWFscyhY
R2V0VmlzdWFsSW5mbyhuYXRpdmVEaXNwbGF5KCksIFZpc3VhbElETWFzaywgJnZpc3VhbEluZm9U
ZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpKTsKKyAgICBYVW5pcXVlPFhWaXN1YWxJbmZvPiBtYXRj
aGluZ1Zpc3VhbHMoWEdldFZpc3VhbEluZm8obmF0aXZlRGlzcGxheSgpLCBWaXN1YWxJRE1hc2ss
ICZ2aXN1YWxJbmZvVGVtcGxhdGUsICZtYXRjaGluZ0NvdW50KSk7CiAgICAgWFZpc3VhbEluZm8q
IGZvdW5kVmlzdWFsID0gMDsKIAogICAgIGlmIChtYXRjaGluZ1Zpc3VhbHMpIHsKQEAgLTI2MCw3
ICsyNjEsNyBAQCB2b2lkIFgxMUhlbHBlcjo6Y3JlYXRlUGl4bWFwKFBpeG1hcCogaGFuZGxlSWQs
IGNvbnN0IEVHTGludCBpZCwgYm9vbCBoYXNBbHBoYSwgYwogICAgIG1lbXNldCgmdmlzdWFsSW5m
b1RlbXBsYXRlLCAwLCBzaXplb2YoWFZpc3VhbEluZm8pKTsKICAgICB2aXN1YWxJbmZvVGVtcGxh
dGUudmlzdWFsaWQgPSB2aXN1YWxJZDsKICAgICBpbnQgbWF0Y2hpbmdDb3VudCA9IDA7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiBtYXRjaGluZ1Zpc3VhbHMo
WEdldFZpc3VhbEluZm8obmF0aXZlRGlzcGxheSgpLCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZv
VGVtcGxhdGUsICZtYXRjaGluZ0NvdW50KSk7CisgICAgWFVuaXF1ZTxYVmlzdWFsSW5mbz4gbWF0
Y2hpbmdWaXN1YWxzKFhHZXRWaXN1YWxJbmZvKG5hdGl2ZURpc3BsYXkoKSwgVmlzdWFsSURNYXNr
LCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCkpOwogICAgIFhWaXN1YWxJbmZv
KiBmb3VuZFZpc3VhbCA9IDA7CiAgICAgaW50IHJlcXVpcmVkRGVwdGggPSBoYXNBbHBoYSA/IDMy
IDogMjQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2dseC9YMTFIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2dseC9YMTFIZWxwZXIuaAppbmRleCAxMDNmMDAxLi43ZjVlNGMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVs
cGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L1gxMUhlbHBlci5oCkBAIC00MiwxNSArNDIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFgxMURlbGV0ZXIgewotcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZv
aWQgb3BlcmF0b3IoKShUKiByZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIGlmIChyZXNvdXJjZSkK
LSAgICAgICAgICAgIFhGcmVlKHJlc291cmNlKTsKLSAgICB9Ci19OwotCiBjbGFzcyBYMTFIZWxw
ZXIgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVBpeG1hcChQaXhtYXAqLCBjb25z
dCBYVmlzdWFsSW5mbyYsIGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgxLCAxKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJlMzQyOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlLmNwcApAQCAtMCwwICsx
LDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiWFVuaXF1ZS5oIgorCisjaWYgUExBVEZPUk0oWDExKQor
I2luY2x1ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5o
PgorCisjaWYgVVNFKEdMWCkKKyNpbmNsdWRlIDxHTC9nbHguaD4KKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNl
OjpDb2xvcm1hcD46OmRlbGV0ZVhSZXNvdXJjZShsb25nIHVuc2lnbmVkIHJlc291cmNlKQorewor
ICAgIGlmIChyZXNvdXJjZSkKKyAgICAgICAgWEZyZWVDb2xvcm1hcChkb3duY2FzdDxQbGF0Zm9y
bURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwg
cmVzb3VyY2UpOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3Vy
Y2U6OkRhbWFnZT46OmRlbGV0ZVhSZXNvdXJjZShsb25nIHVuc2lnbmVkIHJlc291cmNlKQorewor
ICAgIGlmIChyZXNvdXJjZSkKKyAgICAgICAgWERhbWFnZURlc3Ryb3koZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCks
IHJlc291cmNlKTsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8WFJlc291
cmNlOjpQaXhtYXA+OjpkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKK3sK
KyAgICBpZiAocmVzb3VyY2UpCisgICAgICAgIFhGcmVlUGl4bWFwKGRvd25jYXN0PFBsYXRmb3Jt
RGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBy
ZXNvdXJjZSk7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJj
ZTo6V2luZG93Pjo6ZGVsZXRlWFJlc291cmNlKGxvbmcgdW5zaWduZWQgcmVzb3VyY2UpCit7Cisg
ICAgaWYgKHJlc291cmNlKQorICAgICAgICBYRGVzdHJveVdpbmRvdyhkb3duY2FzdDxQbGF0Zm9y
bURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwg
cmVzb3VyY2UpOworfQorCisjaWYgVVNFKEdMWCkKK3RlbXBsYXRlPD4gdm9pZCBYVW5pcXVlUmVz
b3VyY2U8WFJlc291cmNlOjpHTFhQYnVmZmVyPjo6ZGVsZXRlWFJlc291cmNlKGxvbmcgdW5zaWdu
ZWQgcmVzb3VyY2UpCit7CisgICAgaWYgKHJlc291cmNlKQorICAgICAgICBnbFhEZXN0cm95UGJ1
ZmZlcihkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheSgpKS5uYXRpdmUoKSwgcmVzb3VyY2UpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgWFVu
aXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGl4bWFwPjo6ZGVsZXRlWFJlc291cmNlKGxvbmcg
dW5zaWduZWQgcmVzb3VyY2UpCit7CisgICAgaWYgKHJlc291cmNlKQorICAgICAgICBnbFhEZXN0
cm95R0xYUGl4bWFwKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCByZXNvdXJjZSk7Cit9CisjZW5kaWYgLy8gVVNF
KEdMWCkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUExBVEZPUk0oWDEx
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlx
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY5YTVhZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlLmgKQEAgLTAs
MCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTAorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgWFVuaXF1ZV9oCisjZGVmaW5lIFhVbmlxdWVfaAorCisjaWYgUExBVEZPUk0oWDExKQor
I2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheVgxMS5oIgorI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgor
CisjaWYgVVNFKEdMWCkKK3R5cGVkZWYgc3RydWN0IF9fR0xYY29udGV4dFJlYyogR0xYQ29udGV4
dDsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBHTFhQYnVmZmVyOwordHlwZWRlZiB1bnNpZ25lZCBs
b25nIEdMWFBpeG1hcDsKKworZXh0ZXJuICJDIiB2b2lkIGdsWERlc3Ryb3lDb250ZXh0KERpc3Bs
YXkqLCBHTFhDb250ZXh0KTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgWFB0ckRlbGV0ZXIgeworICAgIHZvaWQgb3BlcmF0b3Io
KShUKiBwdHIpIGNvbnN0IHsgWEZyZWUocHRyKTsgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK3VzaW5nIFhVbmlxdWVQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VCwgWFB0ckRlbGV0ZXI8VD4+
OworCisjZGVmaW5lIERFRklORV9YUFRSX0RFTEVURVIodHlwZU5hbWUsIGRlbGV0ZXJGdW5jKSBc
CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgWFB0ckRlbGV0ZXI8dHlwZU5hbWU+IFwKKyAgICB7IFwK
KyAgICAgICAgdm9pZCBvcGVyYXRvcigpICh0eXBlTmFtZSogcHRyKSBjb25zdCBcCisgICAgICAg
IHsgXAorICAgICAgICAgICAgaWYgKHB0cikgXAorICAgICAgICAgICAgICAgIGRlbGV0ZXJGdW5j
KHB0cik7IFwKKyAgICAgICAgfSBcCisgICAgfTsKKworI2RlZmluZSBERUZJTkVfWFBUUl9ERUxF
VEVSX1dJVEhfRElTUExBWSh0eXBlTmFtZSwgZGVsZXRlckZ1bmMpIFwKKyAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBYUHRyRGVsZXRlcjx0eXBlTmFtZT4gXAorICAgIHsgXAorICAgICAgICB2b2lkIG9w
ZXJhdG9yKCkgKHR5cGVOYW1lKiBwdHIpIGNvbnN0IFwKKyAgICAgICAgeyBcCisgICAgICAgICAg
ICBpZiAocHRyKSBcCisgICAgICAgICAgICAgICAgZGVsZXRlckZ1bmMoZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCks
IHB0cik7IFwKKyAgICAgICAgfSBcCisgICAgfTsKKworCitERUZJTkVfWFBUUl9ERUxFVEVSKFhJ
bWFnZSwgWERlc3Ryb3lJbWFnZSkKK0RFRklORV9YUFRSX0RFTEVURVJfV0lUSF9ESVNQTEFZKF9Y
R0MsIFhGcmVlR0MpCisKKyNpZiBVU0UoR0xYKQorREVGSU5FX1hQVFJfREVMRVRFUl9XSVRIX0RJ
U1BMQVkoX19HTFhjb250ZXh0UmVjLCBnbFhEZXN0cm95Q29udGV4dCkKKyNlbmRpZgorCisjdW5k
ZWYgREVGSU5FX1hQVFJfREVMRVRFUgorI3VuZGVmIERFRklORV9YUFRSX0RFTEVURVJfV0lUSF9E
SVNQTEFZCisKK2VudW0gY2xhc3MgWFJlc291cmNlIHsKKyAgICBDb2xvcm1hcCwKKyAgICBEYW1h
Z2UsCisgICAgUGl4bWFwLAorICAgIFdpbmRvdywKKyNpZiBVU0UoR0xYKQorICAgIEdMWFBidWZm
ZXIsCisgICAgR0xYUGl4bWFwLAorI2VuZGlmCit9OworCit0ZW1wbGF0ZSA8WFJlc291cmNlIFQ+
IGNsYXNzIFhVbmlxdWVSZXNvdXJjZSB7CitwdWJsaWM6CisgICAgWFVuaXF1ZVJlc291cmNlKCkK
KyAgICAgICAgOiBtX3Jlc291cmNlKDApCisgICAgeworICAgIH0KKworICAgIFhVbmlxdWVSZXNv
dXJjZShsb25nIHVuc2lnbmVkIHJlc291cmNlKQorICAgICAgICA6IG1fcmVzb3VyY2UocmVzb3Vy
Y2UpCisgICAgeworICAgIH0KKworICAgIFhVbmlxdWVSZXNvdXJjZShYVW5pcXVlUmVzb3VyY2Um
JiB1bmlxdWVSZXNvdXJjZSkKKyAgICAgICAgOiBtX3Jlc291cmNlKHVuaXF1ZVJlc291cmNlLnJl
bGVhc2UoKSkKKyAgICB7CisgICAgfQorCisgICAgWFVuaXF1ZVJlc291cmNlJiBvcGVyYXRvcj0o
WFVuaXF1ZVJlc291cmNlJiYgdW5pcXVlUmVzb3VyY2UpCisgICAgeworICAgICAgICByZXNldCh1
bmlxdWVSZXNvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
CisgICAgflhVbmlxdWVSZXNvdXJjZSgpCisgICAgeworICAgICAgICByZXNldCgpOworICAgIH0K
KworICAgIGxvbmcgdW5zaWduZWQgZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZTsgfQor
ICAgIGxvbmcgdW5zaWduZWQgcmVsZWFzZSgpIHsgbG9uZyB1bnNpZ25lZCByZXNvdXJjZSA9IG1f
cmVzb3VyY2U7IG1fcmVzb3VyY2UgPSAwOyByZXR1cm4gcmVzb3VyY2U7IH0KKworICAgIHZvaWQg
cmVzZXQobG9uZyB1bnNpZ25lZCByZXNvdXJjZSA9IDApCisgICAgeworICAgICAgICBzdGQ6OnN3
YXAobV9yZXNvdXJjZSwgcmVzb3VyY2UpOworICAgICAgICBkZWxldGVYUmVzb3VyY2UocmVzb3Vy
Y2UpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcmVz
b3VyY2U7IH0KKworICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGlj
aXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAg
ICB0eXBlZGVmIHZvaWQqIChYVW5pcXVlUmVzb3VyY2U6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsK
KyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKigpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9yZXNvdXJjZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZpZWRCb29sVHlw
ZSo+KDEpIDogMDsKKyAgICB9CisKKyAgICBYVW5pcXVlUmVzb3VyY2UoY29uc3QgWFVuaXF1ZVJl
c291cmNlJikgPSBkZWxldGU7CisgICAgWFVuaXF1ZVJlc291cmNlJiBvcGVyYXRvcj0oY29uc3Qg
WFVuaXF1ZVJlc291cmNlJikgPSBkZWxldGU7Citwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGRl
bGV0ZVhSZXNvdXJjZShsb25nIHVuc2lnbmVkIHJlc291cmNlKTsKKworICAgIGxvbmcgdW5zaWdu
ZWQgbV9yZXNvdXJjZTsKK307CisKK3R5cGVkZWYgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6
Q29sb3JtYXA+IFhVbmlxdWVDb2xvcm1hcDsKK3R5cGVkZWYgWFVuaXF1ZVJlc291cmNlPFhSZXNv
dXJjZTo6RGFtYWdlPiBYVW5pcXVlRGFtYWdlOwordHlwZWRlZiBYVW5pcXVlUmVzb3VyY2U8WFJl
c291cmNlOjpQaXhtYXA+IFhVbmlxdWVQaXhtYXA7Cit0eXBlZGVmIFhVbmlxdWVSZXNvdXJjZTxY
UmVzb3VyY2U6OldpbmRvdz4gWFVuaXF1ZVdpbmRvdzsKKyNpZiBVU0UoR0xYKQordHlwZWRlZiBY
VW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpHTFhQYnVmZmVyPiBYVW5pcXVlR0xYUGJ1ZmZlcjsK
K3R5cGVkZWYgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGl4bWFwPiBYVW5pcXVlR0xY
UGl4bWFwOworI2VuZGlmCisKKy8vIEdpdmUgYSBuYW1lIGFsc28gdG8gdGhlc2UgWFVuaXF1ZVB0
ciB0byBhdm9pZCBoYXZpbmcgdG8gdXNlIHRoZSBpbnRlcm5hbCBzdHJ1Y3QgbmFtZXMgKF9YR0Ms
IF9fR0xYY29udGV4dFJlYywgLi4uKS4KK3R5cGVkZWYgWFVuaXF1ZVB0cjxfWEdDPiBYVW5pcXVl
R0M7CisjaWYgVVNFKEdMWCkKK3R5cGVkZWYgWFVuaXF1ZVB0cjxfX0dMWGNvbnRleHRSZWM+IFhV
bmlxdWVHTFhDb250ZXh0OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFBMQVRGT1JNKFgxMSkKKworI2VuZGlmIC8vIFhVbmlxdWVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGI3MTkzNzMuLjU5OTFhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNS0wNS0w
MiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W1gxMV0gQWRkIFhVbmlxdWVQdHIgYW5kIFhVbmlxdWVSZXNvdXJjZSB0byBhdXRvbWF0aWNhbGx5
IGZyZWUgWCByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVzZSBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8gZnJlZSBYIHJl
c291cmNlcy4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBBZGQgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExIGRpcgorICAgICAgICB0byB0aGUgaW5jbHVkZSBkaXIg
bGlzdC4KKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogVUlQ
cm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmFj
a2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5kKTogRG8gbm90IHBhc3MgdGhlIGRpc3BsYXkgdG8KKyAg
ICAgICAgdGhlIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMSBjb25zdHJ1Y3Rvci4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6
On5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUpOgorICAgICAgICAoV2ViS2l0OjpSZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdzo6Y2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6c3VyZmFjZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oOgorICAgICAgICAo
V2ViS2l0OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6d2luZG93SUQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6ZVdp
bmRvd2xlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1EZXN0
cm95KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWlu
dCk6CisKIDIwMTUtMDUtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtTT1VQXSBOZXR3b3JrIENhY2hlOiBJbXBsZW1lbnQgU2hhcmVhYmxl
UmVzb3VyY2UgZm9yIFNvdXAgYW5kIGVuYWJsZSBpdCBmb3IgR1RLIHBsYXRmb3JtCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCmluZGV4IDVhMDJlYTIuLmVmZWZlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC0yMjYsNiArMjI2LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURF
X0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
IgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlIgorICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9ncmFwaGljcy94MTEiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25l
dHdvcmsvc291cCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC9lbmNoYW50Igog
ICAgICIke1dFQktJVDJfRElSfS9OZXR3b3JrUHJvY2Vzcy9lZmwiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RL
LmNtYWtlCmluZGV4IGQyNzQwYjYuLmU0ODY4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
CkBAIC00NTgsNiArNDU4LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9S
SUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2d0ayIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cy94MTEiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvc291cCIKICAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC9lbmNoYW50IgogICAgICIke1dFQktJVDJfRElS
fS9EYXRhYmFzZVByb2Nlc3MvdW5peCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IGJkODBiMzcuLjJmYjMwYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNh
aXJvLmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQoKQogICAgICAgICBHZGtWaXN1
YWwqIHZpc3VhbCA9IGd0a193aWRnZXRfZ2V0X3Zpc3VhbChtX3dlYlBhZ2VQcm94eS52aWV3V2lk
Z2V0KCkpOwogICAgICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGdka192aXN1YWxfZ2V0X3NjcmVl
bih2aXN1YWwpOwogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihz
aGFyZWREaXNwbGF5KS5uYXRpdmUoKSA9PSBHREtfU0NSRUVOX1hESVNQTEFZKHNjcmVlbikpOwot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9Y
MTE+KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oc2hhcmVkRGlzcGxheSkubmF0aXZlKCks
IEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikpLAorICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE+
KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikpLAogICAg
ICAgICAgICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIGdka192aXN1YWxfZ2V0X2RlcHRo
KHZpc3VhbCksIG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3cuY3BwCmluZGV4IDQ0NGY4NjQuLjNmYmEzMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3cuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBVU0UoUkVESVJFQ1RFRF9YQ09NUE9T
SVRFX1dJTkRPVykKIAorI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjaW5jbHVkZSA8WDExL2V4dGVu
c2lvbnMvWGNvbXBvc2l0ZS5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2UuaD4K
ICNpbmNsdWRlIDxjYWlyby14bGliLmg+CkBAIC0xMzUsMjEgKzEzNiwxOCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93OjpjcmVhdGUoRwogCiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3coR2RrV2luZG93KiBwYXJlbnRXaW5kb3csIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiBkYW1hZ2VOb3RpZnkpCiAgICAgOiBtX2Rpc3BsYXkoR0RLX0RJU1BMQVlfWERJU1BMQVko
Z2RrX3dpbmRvd19nZXRfZGlzcGxheShwYXJlbnRXaW5kb3cpKSkKLSAgICAsIG1fd2luZG93KDAp
Ci0gICAgLCBtX3BhcmVudFdpbmRvdygwKQotICAgICwgbV9waXhtYXAoMCkKLSAgICAsIG1fZGFt
YWdlKDApCiAgICAgLCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemUoZmFsc2UpCiB7CisgICAg
QVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFy
ZWREaXNwbGF5KCkpLm5hdGl2ZSgpID09IG1fZGlzcGxheSk7CiAgICAgU2NyZWVuKiBzY3JlZW4g
PSBEZWZhdWx0U2NyZWVuT2ZEaXNwbGF5KG1fZGlzcGxheSk7CiAKICAgICBHZGtWaXN1YWwqIHZp
c3VhbCA9IGdka193aW5kb3dfZ2V0X3Zpc3VhbChwYXJlbnRXaW5kb3cpOwotICAgIENvbG9ybWFw
IGNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFwKG1fZGlzcGxheSwgUm9vdFdpbmRvd09mU2NyZWVu
KHNjcmVlbiksIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBBbGxvY05vbmUpOworICAgIFhV
bmlxdWVDb2xvcm1hcCBjb2xvcm1hcChYQ3JlYXRlQ29sb3JtYXAobV9kaXNwbGF5LCBSb290V2lu
ZG93T2ZTY3JlZW4oc2NyZWVuKSwgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIEFsbG9jTm9u
ZSkpOwogCiAgICAgLy8gVGhpcyBpcyBiYXNlZCBvbiBjb2RlIGZyb20gQ2hyb21pdW06IHNyYy9j
b250ZW50L2NvbW1vbi9ncHUvaW1hZ2VfdHJhbnNwb3J0X3N1cmZhY2VfbGludXguY2MKICAgICBY
U2V0V2luZG93QXR0cmlidXRlcyB3aW5kb3dBdHRyaWJ1dGVzOwogICAgIHdpbmRvd0F0dHJpYnV0
ZXMub3ZlcnJpZGVfcmVkaXJlY3QgPSBUcnVlOwotICAgIHdpbmRvd0F0dHJpYnV0ZXMuY29sb3Jt
YXAgPSBjb2xvcm1hcDsKKyAgICB3aW5kb3dBdHRyaWJ1dGVzLmNvbG9ybWFwID0gY29sb3JtYXAu
Z2V0KCk7CiAKICAgICAvLyBDV0JvcmRlclBpeGVsIG11c3QgYmUgcHJlc2VudCB3aGVuIHRoZSBk
ZXB0aCBkb2Vzbid0IG1hdGNoIHRoZSBwYXJlbnQncyBvbmUuCiAgICAgLy8gU2VlIGh0dHA6Ly9j
Z2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvdHJlZS9kaXgvd2luZG93LmM/aWQ9eG9y
Zy1zZXJ2ZXItMS4xNi4wI243MDMuCkBAIC0xNjQsMTMgKzE2MiwxMyBAQCBSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coR2RrV2luZG93KiBwYXJl
bnRXaW5kb3csCiAgICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLAogICAgICAgICBD
V092ZXJyaWRlUmVkaXJlY3QgfCBDV0NvbG9ybWFwIHwgQ1dCb3JkZXJQaXhlbCwKICAgICAgICAg
JndpbmRvd0F0dHJpYnV0ZXMpOwotICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3BhcmVudFdp
bmRvdyk7CisgICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fcGFyZW50V2luZG93LmdldCgpKTsK
IAogICAgIHdpbmRvd0F0dHJpYnV0ZXMuZXZlbnRfbWFzayA9IFN0cnVjdHVyZU5vdGlmeU1hc2s7
CiAgICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IEZhbHNlOwogICAgIC8v
IENyZWF0ZSB0aGUgd2luZG93IG9mIGF0IGxhc3QgMXgxIHNpbmNlIFggZG9lc24ndCBhbGxvdyB0
byBjcmVhdGUgZW1wdHkgd2luZG93cy4KICAgICBtX3dpbmRvdyA9IFhDcmVhdGVXaW5kb3cobV9k
aXNwbGF5LAotICAgICAgICBtX3BhcmVudFdpbmRvdywKKyAgICAgICAgbV9wYXJlbnRXaW5kb3cu
Z2V0KCksCiAgICAgICAgIDAsIDAsCiAgICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS53aWR0aCgp
KSwKICAgICAgICAgc3RkOjptYXgoMSwgbV9zaXplLmhlaWdodCgpKSwKQEAgLTE4MCwyMSArMTc4
LDE5IEBAIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdyhHZGtXaW5kb3cqIHBhcmVudFdpbmRvdywKICAgICAgICAgQ29weUZyb21QYXJlbnQsCiAg
ICAgICAgIENXRXZlbnRNYXNrLAogICAgICAgICAmd2luZG93QXR0cmlidXRlcyk7Ci0gICAgWE1h
cFdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93KTsKKyAgICBYTWFwV2luZG93KG1fZGlzcGxheSwg
bV93aW5kb3cuZ2V0KCkpOwogCi0gICAgWEZyZWVDb2xvcm1hcChtX2Rpc3BsYXksIGNvbG9ybWFw
KTsKLQotICAgIHhEYW1hZ2VOb3RpZmllcigpLmFkZChtX3dpbmRvdywgV1RGOjptb3ZlKGRhbWFn
ZU5vdGlmeSkpOworICAgIHhEYW1hZ2VOb3RpZmllcigpLmFkZChtX3dpbmRvdy5nZXQoKSwgV1RG
Ojptb3ZlKGRhbWFnZU5vdGlmeSkpOwogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgWEV2ZW50
IGV2ZW50OwotICAgICAgICBYV2luZG93RXZlbnQobV9kaXNwbGF5LCBtX3dpbmRvdywgU3RydWN0
dXJlTm90aWZ5TWFzaywgJmV2ZW50KTsKLSAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT0gTWFwTm90
aWZ5ICYmIGV2ZW50LnhtYXAud2luZG93ID09IG1fd2luZG93KQorICAgICAgICBYV2luZG93RXZl
bnQobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgU3RydWN0dXJlTm90aWZ5TWFzaywgJmV2ZW50
KTsKKyAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT0gTWFwTm90aWZ5ICYmIGV2ZW50LnhtYXAud2lu
ZG93ID09IG1fd2luZG93LmdldCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIFhT
ZWxlY3RJbnB1dChtX2Rpc3BsYXksIG1fd2luZG93LCBOb0V2ZW50TWFzayk7Ci0gICAgWENvbXBv
c2l0ZVJlZGlyZWN0V2luZG93KG1fZGlzcGxheSwgbV93aW5kb3csIENvbXBvc2l0ZVJlZGlyZWN0
TWFudWFsKTsKLSAgICBtX2RhbWFnZSA9IFhEYW1hZ2VDcmVhdGUobV9kaXNwbGF5LCBtX3dpbmRv
dywgWERhbWFnZVJlcG9ydE5vbkVtcHR5KTsKKyAgICBYU2VsZWN0SW5wdXQobV9kaXNwbGF5LCBt
X3dpbmRvdy5nZXQoKSwgTm9FdmVudE1hc2spOworICAgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRv
dyhtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBDb21wb3NpdGVSZWRpcmVjdE1hbnVhbCk7Cisg
ICAgbV9kYW1hZ2UgPSBYRGFtYWdlQ3JlYXRlKG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIFhE
YW1hZ2VSZXBvcnROb25FbXB0eSk7CiB9CiAKIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coKQpAQCAtMjA0LDEyICsyMDAsMTIgQEAgUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3c6On5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygpCiAgICAg
QVNTRVJUKG1fd2luZG93KTsKICAgICBBU1NFUlQobV9wYXJlbnRXaW5kb3cpOwogCi0gICAgeERh
bWFnZU5vdGlmaWVyKCkucmVtb3ZlKG1fd2luZG93KTsKKyAgICB4RGFtYWdlTm90aWZpZXIoKS5y
ZW1vdmUobV93aW5kb3cuZ2V0KCkpOwogCi0gICAgWERhbWFnZURlc3Ryb3kobV9kaXNwbGF5LCBt
X2RhbWFnZSk7Ci0gICAgWERlc3Ryb3lXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdyk7Ci0gICAg
WERlc3Ryb3lXaW5kb3cobV9kaXNwbGF5LCBtX3BhcmVudFdpbmRvdyk7Ci0gICAgY2xlYW51cFBp
eG1hcEFuZFBpeG1hcFN1cmZhY2UoKTsKKyAgICAvLyBFeHBsaWNpdCByZXNldCB0aGVzZSBiZWNh
dXNlIHdlIG5lZWQgdG8gZW5zdXJlIGl0IGhhcHBlbnMgaW4gdGhpcyBvcmRlci4KKyAgICBtX2Rh
bWFnZS5yZXNldCgpOworICAgIG1fd2luZG93LnJlc2V0KCk7CisgICAgbV9wYXJlbnRXaW5kb3cu
cmVzZXQoKTsKIH0KIAogdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVzaXplKGNv
bnN0IEludFNpemUmIHNpemUpCkBAIC0yMTgsNyArMjE0LDcgQEAgdm9pZCBSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdzo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIFJlc2l6ZSB0aGUgd2luZG93IHRvIGF0IGxhc3QgMXgxIHNpbmNlIFggZG9l
c24ndCBhbGxvdyB0byBjcmVhdGUgZW1wdHkgd2luZG93cy4KLSAgICBYUmVzaXplV2luZG93KG1f
ZGlzcGxheSwgbV93aW5kb3csIHN0ZDo6bWF4KDEsIHNpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEs
IHNpemUuaGVpZ2h0KCkpKTsKKyAgICBYUmVzaXplV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cu
Z2V0KCksIHN0ZDo6bWF4KDEsIHNpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIHNpemUuaGVpZ2h0
KCkpKTsKICAgICBYRmx1c2gobV9kaXNwbGF5KTsKIAogICAgIG1fc2l6ZSA9IHNpemU7CkBAIC0y
MzIsOSArMjI4LDggQEAgdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y2xlYW51cFBp
eG1hcEFuZFBpeG1hcFN1cmZhY2UoKQogICAgIGlmICghbV9waXhtYXApCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbV9waXhtYXApOwotICAgIG1fcGl4bWFw
ID0gMDsKICAgICBtX3N1cmZhY2UgPSBudWxscHRyOworICAgIG1fcGl4bWFwLnJlc2V0KCk7CiB9
CiAKIGNhaXJvX3N1cmZhY2VfdCogUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnN1cmZhY2Uo
KQpAQCAtMjQ3LDIwICsyNDIsMTkgQEAgY2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdzo6c3VyZmFjZSgpCiAKICAgICBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemUg
PSBmYWxzZTsKIAotICAgIFBpeG1hcCBuZXdQaXhtYXAgPSBYQ29tcG9zaXRlTmFtZVdpbmRvd1Bp
eG1hcChtX2Rpc3BsYXksIG1fd2luZG93KTsKKyAgICBYVW5pcXVlUGl4bWFwIG5ld1BpeG1hcChY
Q29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpKSk7CiAg
ICAgaWYgKCFuZXdQaXhtYXApIHsKICAgICAgICAgY2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1cmZh
Y2UoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgWFdpbmRvd0F0dHJp
YnV0ZXMgd2luZG93QXR0cmlidXRlczsKLSAgICBpZiAoIVhHZXRXaW5kb3dBdHRyaWJ1dGVzKG1f
ZGlzcGxheSwgbV93aW5kb3csICZ3aW5kb3dBdHRyaWJ1dGVzKSkgeworICAgIGlmICghWEdldFdp
bmRvd0F0dHJpYnV0ZXMobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgJndpbmRvd0F0dHJpYnV0
ZXMpKSB7CiAgICAgICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7Ci0gICAgICAg
IFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbmV3UGl4bWFwKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmV3U3VyZmFjZSA9IGFk
b3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9kaXNwbGF5LCBuZXdQaXhtYXAsIHdp
bmRvd0F0dHJpYnV0ZXMudmlzdWFsLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7
CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmV3U3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJv
X3hsaWJfc3VyZmFjZV9jcmVhdGUobV9kaXNwbGF5LCBuZXdQaXhtYXAuZ2V0KCksIHdpbmRvd0F0
dHJpYnV0ZXMudmlzdWFsLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7CiAKICAg
ICAvLyBOdmlkaWEgZHJpdmVycyBzZWVtIHRvIHByZXBhcmUgdGhlaXIgcmVkaXJlY3RlZCB3aW5k
b3cgcGl4bWFwIGFzeW5jaHJvbm91c2x5LCBzbyBmb3IgYSBmZXcgZnJhY3Rpb25zCiAgICAgLy8g
b2YgYSBzZWNvbmQgYWZ0ZXIgZWFjaCByZXNpemUsIHdoaWxlIGRvaW5nIGNvbnRpbnVvdXMgcmVz
aXppbmcgKHdoaWNoIGNvbnN0YW50bHkgZGVzdHJveXMgYW5kIGNyZWF0ZXMKQEAgLTI3NSw3ICsy
NjksNyBAQCBjYWlyb19zdXJmYWNlX3QqIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpzdXJm
YWNlKCkKICAgICB9CiAKICAgICBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgpOwotICAg
IG1fcGl4bWFwID0gbmV3UGl4bWFwOworICAgIG1fcGl4bWFwID0gV1RGOjptb3ZlKG5ld1BpeG1h
cCk7CiAgICAgbV9zdXJmYWNlID0gbmV3U3VyZmFjZTsKICAgICByZXR1cm4gbV9zdXJmYWNlLmdl
dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCmluZGV4IDNhYTRmZjUuLjU0ZjNmN2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdy5oCkBAIC0zMSwxMSArMzEsMTIgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvSW50
U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRlIDxYMTEv
WGxpYi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvWFVuaXF1ZS5oPgogI2luY2x1ZGUgPGZ1bmN0aW9u
YWw+CiAKIHR5cGVkZWYgc3RydWN0IF9HZGtXaW5kb3cgR2RrV2luZG93OwogdHlwZWRlZiB1bnNp
Z25lZCBsb25nIERhbWFnZTsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBXaW5kb3c7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCkBAIC00NCw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBjcmVhdGUoR2RrV2luZG93
Kiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRhbWFnZU5vdGlmeSk7CiAgICAgflJlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93KCk7CiAKLSAgICBXaW5kb3cgd2luZG93SUQoKSBjb25zdCB7IHJldHVy
biBtX3dpbmRvdzsgfQorICAgIFdpbmRvdyB3aW5kb3dJRCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lu
ZG93LmdldCgpOyB9CiAgICAgdm9pZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwog
ICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSgpOwogCkBAIC01NCwxMCArNTUsMTAgQEAgcHJp
dmF0ZToKIAogICAgIERpc3BsYXkqIG1fZGlzcGxheTsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1f
c2l6ZTsKLSAgICBXaW5kb3cgbV93aW5kb3c7Ci0gICAgV2luZG93IG1fcGFyZW50V2luZG93Owot
ICAgIFBpeG1hcCBtX3BpeG1hcDsKLSAgICBEYW1hZ2UgbV9kYW1hZ2U7CisgICAgV2ViQ29yZTo6
WFVuaXF1ZVdpbmRvdyBtX3dpbmRvdzsKKyAgICBXZWJDb3JlOjpYVW5pcXVlV2luZG93IG1fcGFy
ZW50V2luZG93OworICAgIFdlYkNvcmU6OlhVbmlxdWVQaXhtYXAgbV9waXhtYXA7CisgICAgV2Vi
Q29yZTo6WFVuaXF1ZURhbWFnZSBtX2RhbWFnZTsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBtX3N1cmZhY2U7CiAgICAgYm9vbCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemU7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCBiM2M4M2JkLi41ZDIyNjA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaApAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0
LmgiCiAjZW5kaWYKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorI2luY2x1ZGUgPFdl
YkNvcmUvWFVuaXF1ZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1h
Y2hTZW5kUmlnaHQ7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwpAQCAtMzg3LDcgKzM5MSw3IEBAIHBy
aXZhdGU6CiAgICAgTlBfQ0dDb250ZXh0IG1fbnBDR0NvbnRleHQ7CiAjZW5kaWYKICNlbGlmIFBM
VUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgIFBpeG1hcCBtX2RyYXdhYmxlOworICAgIFdlYkNv
cmU6OlhVbmlxdWVQaXhtYXAgbV9kcmF3YWJsZTsKICAgICBEaXNwbGF5KiBtX3BsdWdpbkRpc3Bs
YXk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEd0a1dpZGdldCogbV9wbGF0Zm9ybVBsdWdpbldp
ZGdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKaW5kZXggMzdmNDc5
My4uMjM3MWYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtRGlzcGxheVgxMS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvWFVuaXF1ZS5oPgogCiAjaWYgUExB
VEZPUk0oR1RLKQogI2luY2x1ZGUgPGd0ay9ndGsuaD4KQEAgLTE3NSwxMiArMTc2LDEwIEBAIGJv
b2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dsZXNzKCkKICAg
ICB2aXN1YWxUZW1wbGF0ZS5kZXB0aCA9IGRlcHRoOwogICAgIHZpc3VhbFRlbXBsYXRlLmNfY2xh
c3MgPSBUcnVlQ29sb3I7CiAgICAgaW50IG51bU1hdGNoaW5nOwotICAgIFhWaXN1YWxJbmZvKiB2
aXN1YWxJbmZvID0gWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsU2NyZWVuTWFzayB8IFZp
c3VhbERlcHRoTWFzayB8IFZpc3VhbENsYXNzTWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZ2aXN1YWxUZW1wbGF0ZSwgJm51bU1hdGNoaW5nKTsKKyAg
ICBYVW5pcXVlUHRyPFhWaXN1YWxJbmZvPiB2aXN1YWxJbmZvKFhHZXRWaXN1YWxJbmZvKGRpc3Bs
YXksIFZpc3VhbFNjcmVlbk1hc2sgfCBWaXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01hc2ss
ICZ2aXN1YWxUZW1wbGF0ZSwgJm51bU1hdGNoaW5nKSk7CiAgICAgQVNTRVJUKHZpc3VhbEluZm8p
OwotICAgIFZpc3VhbCogdmlzdWFsID0gdmlzdWFsSW5mb1swXS52aXN1YWw7CisgICAgVmlzdWFs
KiB2aXN1YWwgPSB2aXN1YWxJbmZvLmdldCgpWzBdLnZpc3VhbDsKICAgICBBU1NFUlQodmlzdWFs
KTsKLSAgICBYRnJlZSh2aXN1YWxJbmZvKTsKIAogICAgIGNhbGxiYWNrU3RydWN0LT52aXN1YWwg
PSB2aXN1YWw7CiAgICAgY2FsbGJhY2tTdHJ1Y3QtPmNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFw
KGRpc3BsYXksIHJvb3RXaW5kb3dJRCgpLCB2aXN1YWwsIEFsbG9jTm9uZSk7CkBAIC0yMzIsMTAg
KzIzMSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtRGVzdHJveSgpCiAgICAgWEZy
ZWVDb2xvcm1hcChob3N0RGlzcGxheSwgY2FsbGJhY2tTdHJ1Y3QtPmNvbG9ybWFwKTsKICAgICBk
ZWxldGUgY2FsbGJhY2tTdHJ1Y3Q7CiAKLSAgICBpZiAobV9kcmF3YWJsZSkgewotICAgICAgICBY
RnJlZVBpeG1hcChob3N0RGlzcGxheSwgbV9kcmF3YWJsZSk7Ci0gICAgICAgIG1fZHJhd2FibGUg
PSAwOwotICAgIH0KKyAgICBtX2RyYXdhYmxlLnJlc2V0KCk7CiAKICNpZiBQTEFURk9STShHVEsp
CiAgICAgaWYgKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpIHsKQEAgLTI2MiwxOCArMjU4LDEyIEBA
IHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgRGlzcGxheSogZGlzcGxheSA9IHgxMUhvc3REaXNwbGF5
KCk7Ci0gICAgaWYgKG1fZHJhd2FibGUpCi0gICAgICAgIFhGcmVlUGl4bWFwKGRpc3BsYXksIG1f
ZHJhd2FibGUpOwotCi0gICAgaWYgKG1fcGx1Z2luU2l6ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
bV9kcmF3YWJsZSA9IDA7CisgICAgbV9kcmF3YWJsZS5yZXNldCgpOworICAgIGlmIChtX3BsdWdp
blNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9kcmF3YWJs
ZSA9IFhDcmVhdGVQaXhtYXAoZGlzcGxheSwgcm9vdFdpbmRvd0lEKCksIG1fcGx1Z2luU2l6ZS53
aWR0aCgpLCBtX3BsdWdpblNpemUuaGVpZ2h0KCksIGRpc3BsYXlEZXB0aCgpKTsKIAotICAgIFhT
eW5jKGRpc3BsYXksIGZhbHNlKTsgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHNlcnZlciBrbm93cyBh
Ym91dCB0aGUgRHJhd2FibGUuCisgICAgbV9kcmF3YWJsZSA9IFhDcmVhdGVQaXhtYXAoeDExSG9z
dERpc3BsYXkoKSwgcm9vdFdpbmRvd0lEKCksIG1fcGx1Z2luU2l6ZS53aWR0aCgpLCBtX3BsdWdp
blNpemUuaGVpZ2h0KCksIGRpc3BsYXlEZXB0aCgpKTsKKyAgICBYU3luYyh4MTFIb3N0RGlzcGxh
eSgpLCBmYWxzZSk7IC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzZXJ2ZXIga25vd3MgYWJvdXQgdGhl
IERyYXdhYmxlLgogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVZpc2liaWxpdHlE
aWRDaGFuZ2UoKQpAQCAtMzA3LDcgKzI5Nyw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRm
b3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0CiAg
ICAgWEdyYXBoaWNzRXhwb3NlRXZlbnQmIGV4cG9zZUV2ZW50ID0geGV2ZW50LnhncmFwaGljc2V4
cG9zZTsKICAgICBleHBvc2VFdmVudC50eXBlID0gR3JhcGhpY3NFeHBvc2U7CiAgICAgZXhwb3Nl
RXZlbnQuZGlzcGxheSA9IHgxMUhvc3REaXNwbGF5KCk7Ci0gICAgZXhwb3NlRXZlbnQuZHJhd2Fi
bGUgPSBtX2RyYXdhYmxlOworICAgIGV4cG9zZUV2ZW50LmRyYXdhYmxlID0gbV9kcmF3YWJsZS5n
ZXQoKTsKIAogICAgIEludFJlY3QgZXhwb3NlZFJlY3QoZGlydHlSZWN0KTsKICAgICBleHBvc2VF
dmVudC54ID0gZXhwb3NlZFJlY3QueCgpOwpAQCAtMzI0LDExICszMTQsOCBAQCB2b2lkIE5ldHNj
YXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgZGlydAogICAgICAgICBYU3luYyhtX3BsdWdpbkRpc3BsYXksIGZhbHNlKTsKIAog
I2lmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgVVNFKENBSVJPKSkKLSAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194
bGliX3N1cmZhY2VfY3JlYXRlKG1fcGx1Z2luRGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZHJhd2FibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxOUFNl
dFdpbmRvd0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRvdy53c19pbmZvKS0+dmlzdWFsLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9wbHVnaW5TaXplLndpZHRoKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3BsdWdpblNpemUuaGVpZ2h0KCkpKTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3Jl
YXRlKG1fcGx1Z2luRGlzcGxheSwgbV9kcmF3YWJsZS5nZXQoKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyktPnZpc3Vh
bCwgbV9wbHVnaW5TaXplLndpZHRoKCksIG1fcGx1Z2luU2l6ZS5oZWlnaHQoKSkpOwogICAgIGNh
aXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9f
c2F2ZShjcik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252483</attachid>
            <date>2015-05-06 09:43:26 -0700</date>
            <delta_ts>2015-05-06 09:52:46 -0700</delta_ts>
            <desc>Try to fix EFL build</desc>
            <filename>wk-xunique.diff</filename>
            <type>text/plain</type>
            <size>55474</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjhiMGU1Li5iNTgzNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQg
QEAKKzIwMTUtMDUtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtYMTFdIEFkZCBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8g
YXV0b21hdGljYWxseSBmcmVlIFggcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgWFVuaXF1ZVB0ciBhcyBhIHRlbXBsYXRlIGFsaWFz
IG9mIHN0ZDp1bmlxdWVfcHRyIHRvIGhhbmRsZSBYCisgICAgICAgIHJlc291cmNlcyB1c2luZyBw
b2ludGVycyBhbmQgWFVuaXF1ZVJlc291cmNlIGFzIGEgbmV3IGNsYXNzIHRvCisgICAgICAgIGhh
bmRsZSBYIHJlc291cmNlcyB1c2luZyBhIGxvbmcgdW5zaWduZWQgaWRlbnRpZmllci4gVGhpcwor
ICAgICAgICBzaW1wbGlmaWVzIHRoZSBjb2RlIGFuZCBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdCB0
byBsZWFrIFggcmVzb3VyY2VzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBu
ZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFk
ZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDEx
KToKKyAgICAgICAgUmVtb3ZlIHRoZSBkaXNwbGF5IG1lbWJlciwgYW5kIHVzZSBYVW5pcXVlIGZv
ciBQaXhtYXAgYW5kIEdDLgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZENh
aXJvWDExOjp+QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKToKKyAgICAgICAgUmVtb3ZlIGNv
ZGUgdG8gZXhwbGljaXRseSBmcmVlIFBpeG1hcCBhbmQgR0MuCisgICAgICAgIChXZWJDb3JlOjpC
YWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6OnNjcm9sbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQpOiBVc2UgWFVuaXF1ZSBhbmQgdGhl
CisgICAgICAgIG5ldyBjb25zdHJ1Y3RvciB0aGF0IHJlY2VpdmVzIGEgWElELCBzaW5jZSB0aGVy
ZSdzIG5vIGxvbmdlcgorICAgICAgICBjb25mbGljdCB3aXRoIHRoZSBvbmUgcmVjZWl2aW5nIGEg
UGJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNv
bnRleHQpOiBVc2UgWFVuaXF1ZSBhbmQgdGhlCisgICAgICAgIG5ldyBjb25zdHJ1Y3RvciB0aGF0
IHJlY2VpdmVzIGEgWFVuaXF1ZUdMWFBidWZmZXImJi4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRHTFg6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpH
TENvbnRleHRHTFgpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0
R0xYKTogUmVtb3ZlIGNvZGUgdG8gZXhwbGljaXRseQorICAgICAgICBmcmVlIFggcmVzb3VyY2Vz
LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjptYWtlQ29udGV4dEN1cnJlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRHTFg6OnBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFR0xY
VHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OmRlc3Ryb3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OnByZXBhcmVUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTFRleHR1cmVGcm9tUGl4bWFwOjpFR0xUZXh0dXJlRnJv
bVBpeG1hcCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
ZWdsL0VHTFhTdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWENvbmZpZ1NlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxl
Y3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnKTogVXNlIFhVbmlxdWUKKyAgICAgICAgaW5zdGVhZCBv
ZiB0aGUgY3VzdG9tIHN0ZDo6dW5pcXVlIFgxMURlbGV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpH
TFhDb25maWdTZWxlY3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnV2l0aFZpc3VhbElkKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0U3Vy
ZmFjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R0xYT2ZmU2NyZWVuU3VyZmFjZTo6aW5p
dGlhbGl6ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9YMTFIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WDExSGVscGVyOjpjcmVhdGVPZmZT
Y3JlZW5XaW5kb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlgxMUhlbHBlcjo6Y3JlYXRl
UGl4bWFwKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L1gxMUhlbHBlci5oOiBSZW1vdmUgWDExRGVsZXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy94MTEvWFVuaXF1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJl
c291cmNlPFhSZXNvdXJjZTo6Q29sb3JtYXA+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6RGFtYWdlPjo6ZGVsZXRlWFJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OlBpeG1h
cD46OmRlbGV0ZVhSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8
WFJlc291cmNlOjpXaW5kb3c+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj46OmRlbGV0ZVhSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpHTFhQaXhtYXA+
OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5p
cXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkp
OgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpYVW5pcXVlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpvcGVyYXRvcj0pOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjp+WFVuaXF1ZVJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVS
ZXNvdXJjZTo6cmVsZWFzZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U6OnJl
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6b3BlcmF0b3IhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSopOgorCiAyMDE1LTA1LTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gTmV0d29yayBDYWNoZTogSW1wbGVtZW50IFNoYXJl
YWJsZVJlc291cmNlIGZvciBTb3VwIGFuZCBlbmFibGUgaXQgZm9yIEdUSyBwbGF0Zm9ybQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3NjRiMzM2Li40ZmY2ODk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMTk3LDYgKzE5Nyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxh
cy5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuY3BwCiAKICAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggYjVkMDliNy4uYWU5OGY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEy
Niw2ICsxMjYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKIAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MveDExL1hVbmlxdWUuY3BwCiAKICAgICBwbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAogICAg
IHBsYXRmb3JtL2d0ay9FdmVudExvb3BHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExLmNwcAppbmRleCA0YzA4NzJmLi43Yjg2MzFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm9YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Jh
Y2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMS5jcHAKQEAgLTI2LDE3ICsyNiwxNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0
b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqIGRpc3BsYXksIHVuc2lnbmVkIGxvbmcgcm9vdFdp
bmRvd0lELCBWaXN1YWwqIHZpc3VhbCwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiBzaXplLCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFj
a2luZ1N0b3JlQmFja2VuZENhaXJvWDExKHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lELCBWaXN1
YWwqIHZpc3VhbCwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikKICAgICA6IEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyhzaXplKQotICAgICwg
bV9kaXNwbGF5KGRpc3BsYXkpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gc2l6ZTsKICAg
ICBzY2FsZWRTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKIAotICAgIG1fcGl4bWFwID0g
WENyZWF0ZVBpeG1hcChtX2Rpc3BsYXksIHJvb3RXaW5kb3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgp
LCBzY2FsZWRTaXplLmhlaWdodCgpLCBkZXB0aCk7Ci0gICAgbV9nYyA9IFhDcmVhdGVHQyhtX2Rp
c3BsYXksIG1fcGl4bWFwLCAwLCBudWxscHRyKTsKKyAgICBhdXRvKiBkaXNwbGF5ID0gZG93bmNh
c3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSku
bmF0aXZlKCk7CisgICAgbV9waXhtYXAgPSBYQ3JlYXRlUGl4bWFwKGRpc3BsYXksIHJvb3RXaW5k
b3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhlaWdodCgpLCBkZXB0aCk7Cisg
ICAgbV9nYy5yZXNldChYQ3JlYXRlR0MoZGlzcGxheSwgbV9waXhtYXAuZ2V0KCksIDAsIG51bGxw
dHIpKTsKIAotICAgIG1fc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVh
dGUobV9kaXNwbGF5LCBtX3BpeG1hcCwgdmlzdWFsLCBzY2FsZWRTaXplLndpZHRoKCksIHNjYWxl
ZFNpemUuaGVpZ2h0KCkpKTsKKyAgICBtX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1
cmZhY2VfY3JlYXRlKGRpc3BsYXksIG1fcGl4bWFwLmdldCgpLCB2aXN1YWwsIHNjYWxlZFNpemUu
d2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWlnaHQoKSkpOwogICAgIGNhaXJvU3VyZmFjZVNldERldmlj
ZVNjYWxlKG1fc3VyZmFjZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFj
dG9yKTsKIH0KIApAQCAtNDQsOCArNDQsNiBAQCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6
On5CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEoKQogewogICAgIC8vIFRoZSBwaXhtYXAgbmVl
ZHMgdG8gZXhpc3Qgd2hlbiB0aGUgc3VyZmFjZSBpcyBkZXN0cm95ZWQsIHNvIGJlZ2luIGJ5IGNs
ZWFyaW5nIGl0LgogICAgIG1fc3VyZmFjZS5jbGVhcigpOwotICAgIFhGcmVlUGl4bWFwKG1fZGlz
cGxheSwgbV9waXhtYXApOwotICAgIFhGcmVlR0MobV9kaXNwbGF5LCBtX2djKTsKIH0KIAogdm9p
ZCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3Jv
bGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpCkBAIC02NSw3ICs2Myw3IEBAIHZv
aWQgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExOjpzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Ny
b2xsUmVjdCwgY29uc3QgSW50U2l6CiAgICAgc2NhbGVkU2Nyb2xsT2Zmc2V0LnNjYWxlKHhTY2Fs
ZSwgeVNjYWxlKTsKIAogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsK
LSAgICBYQ29weUFyZWEobV9kaXNwbGF5LCBtX3BpeG1hcCwgbV9waXhtYXAsIG1fZ2MsCisgICAg
WENvcHlBcmVhKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBtX3BpeG1hcC5nZXQoKSwgbV9waXhtYXAuZ2V0KCks
IG1fZ2MuZ2V0KCksCiAgICAgICAgIHRhcmdldFJlY3QueCgpIC0gc2NhbGVkU2Nyb2xsT2Zmc2V0
LndpZHRoKCksIHRhcmdldFJlY3QueSgpIC0gc2NhbGVkU2Nyb2xsT2Zmc2V0LmhlaWdodCgpLAog
ICAgICAgICB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIHRhcmdldFJl
Y3QueCgpLCB0YXJnZXRSZWN0LnkoKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3Jl
Y3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwg
dGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyb1gxMS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2lu
Z1N0b3JlQmFja2VuZENhaXJvWDExLmgKaW5kZXggMWRlMGQ4NC4uNDA3OGE2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmgKQEAgLTIyLDIxICsyMiwyMCBAQAogI2lu
Y2x1ZGUgIkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyby5oIgogCiAjaWYgVVNFKENBSVJPKSAmJiBQ
TEFURk9STShYMTEpCi0jaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlICJYVW5pcXVlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmFja2luZ1N0b3JlQmFja2VuZENhaXJv
WDExIGZpbmFsIDogcHVibGljIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyB7CiBwdWJsaWM6Ci0g
ICAgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqLCB1bnNpZ25lZCBsb25nIHJv
b3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IpOworICAgIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMSh1bnNpZ25l
ZCBsb25nIHJvb3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIHZpcnR1YWwgfkJhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb1gxMSgpOwogCiAgICAgdm9pZCBzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVj
dCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBEaXNwbGF5KiBtX2Rpc3BsYXk7Ci0gICAgUGl4bWFwIG1fcGl4bWFwOwotICAgIEdDIG1fZ2M7
CisgICAgWFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKKyAgICBYVW5pcXVlR0MgbV9nYzsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggZjc0NjdhNy4uYzEwOGNjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5jcHAKQEAgLTQzLDI1ICs0MywxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgR0xDbwog
ICAgIHZpc3VhbEluZm8udmlzdWFsaWQgPSBYVmlzdWFsSURGcm9tVmlzdWFsKGF0dHJpYnV0ZXMu
dmlzdWFsKTsKIAogICAgIGludCBudW1SZXR1cm5lZCA9IDA7Ci0gICAgWFZpc3VhbEluZm8qIHZp
c3VhbEluZm9MaXN0ID0gWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsSURNYXNrLCAmdmlz
dWFsSW5mbywgJm51bVJldHVybmVkKTsKLQotICAgIEdMWENvbnRleHQgZ2x4U2hhcmluZ0NvbnRl
eHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEdMWCo+KHNoYXJpbmdD
b250ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBnbFhDcmVh
dGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9MaXN0LCBnbHhTaGFyaW5nQ29udGV4dCwgVHJ1
ZSk7Ci0gICAgWEZyZWUodmlzdWFsSW5mb0xpc3QpOworICAgIFhVbmlxdWVQdHI8WFZpc3VhbElu
Zm8+IHZpc3VhbEluZm9MaXN0KFhHZXRWaXN1YWxJbmZvKGRpc3BsYXksIFZpc3VhbElETWFzaywg
JnZpc3VhbEluZm8sICZudW1SZXR1cm5lZCkpOwogCisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5n
Q29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hh
cmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkgOiBudWxscHRyOworICAgIFhVbmlxdWVHTFhD
b250ZXh0IGNvbnRleHQoZ2xYQ3JlYXRlQ29udGV4dChkaXNwbGF5LCB2aXN1YWxJbmZvTGlzdC5n
ZXQoKSwgZ2x4U2hhcmluZ0NvbnRleHQsIFRydWUpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gR0xYUGJ1ZmZlciBhbmQgWElEIGFyZSBib3Ro
IHRoZSBzYW1lIHR5cGVzIHVuZGVybmVhdGgsIHNvIHdlIGhhdmUgdG8gc2hhcmUKLSAgICAvLyBh
IGNvbnN0cnVjdG9yIGhlcmUgd2l0aCB0aGUgd2luZG93IHBhdGguCi0gICAgYXV0byBjb250ZXh0
V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihjb250ZXh0KTsKLSAgICBj
b250ZXh0V3JhcHBlci0+bV93aW5kb3cgPSB3aW5kb3c7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShj
b250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xY
PihXVEY6Om1vdmUoY29udGV4dCksIHdpbmRvdyk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBz
aGFyaW5nQ29udGV4dCkKIHsKLSAgICBpbnQgZmJDb25maWdBdHRyaWJ1dGVzW10gPSB7CisgICAg
c3RhdGljIGNvbnN0IGludCBmYkNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHsKICAgICAgICAgR0xYX0RS
QVdBQkxFX1RZUEUsIEdMWF9QQlVGRkVSX0JJVCwKICAgICAgICAgR0xYX1JFTkRFUl9UWVBFLCBH
TFhfUkdCQV9CSVQsCiAgICAgICAgIEdMWF9SRURfU0laRSwgMSwKQEAgLTc0LDMyICs2OCwyMSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZm
ZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcgogCiAgICAgaW50IHJldHVybmVkRWxlbWVudHM7CiAg
ICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwotICAgIEdMWEZCQ29uZmlnKiBj
b25maWdzID0gZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRyaWJ1dGVz
LCAmcmV0dXJuZWRFbGVtZW50cyk7Ci0gICAgaWYgKCFyZXR1cm5lZEVsZW1lbnRzKSB7Ci0gICAg
ICAgIFhGcmVlKGNvbmZpZ3MpOworICAgIFhVbmlxdWVQdHI8R0xYRkJDb25maWc+IGNvbmZpZ3Mo
Z2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRyaWJ1dGVzLCAmcmV0dXJu
ZWRFbGVtZW50cykpOworICAgIGlmICghcmV0dXJuZWRFbGVtZW50cykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQogCiAgICAgLy8gV2Ugd2lsbCBiZSByZW5kZXJpbmcgdG8gYSB0ZXh0
dXJlLCBzbyBvdXIgcGJ1ZmZlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGxhcmdlLgogICAgIHN0YXRp
YyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgR0xYX1BCVUZGRVJfV0lEVEgsIDEs
IEdMWF9QQlVGRkVSX0hFSUdIVCwgMSwgMCB9OwotICAgIEdMWFBidWZmZXIgcGJ1ZmZlciA9IGds
WENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmlnc1swXSwgcGJ1ZmZlckF0dHJpYnV0ZXMpOwot
ICAgIGlmICghcGJ1ZmZlcikgewotICAgICAgICBYRnJlZShjb25maWdzKTsKKyAgICBYVW5pcXVl
R0xYUGJ1ZmZlciBwYnVmZmVyKGdsWENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmlncy5nZXQo
KVswXSwgcGJ1ZmZlckF0dHJpYnV0ZXMpKTsKKyAgICBpZiAoIXBidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWENvbnRleHQgY29udGV4dCA9IGdsWENyZWF0
ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmlnc1swXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0Nv
bnRleHQsIEdMX1RSVUUpOwotICAgIFhGcmVlKGNvbmZpZ3MpOwotICAgIGlmICghY29udGV4dCkg
ewotICAgICAgICBnbFhEZXN0cm95UGJ1ZmZlcihkaXNwbGF5LCBwYnVmZmVyKTsKKyAgICBYVW5p
cXVlR0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmln
cy5nZXQoKVswXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0NvbnRleHQsIEdMX1RSVUUpKTsKKyAg
ICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIC8v
IEdMWFBidWZmZXIgYW5kIFhJRCBhcmUgYm90aCB0aGUgc2FtZSB0eXBlcyB1bmRlcm5lYXRoLCBz
byB3ZSBoYXZlIHRvIHNoYXJlCi0gICAgLy8gYSBjb25zdHJ1Y3RvciBoZXJlIHdpdGggdGhlIHdp
bmRvdyBwYXRoLgotICAgIGF1dG8gY29udGV4dFdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdM
Q29udGV4dEdMWD4oY29udGV4dCk7Ci0gICAgY29udGV4dFdyYXBwZXItPm1fcGJ1ZmZlciA9IHBi
dWZmZXI7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEY6Om1vdmUoY29udGV4dCksIFdURjo6
bW92ZShwYnVmZmVyKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KQpA
QCAtMTE0LDMxICs5NywyMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRl
eHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaQogICAgIH07CiAKICAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7Ci0gICAgWFZpc3VhbEluZm8qIHZp
c3VhbEluZm8gPSBnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5
KSwgdmlzdWFsQXR0cmlidXRlcyk7CisgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFs
SW5mbyhnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5KSwgdmlz
dWFsQXR0cmlidXRlcykpOwogICAgIGlmICghdmlzdWFsSW5mbykKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBnbFhDcmVhdGVDb250ZXh0KGRpc3Bs
YXksIHZpc3VhbEluZm8sIHNoYXJpbmdDb250ZXh0LCBHTF9UUlVFKTsKLSAgICBpZiAoIWNvbnRl
eHQpIHsKLSAgICAgICAgWEZyZWUodmlzdWFsSW5mbyk7CisgICAgWFVuaXF1ZUdMWENvbnRleHQg
Y29udGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm8uZ2V0KCksIHNoYXJp
bmdDb250ZXh0LCBHTF9UUlVFKSk7CisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9CiAKLSAgICBQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcChkaXNw
bGF5LCBEZWZhdWx0Um9vdFdpbmRvdyhkaXNwbGF5KSwgMSwgMSwgdmlzdWFsSW5mby0+ZGVwdGgp
OwotICAgIGlmICghcGl4bWFwKSB7Ci0gICAgICAgIFhGcmVlKHZpc3VhbEluZm8pOworICAgIFhV
bmlxdWVQaXhtYXAgcGl4bWFwKFhDcmVhdGVQaXhtYXAoZGlzcGxheSwgRGVmYXVsdFJvb3RXaW5k
b3coZGlzcGxheSksIDEsIDEsIHZpc3VhbEluZm8tPmRlcHRoKSk7CisgICAgaWYgKCFwaXhtYXAp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWFBpeG1hcCBnbHhQaXht
YXAgPSBnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mbywgcGl4bWFwKTsKLSAg
ICBpZiAoIWdseFBpeG1hcCkgewotICAgICAgICBYRnJlZVBpeG1hcChkaXNwbGF5LCBwaXhtYXAp
OwotICAgICAgICBYRnJlZSh2aXN1YWxJbmZvKTsKKyAgICBYVW5pcXVlR0xYUGl4bWFwIGdseFBp
eG1hcChnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mby5nZXQoKSwgcGl4bWFw
LmdldCgpKSk7CisgICAgaWYgKCFnbHhQaXhtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KIAotICAgIFhGcmVlKHZpc3VhbEluZm8pOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdMQ29udGV4dEdMWD4oY29udGV4dCwgcGl4bWFwLCBnbHhQaXhtYXApOworICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdMWD4oV1RGOjptb3ZlKGNvbnRleHQpLCBXVEY6
Om1vdmUocGl4bWFwKSwgV1RGOjptb3ZlKGdseFBpeG1hcCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRvdywg
R0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKQEAgLTE1Miw3ICsxMjcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRv
dywgR0xDb250ZXh0KgogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBz
dGF0aWNfY2FzdDxHTENvbnRleHRHTFgqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dCA6IDA7
CisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3Rh
dGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkg
OiBudWxscHRyOwogICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRl
eHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOwogICAgIGlmICghY29udGV4dCkK
ICAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGdseFNoYXJpbmdDb250ZXh0
KTsKQEAgLTE2NCwyMyArMTM5LDI3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdM
Q29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqCiAgICAgcmV0
dXJuIFdURjo6bW92ZShjb250ZXh0KTsKIH0KIAotR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgo
R0xYQ29udGV4dCBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitHTENvbnRleHRH
TFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhJRCB3aW5kb3cp
CisgICAgOiBtX2NvbnRleHQoV1RGOjptb3ZlKGNvbnRleHQpKQorICAgICwgbV93aW5kb3cod2lu
ZG93KQorICAgICwgbV9jYWlyb0RldmljZShudWxscHRyKQoreworfQorCitHTENvbnRleHRHTFg6
OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhVbmlxdWVHTFhQYnVm
ZmVyJiYgcGJ1ZmZlcikKKyAgICA6IG1fY29udGV4dChXVEY6Om1vdmUoY29udGV4dCkpCiAgICAg
LCBtX3dpbmRvdygwKQotICAgICwgbV9wYnVmZmVyKDApCi0gICAgLCBtX3BpeG1hcCgwKQotICAg
ICwgbV9nbHhQaXhtYXAoMCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKKyAgICAsIG1fcGJ1ZmZl
cihXVEY6Om1vdmUocGJ1ZmZlcikpCisgICAgLCBtX2NhaXJvRGV2aWNlKG51bGxwdHIpCiB7CiB9
CiAKLUdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKEdMWENvbnRleHQgY29udGV4dCwgUGl4bWFw
IHBpeG1hcCwgR0xYUGl4bWFwIGdseFBpeG1hcCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQor
R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBY
VW5pcXVlUGl4bWFwJiYgcGl4bWFwLCBYVW5pcXVlR0xYUGl4bWFwJiYgZ2x4UGl4bWFwKQorICAg
IDogbV9jb250ZXh0KFdURjo6bW92ZShjb250ZXh0KSkKICAgICAsIG1fd2luZG93KDApCi0gICAg
LCBtX3BidWZmZXIoMCkKLSAgICAsIG1fcGl4bWFwKHBpeG1hcCkKLSAgICAsIG1fZ2x4UGl4bWFw
KGdseFBpeG1hcCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKKyAgICAsIG1fcGl4bWFwKFdURjo6
bW92ZShwaXhtYXApKQorICAgICwgbV9nbHhQaXhtYXAoV1RGOjptb3ZlKGdseFBpeG1hcCkpCisg
ICAgLCBtX2NhaXJvRGV2aWNlKG51bGxwdHIpCiB7CiB9CiAKQEAgLTE4OSwyNiArMTY4LDEyIEBA
IEdMQ29udGV4dEdMWDo6fkdMQ29udGV4dEdMWCgpCiAgICAgaWYgKG1fY2Fpcm9EZXZpY2UpCiAg
ICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95KG1fY2Fpcm9EZXZpY2UpOwogCi0gICAgRGlzcGxh
eSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAg
ICAgLy8gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZXZlbnQgY3Jhc2hlcyB3aXRoIE5WaWRp
YSdzIGNsb3NlZCBzb3VyY2UgZHJpdmVycy4gT3JpZ2luYWxseQogICAgICAgICAvLyBmcm9tIE1v
emlsbGEncyAzRCBjYW52YXMgaW1wbGVtZW50YXRpb24gYXQ6IGh0dHA6Ly9iaXRidWNrZXQub3Jn
L2lsbWFyaS9jYW52YXMzZC8KKyAgICAgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpOwogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIDAp
OwogICAgICAgICBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBOb25lLCBOb25lKTsKLSAgICAgICAg
Z2xYRGVzdHJveUNvbnRleHQoZGlzcGxheSwgbV9jb250ZXh0KTsKLSAgICB9Ci0KLSAgICBpZiAo
bV9wYnVmZmVyKSB7Ci0gICAgICAgIGdsWERlc3Ryb3lQYnVmZmVyKGRpc3BsYXksIG1fcGJ1ZmZl
cik7Ci0gICAgICAgIG1fcGJ1ZmZlciA9IDA7Ci0gICAgfQotICAgIGlmIChtX2dseFBpeG1hcCkg
ewotICAgICAgICBnbFhEZXN0cm95R0xYUGl4bWFwKGRpc3BsYXksIG1fZ2x4UGl4bWFwKTsKLSAg
ICAgICAgbV9nbHhQaXhtYXAgPSAwOwotICAgIH0KLSAgICBpZiAobV9waXhtYXApIHsKLSAgICAg
ICAgWEZyZWVQaXhtYXAoZGlzcGxheSwgbV9waXhtYXApOwotICAgICAgICBtX3BpeG1hcCA9IDA7
CiAgICAgfQogfQogCkBAIC0yMzcsMTcgKzIwMiwxNyBAQCBib29sIEdMQ29udGV4dEdMWDo6bWFr
ZUNvbnRleHRDdXJyZW50KCkKICAgICBBU1NFUlQobV9jb250ZXh0ICYmIChtX3dpbmRvdyB8fCBt
X3BidWZmZXIgfHwgbV9nbHhQaXhtYXApKTsKIAogICAgIEdMQ29udGV4dDo6bWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0gICAgaWYgKGdsWEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0KQor
ICAgIGlmIChnbFhHZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dC5nZXQoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7
CiAgICAgaWYgKG1fd2luZG93KQotICAgICAgICByZXR1cm4gZ2xYTWFrZUN1cnJlbnQoZGlzcGxh
eSwgbV93aW5kb3csIG1fY29udGV4dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChk
aXNwbGF5LCBtX3dpbmRvdywgbV9jb250ZXh0LmdldCgpKTsKIAogICAgIGlmIChtX3BidWZmZXIp
Ci0gICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3BidWZmZXIsIG1fY29u
dGV4dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3BidWZmZXIu
Z2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiAKLSAgICByZXR1cm4gOjpnbFhNYWtlQ3VycmVudChk
aXNwbGF5LCBtX2dseFBpeG1hcCwgbV9jb250ZXh0KTsKKyAgICByZXR1cm4gOjpnbFhNYWtlQ3Vy
cmVudChkaXNwbGF5LCBtX2dseFBpeG1hcC5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKIH0KIAog
dm9pZCBHTENvbnRleHRHTFg6OnN3YXBCdWZmZXJzKCkKQEAgLTI2Nyw3ICsyMzIsNyBAQCBjYWly
b19kZXZpY2VfdCogR0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSgpCiAgICAgICAgIHJldHVybiBt
X2NhaXJvRGV2aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBt
X2NhaXJvRGV2aWNlID0gY2Fpcm9fZ2x4X2RldmljZV9jcmVhdGUoZG93bmNhc3Q8UGxhdGZvcm1E
aXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIG1f
Y29udGV4dCk7CisgICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2dseF9kZXZpY2VfY3JlYXRlKGRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkpLm5hdGl2ZSgpLCBtX2NvbnRleHQuZ2V0KCkpOwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9j
YWlyb0RldmljZTsKQEAgLTI3Niw3ICsyNDEsNyBAQCBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0
R0xYOjpjYWlyb0RldmljZSgpCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCiBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEdMWDo6cGxhdGZvcm1Db250ZXh0KCkKIHsK
LSAgICByZXR1cm4gbV9jb250ZXh0OworICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4
L0dMQ29udGV4dEdMWC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dM
Q29udGV4dEdMWC5oCmluZGV4IDY5MzRmMjQuLjQwMjNiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKQEAgLTIzLDEyICsy
Myw5IEBACiAjaWYgVVNFKEdMWCkKIAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgorI2luY2x1ZGUg
IlhVbmlxdWUuaCIKIAotdHlwZWRlZiBzdHJ1Y3QgX19HTFhjb250ZXh0UmVjKiBHTFhDb250ZXh0
OwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdMWFBidWZmZXI7Ci10eXBlZGVmIHVuc2lnbmVkIGxv
bmcgR0xYUGl4bWFwOwogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIEdMdWJ5dGU7Ci10eXBlZGVmIHVu
c2lnbmVkIGxvbmcgUGl4bWFwOwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJRDsKIHR5cGVkZWYg
dm9pZCogQ29udGV4dEtleVR5cGU7CiAKQEAgLTQwLDggKzM3LDkgQEAgcHVibGljOgogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVDb250ZXh0KFhJRCB3aW5k
b3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBjcmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4
dCogc2hhcmluZ0NvbnRleHQpOwogCi0gICAgR0xDb250ZXh0R0xYKEdMWENvbnRleHQpOwotICAg
IEdMQ29udGV4dEdMWChHTFhDb250ZXh0LCBQaXhtYXAsIEdMWFBpeG1hcCk7CisgICAgR0xDb250
ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYsIFhJRCk7CisgICAgR0xDb250ZXh0R0xYKFhVbmlx
dWVHTFhDb250ZXh0JiYsIFhVbmlxdWVHTFhQYnVmZmVyJiYpOworICAgIEdMQ29udGV4dEdMWChY
VW5pcXVlR0xYQ29udGV4dCYmLCBYVW5pcXVlUGl4bWFwJiYsIFhVbmlxdWVHTFhQaXhtYXAmJik7
CiAgICAgdmlydHVhbCB+R0xDb250ZXh0R0xYKCk7CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpOwpAQCAtNTksMTEg
KzU3LDExIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRH
TFg+IGNyZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQaXhtYXBDb250ZXh0
KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogCi0gICAgR0xYQ29udGV4dCBtX2NvbnRleHQ7
CisgICAgWFVuaXF1ZUdMWENvbnRleHQgbV9jb250ZXh0OwogICAgIFhJRCBtX3dpbmRvdzsKLSAg
ICBHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKLSAgICBQaXhtYXAgbV9waXhtYXA7Ci0gICAgR0xYUGl4
bWFwIG1fZ2x4UGl4bWFwOworICAgIFhVbmlxdWVHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKKyAgICBY
VW5pcXVlUGl4bWFwIG1fcGl4bWFwOworICAgIFhVbmlxdWVHTFhQaXhtYXAgbV9nbHhQaXhtYXA7
CiAgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhT
dXJmYWNlLmNwcAppbmRleCA2MThmZGMzLi5kNGUzNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFj
ZS5jcHAKQEAgLTE0MSw3ICsxNDEsNiBAQCB2b2lkIEVHTFBpeG1hcFN1cmZhY2U6OmRlc3Ryb3ko
KQogCiBFR0xYVHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGll
bnQoY29uc3QgUGxhdGZvcm1CdWZmZXJIYW5kbGUgaGFuZGxlLCBjb25zdCBJbnRTaXplJiBzaXpl
LCBib29sIGhhc0FscGhhKQogICAgIDogR0xUcmFuc3BvcnRTdXJmYWNlQ2xpZW50KCkKLSAgICAs
IG1faW1hZ2UoMCkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV90b3RhbEJ5dGVzKDApCiB7
CkBAIC0xOTcsMTEgKzE5Niw3IEBAIHZvaWQgRUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OmRl
c3Ryb3koKQogICAgIH0KIAogICAgIGVnbFdhaXRHTCgpOwotCi0gICAgaWYgKG1faW1hZ2UpIHsK
LSAgICAgICAgWERlc3Ryb3lJbWFnZShtX2ltYWdlKTsKLSAgICAgICAgbV9pbWFnZSA9IDA7Ci0g
ICAgfQorICAgIG1faW1hZ2UucmVzZXQoKTsKIH0KIAogdm9pZCBFR0xYVHJhbnNwb3J0U3VyZmFj
ZUNsaWVudDo6cHJlcGFyZVRleHR1cmUoKQpAQCAtMjE0LDcgKzIwOSw3IEBAIHZvaWQgRUdMWFRy
YW5zcG9ydFN1cmZhY2VDbGllbnQ6OnByZXBhcmVUZXh0dXJlKCkKICAgICB9CiAKICAgICAvLyBG
YWxsYmFjayB0byB1c2UgWEltYWdlIGluIGNhc2UgRUdMSW1hZ2UgYW5kIFRleHR1cmVUb1BpeG1h
cCBhcmUgbm90IHN1cHBvcnRlZC4KLSAgICBtX2ltYWdlID0gWEdldEltYWdlKE5hdGl2ZVdyYXBw
ZXI6Om5hdGl2ZURpc3BsYXkoKSwgbV9oYW5kbGUsIDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3Np
emUuaGVpZ2h0KCksIEFsbFBsYW5lcywgWlBpeG1hcCk7CisgICAgbV9pbWFnZS5yZXNldChYR2V0
SW1hZ2UoTmF0aXZlV3JhcHBlcjo6bmF0aXZlRGlzcGxheSgpLCBtX2hhbmRsZSwgMCwgMCwgbV9z
aXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgQWxsUGxhbmVzLCBaUGl4bWFwKSk7CiAKICNp
ZiBVU0UoT1BFTkdMX0VTXzIpCiAgICAgaWYgKG1fZm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpCR1JBKSB7CkBAIC0yMjUsMTAgKzIyMCw3IEBAIHZvaWQgRUdMWFRyYW5zcG9ydFN1cmZhY2VD
bGllbnQ6OnByZXBhcmVUZXh0dXJlKCkKIAogICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBtX2Zvcm1hdCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgMCwgbV9mb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIG1faW1hZ2UtPmRhdGEpOwogCi0gICAgaWYgKG1faW1hZ2Up
IHsKLSAgICAgICAgWERlc3Ryb3lJbWFnZShtX2ltYWdlKTsKLSAgICAgICAgbV9pbWFnZSA9IDA7
Ci0gICAgfQorICAgIG1faW1hZ2UucmVzZXQoKTsKIH0KIAogRUdMVGV4dHVyZUZyb21QaXhtYXA6
OkVHTFRleHR1cmVGcm9tUGl4bWFwKGNvbnN0IE5hdGl2ZVBpeG1hcCBoYW5kbGUsIGJvb2wgaGFz
QWxwaGEsIEVHTENvbmZpZyBjb25maWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCmluZGV4IDk2Yzhh
NjYuLjI0Y2Y4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aWYgUExBVEZPUk0oWDExKSAmJiBVU0UoRUdMKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIAog
I2luY2x1ZGUgIkVHTFN1cmZhY2UuaCIKKyNpbmNsdWRlICJYVW5pcXVlLmgiCiAjaW5jbHVkZSA8
Z2x4L1gxMUhlbHBlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NCw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgotICAgIFhJbWFnZSogbV9pbWFnZTsKKyAgICBYVW5pcXVlPFhJbWFnZT4gbV9pbWFnZTsKICAg
ICBJbnRTaXplIG1fc2l6ZTsKICAgICBQbGF0Zm9ybUJ1ZmZlckhhbmRsZSBtX2hhbmRsZTsKICAg
ICBHTHVpbnQgbV9mb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCmluZGV4
IDVjZGVkZTUuLjI5Zjg3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKEdMWCkKIAogI2luY2x1ZGUgIlgxMUhlbHBlci5oIgor
I2luY2x1ZGUgIlhVbmlxdWUuaCIKICNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+CiAjaW5jbHVk
ZSA8b3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmg+CiAKQEAgLTE0MCwxMyArMTQxLDEzIEBAIHBy
aXZhdGU6CiAgICAgR0xYRkJDb25maWcgZmluZE1hdGNoaW5nQ29uZmlnKGNvbnN0IGludCBhdHRy
aWJ1dGVzW10sIGludCBkZXB0aCA9IDMyKQogICAgIHsKICAgICAgICAgaW50IG51bUF2YWlsYWJs
ZUNvbmZpZ3M7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHTFhGQkNvbmZpZ1tdLCBYMTFEZWxl
dGVyPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCBE
ZWZhdWx0U2NyZWVuKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpKSwgYXR0cmlidXRlcywgJm51
bUF2YWlsYWJsZUNvbmZpZ3MpKTsKKyAgICAgICAgWFVuaXF1ZVB0cjxHTFhGQkNvbmZpZz4gdGVt
cChnbFhDaG9vc2VGQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgRGVmYXVsdFNj
cmVlbihYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFi
bGVDb25maWdzKSk7CiAKICAgICAgICAgaWYgKCFudW1BdmFpbGFibGVDb25maWdzIHx8ICF0ZW1w
LmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1BdmFpbGFibGVDb25maWdzOyArK2kpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gc2NvcGVkVmlzdWFsSW5mbyB7IGdsWEdldFZp
c3VhbEZyb21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgdGVtcFtpXSkgfTsK
KyAgICAgICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHNjb3BlZFZpc3VhbEluZm8geyBn
bFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXAu
Z2V0KClbaV0pIH07CiAgICAgICAgICAgICBpZiAoIXNjb3BlZFZpc3VhbEluZm8uZ2V0KCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTE1Nyw0MCArMTU4LDQwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdCkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
bV9hdHRyaWJ1dGVzICYgR0xQbGF0Zm9ybVN1cmZhY2U6OlN1cHBvcnRBbHBoYSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlZFZpc3VhbEluZm8tPmRlcHRoID09IGRlcHRoICYm
IGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRlbXBbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRl
bXAuZ2V0KClbaV07CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWZvcm1hdC0+ZGly
ZWN0LmFscGhhTWFzaykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wW2ldOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXAuZ2V0KClbaV07CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBpZiAoc2NvcGVkVmlz
dWFsSW5mby0+ZGVwdGggPT0gZGVwdGgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRlbXBbaV07
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXAuZ2V0KClbaV07CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBEaWQgbm90IGZpbmQgYW55IHZpc3VhbCBzdXBwb3J0aW5nIGFscGhhLCBzZWxlY3Qg
dGhlIGZpcnN0IGF2YWlsYWJsZSBjb25maWcuCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxYVmlz
dWFsSW5mbywgWDExRGVsZXRlcj4gc2NvcGVkVmlzdWFsSW5mbyB7IGdsWEdldFZpc3VhbEZyb21G
QkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgdGVtcFswXSkgfTsKKyAgICAgICAg
WFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gc2NvcGVkVmlzdWFsSW5mbyB7IGdsWEdldFZpc3VhbEZy
b21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgdGVtcC5nZXQoKVswXSkgfTsK
IAogICAgICAgICBpZiAoKG1fYXR0cmlidXRlcyAmIEdMUGxhdGZvcm1TdXJmYWNlOjpTdXBwb3J0
QWxwaGEpICYmIChzY29wZWRWaXN1YWxJbmZvLT5kZXB0aCAhPSAzMikpCiAgICAgICAgICAgICBt
X2F0dHJpYnV0ZXMgJj0gfkdMUGxhdGZvcm1TdXJmYWNlOjpTdXBwb3J0QWxwaGE7CiAKLSAgICAg
ICAgcmV0dXJuIHRlbXBbMF07CisgICAgICAgIHJldHVybiB0ZW1wLmdldCgpWzBdOwogICAgIH0K
IAogICAgIEdMWEZCQ29uZmlnIGZpbmRNYXRjaGluZ0NvbmZpZ1dpdGhWaXN1YWxJZChjb25zdCBp
bnQgYXR0cmlidXRlc1tdLCBpbnQgZGVwdGgsIFZpc3VhbElEIGlkKQogICAgIHsKICAgICAgICAg
aW50IG51bUF2YWlsYWJsZUNvbmZpZ3M7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHTFhGQkNv
bmZpZ1tdLCBYMTFEZWxldGVyPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0
aXZlRGlzcGxheSgpLCBEZWZhdWx0U2NyZWVuKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpKSwg
YXR0cmlidXRlcywgJm51bUF2YWlsYWJsZUNvbmZpZ3MpKTsKKyAgICAgICAgWFVuaXF1ZVB0cjxH
TFhGQkNvbmZpZz4gdGVtcChnbFhDaG9vc2VGQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3Bs
YXkoKSwgRGVmYXVsdFNjcmVlbihYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSksIGF0dHJpYnV0
ZXMsICZudW1BdmFpbGFibGVDb25maWdzKSk7CiAKICAgICAgICAgaWYgKCFudW1BdmFpbGFibGVD
b25maWdzIHx8ICF0ZW1wLmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1BdmFpbGFibGVDb25maWdzOyArK2kpIHsKLSAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gc2NvcGVkVmlzdWFs
SW5mbyB7IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXko
KSwgdGVtcFtpXSkgfTsKKyAgICAgICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHNjb3Bl
ZFZpc3VhbEluZm8geyBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVE
aXNwbGF5KCksIHRlbXAuZ2V0KClbaV0pIH07CiAgICAgICAgICAgICBpZiAoIXNjb3BlZFZpc3Vh
bEluZm8uZ2V0KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlm
IChpZCAmJiBzY29wZWRWaXN1YWxJbmZvLT5kZXB0aCA9PSBkZXB0aCAmJiBzY29wZWRWaXN1YWxJ
bmZvLT52aXN1YWxpZCA9PSBpZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGVtcFtpXTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdGVtcC5nZXQoKVtpXTsKICAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCmluZGV4IGJhNDkzYjAuLjcwZWVhYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9HTFhTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIFVTRShH
TFgpCiAKKyNpbmNsdWRlICJYVW5pcXVlLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIFBGTkdMWEJJTkRURVhJTUFHRUVYVFBST0MgcEdsWEJpbmRUZXhJbWFnZUVYVCA9IDA7CkBA
IC02Niw3ICs2OCw3IEBAIEdMWFRyYW5zcG9ydFN1cmZhY2U6OkdMWFRyYW5zcG9ydFN1cmZhY2Uo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgU3VyZmFjZUF0dHJpYnV0ZXMKIHsKICAgICBhdHRyaWJ1dGVz
IHw9IEdMUGxhdGZvcm1TdXJmYWNlOjpEb3VibGVCdWZmZXJlZDsKICAgICBtX2NvbmZpZ1NlbGVj
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxHTFhDb25maWdTZWxlY3Rvcj4oYXR0cmlidXRlcyk7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiB2aXNJbmZvKG1fY29u
ZmlnU2VsZWN0b3ItPnZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rvci0+c3VyZmFjZUNvbnRleHRD
b25maWcoKSkpOworICAgIFhVbmlxdWU8WFZpc3VhbEluZm8+IHZpc0luZm8obV9jb25maWdTZWxl
Y3Rvci0+dmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT5zdXJmYWNlQ29udGV4dENvbmZpZygp
KSk7CiAKICAgICBpZiAoIXZpc0luZm8uZ2V0KCkpIHsKICAgICAgICAgZGVzdHJveSgpOwpAQCAt
MTQyLDcgKzE0NCw3IEBAIHZvaWQgR0xYT2ZmU2NyZWVuU3VyZmFjZTo6aW5pdGlhbGl6ZShTdXJm
YWNlQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogewogICAgIG1fY29uZmlnU2VsZWN0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdMWENvbmZpZ1NlbGVjdG9yPihhdHRyaWJ1dGVzKTsKIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gdmlzdWFsSW5mbyhtX2NvbmZpZ1Nl
bGVjdG9yLT52aXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnBpeG1hcENvbnRleHRDb25maWco
KSkpOworICAgIFhVbmlxdWU8WFZpc3VhbEluZm8+IHZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rv
ci0+dmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT5waXhtYXBDb250ZXh0Q29uZmlnKCkpKTsK
ICAgICBYMTFIZWxwZXI6OmNyZWF0ZVBpeG1hcCgmbV9waXhtYXAsICp2aXN1YWxJbmZvLmdldCgp
KTsKIAogICAgIGlmICghbV9waXhtYXApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAKaW5kZXggODAx
MGI1Ny4uMzY4YmE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJYMTFIZWxwZXIuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheVgxMS5o
IgorI2luY2x1ZGUgIlhVbmlxdWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMjMs
NyArMjI0LDcgQEAgdm9pZCBYMTFIZWxwZXI6OmNyZWF0ZU9mZlNjcmVlbldpbmRvdyh1aW50MzJf
dCogaGFuZGxlSWQsIGNvbnN0IEVHTGludCBpZCwgYm9vbAogICAgIG1lbXNldCgmdmlzdWFsSW5m
b1RlbXBsYXRlLCAwLCBzaXplb2YoWFZpc3VhbEluZm8pKTsKICAgICB2aXN1YWxJbmZvVGVtcGxh
dGUudmlzdWFsaWQgPSB2aXN1YWxJZDsKICAgICBpbnQgbWF0Y2hpbmdDb3VudCA9IDA7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiBtYXRjaGluZ1Zpc3VhbHMo
WEdldFZpc3VhbEluZm8obmF0aXZlRGlzcGxheSgpLCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZv
VGVtcGxhdGUsICZtYXRjaGluZ0NvdW50KSk7CisgICAgWFVuaXF1ZTxYVmlzdWFsSW5mbz4gbWF0
Y2hpbmdWaXN1YWxzKFhHZXRWaXN1YWxJbmZvKG5hdGl2ZURpc3BsYXkoKSwgVmlzdWFsSURNYXNr
LCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCkpOwogICAgIFhWaXN1YWxJbmZv
KiBmb3VuZFZpc3VhbCA9IDA7CiAKICAgICBpZiAobWF0Y2hpbmdWaXN1YWxzKSB7CkBAIC0yNjAs
NyArMjYxLDcgQEAgdm9pZCBYMTFIZWxwZXI6OmNyZWF0ZVBpeG1hcChQaXhtYXAqIGhhbmRsZUlk
LCBjb25zdCBFR0xpbnQgaWQsIGJvb2wgaGFzQWxwaGEsIGMKICAgICBtZW1zZXQoJnZpc3VhbElu
Zm9UZW1wbGF0ZSwgMCwgc2l6ZW9mKFhWaXN1YWxJbmZvKSk7CiAgICAgdmlzdWFsSW5mb1RlbXBs
YXRlLnZpc3VhbGlkID0gdmlzdWFsSWQ7CiAgICAgaW50IG1hdGNoaW5nQ291bnQgPSAwOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gbWF0Y2hpbmdWaXN1YWxz
KFhHZXRWaXN1YWxJbmZvKG5hdGl2ZURpc3BsYXkoKSwgVmlzdWFsSURNYXNrLCAmdmlzdWFsSW5m
b1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCkpOworICAgIFhVbmlxdWU8WFZpc3VhbEluZm8+IG1h
dGNoaW5nVmlzdWFscyhYR2V0VmlzdWFsSW5mbyhuYXRpdmVEaXNwbGF5KCksIFZpc3VhbElETWFz
aywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpKTsKICAgICBYVmlzdWFsSW5m
byogZm91bmRWaXN1YWwgPSAwOwogICAgIGludCByZXF1aXJlZERlcHRoID0gaGFzQWxwaGEgPyAz
MiA6IDI0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvWDExSGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmgKaW5kZXggMTAzZjAwMS4uN2Y1ZTRjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhl
bHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9YMTFIZWxwZXIuaApAQCAtNDIsMTUgKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBYMTFEZWxldGVyIHsKLXB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2
b2lkIG9wZXJhdG9yKCkoVCogcmVzb3VyY2UpCi0gICAgewotICAgICAgICBpZiAocmVzb3VyY2Up
Ci0gICAgICAgICAgICBYRnJlZShyZXNvdXJjZSk7Ci0gICAgfQotfTsKLQogY2xhc3MgWDExSGVs
cGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQaXhtYXAoUGl4bWFwKiwgY29u
c3QgWFZpc3VhbEluZm8mLCBjb25zdCBJbnRTaXplJiA9IEludFNpemUoMSwgMSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZTM0MjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5jcHAKQEAgLTAsMCAr
MSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhVbmlxdWUuaCIKKworI2lmIFBMQVRGT1JNKFgxMSkK
KyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2Uu
aD4KKworI2lmIFVTRShHTFgpCisjaW5jbHVkZSA8R0wvZ2x4Lmg+CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTw+IHZvaWQgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJj
ZTo6Q29sb3JtYXA+OjpkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKK3sK
KyAgICBpZiAocmVzb3VyY2UpCisgICAgICAgIFhGcmVlQ29sb3JtYXAoZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCks
IHJlc291cmNlKTsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8WFJlc291
cmNlOjpEYW1hZ2U+OjpkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKK3sK
KyAgICBpZiAocmVzb3VyY2UpCisgICAgICAgIFhEYW1hZ2VEZXN0cm95KGRvd25jYXN0PFBsYXRm
b3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgp
LCByZXNvdXJjZSk7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgWFVuaXF1ZVJlc291cmNlPFhSZXNv
dXJjZTo6UGl4bWFwPjo6ZGVsZXRlWFJlc291cmNlKGxvbmcgdW5zaWduZWQgcmVzb3VyY2UpCit7
CisgICAgaWYgKHJlc291cmNlKQorICAgICAgICBYRnJlZVBpeG1hcChkb3duY2FzdDxQbGF0Zm9y
bURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwg
cmVzb3VyY2UpOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3Vy
Y2U6OldpbmRvdz46OmRlbGV0ZVhSZXNvdXJjZShsb25nIHVuc2lnbmVkIHJlc291cmNlKQorewor
ICAgIGlmIChyZXNvdXJjZSkKKyAgICAgICAgWERlc3Ryb3lXaW5kb3coZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCks
IHJlc291cmNlKTsKK30KKworI2lmIFVTRShHTFgpCit0ZW1wbGF0ZTw+IHZvaWQgWFVuaXF1ZVJl
c291cmNlPFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj46OmRlbGV0ZVhSZXNvdXJjZShsb25nIHVuc2ln
bmVkIHJlc291cmNlKQoreworICAgIGlmIChyZXNvdXJjZSkKKyAgICAgICAgZ2xYRGVzdHJveVBi
dWZmZXIoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXkoKSkubmF0aXZlKCksIHJlc291cmNlKTsKK30KKwordGVtcGxhdGU8PiB2b2lkIFhV
bmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OkdMWFBpeG1hcD46OmRlbGV0ZVhSZXNvdXJjZShsb25n
IHVuc2lnbmVkIHJlc291cmNlKQoreworICAgIGlmIChyZXNvdXJjZSkKKyAgICAgICAgZ2xYRGVz
dHJveUdMWFBpeG1hcChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgcmVzb3VyY2UpOworfQorI2VuZGlmIC8vIFVT
RShHTFgpCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBMQVRGT1JNKFgx
MSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5p
cXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2OWE1YWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5oCkBAIC0w
LDAgKzEsMTY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFhVbmlxdWVfaAorI2RlZmluZSBYVW5pcXVlX2gKKworI2lmIFBMQVRGT1JNKFgxMSkK
KyNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXlYMTEuaCIKKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4K
KworI2lmIFVTRShHTFgpCit0eXBlZGVmIHN0cnVjdCBfX0dMWGNvbnRleHRSZWMqIEdMWENvbnRl
eHQ7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgR0xYUGJ1ZmZlcjsKK3R5cGVkZWYgdW5zaWduZWQg
bG9uZyBHTFhQaXhtYXA7CisKK2V4dGVybiAiQyIgdm9pZCBnbFhEZXN0cm95Q29udGV4dChEaXNw
bGF5KiwgR0xYQ29udGV4dCk7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFhQdHJEZWxldGVyIHsKKyAgICB2b2lkIG9wZXJhdG9y
KCkoVCogcHRyKSBjb25zdCB7IFhGcmVlKHB0cik7IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+Cit1c2luZyBYVW5pcXVlUHRyID0gc3RkOjp1bmlxdWVfcHRyPFQsIFhQdHJEZWxldGVyPFQ+
PjsKKworI2RlZmluZSBERUZJTkVfWFBUUl9ERUxFVEVSKHR5cGVOYW1lLCBkZWxldGVyRnVuYykg
XAorICAgIHRlbXBsYXRlPD4gc3RydWN0IFhQdHJEZWxldGVyPHR5cGVOYW1lPiBcCisgICAgeyBc
CisgICAgICAgIHZvaWQgb3BlcmF0b3IoKSAodHlwZU5hbWUqIHB0cikgY29uc3QgXAorICAgICAg
ICB7IFwKKyAgICAgICAgICAgIGlmIChwdHIpIFwKKyAgICAgICAgICAgICAgICBkZWxldGVyRnVu
YyhwdHIpOyBcCisgICAgICAgIH0gXAorICAgIH07CisKKyNkZWZpbmUgREVGSU5FX1hQVFJfREVM
RVRFUl9XSVRIX0RJU1BMQVkodHlwZU5hbWUsIGRlbGV0ZXJGdW5jKSBcCisgICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgWFB0ckRlbGV0ZXI8dHlwZU5hbWU+IFwKKyAgICB7IFwKKyAgICAgICAgdm9pZCBv
cGVyYXRvcigpICh0eXBlTmFtZSogcHRyKSBjb25zdCBcCisgICAgICAgIHsgXAorICAgICAgICAg
ICAgaWYgKHB0cikgXAorICAgICAgICAgICAgICAgIGRlbGV0ZXJGdW5jKGRvd25jYXN0PFBsYXRm
b3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgp
LCBwdHIpOyBcCisgICAgICAgIH0gXAorICAgIH07CisKKworREVGSU5FX1hQVFJfREVMRVRFUihY
SW1hZ2UsIFhEZXN0cm95SW1hZ2UpCitERUZJTkVfWFBUUl9ERUxFVEVSX1dJVEhfRElTUExBWShf
WEdDLCBYRnJlZUdDKQorCisjaWYgVVNFKEdMWCkKK0RFRklORV9YUFRSX0RFTEVURVJfV0lUSF9E
SVNQTEFZKF9fR0xYY29udGV4dFJlYywgZ2xYRGVzdHJveUNvbnRleHQpCisjZW5kaWYKKworI3Vu
ZGVmIERFRklORV9YUFRSX0RFTEVURVIKKyN1bmRlZiBERUZJTkVfWFBUUl9ERUxFVEVSX1dJVEhf
RElTUExBWQorCitlbnVtIGNsYXNzIFhSZXNvdXJjZSB7CisgICAgQ29sb3JtYXAsCisgICAgRGFt
YWdlLAorICAgIFBpeG1hcCwKKyAgICBXaW5kb3csCisjaWYgVVNFKEdMWCkKKyAgICBHTFhQYnVm
ZmVyLAorICAgIEdMWFBpeG1hcCwKKyNlbmRpZgorfTsKKwordGVtcGxhdGUgPFhSZXNvdXJjZSBU
PiBjbGFzcyBYVW5pcXVlUmVzb3VyY2UgeworcHVibGljOgorICAgIFhVbmlxdWVSZXNvdXJjZSgp
CisgICAgICAgIDogbV9yZXNvdXJjZSgwKQorICAgIHsKKyAgICB9CisKKyAgICBYVW5pcXVlUmVz
b3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKKyAgICAgICAgOiBtX3Jlc291cmNlKHJlc291
cmNlKQorICAgIHsKKyAgICB9CisKKyAgICBYVW5pcXVlUmVzb3VyY2UoWFVuaXF1ZVJlc291cmNl
JiYgdW5pcXVlUmVzb3VyY2UpCisgICAgICAgIDogbV9yZXNvdXJjZSh1bmlxdWVSZXNvdXJjZS5y
ZWxlYXNlKCkpCisgICAgeworICAgIH0KKworICAgIFhVbmlxdWVSZXNvdXJjZSYgb3BlcmF0b3I9
KFhVbmlxdWVSZXNvdXJjZSYmIHVuaXF1ZVJlc291cmNlKQorICAgIHsKKyAgICAgICAgcmVzZXQo
dW5pcXVlUmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0K
KworICAgIH5YVW5pcXVlUmVzb3VyY2UoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICB9
CisKKyAgICBsb25nIHVuc2lnbmVkIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2U7IH0K
KyAgICBsb25nIHVuc2lnbmVkIHJlbGVhc2UoKSB7IGxvbmcgdW5zaWduZWQgcmVzb3VyY2UgPSBt
X3Jlc291cmNlOyBtX3Jlc291cmNlID0gMDsgcmV0dXJuIHJlc291cmNlOyB9CisKKyAgICB2b2lk
IHJlc2V0KGxvbmcgdW5zaWduZWQgcmVzb3VyY2UgPSAwKQorICAgIHsKKyAgICAgICAgc3RkOjpz
d2FwKG1fcmVzb3VyY2UsIHJlc291cmNlKTsKKyAgICAgICAgZGVsZXRlWFJlc291cmNlKHJlc291
cmNlKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3Jl
c291cmNlOyB9CisKKyAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxp
Y2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCisg
ICAgdHlwZWRlZiB2b2lkKiAoWFVuaXF1ZVJlc291cmNlOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7
CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fcmVzb3VyY2UgPyByZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVkQm9vbFR5
cGUqPigxKSA6IDA7CisgICAgfQorCisgICAgWFVuaXF1ZVJlc291cmNlKGNvbnN0IFhVbmlxdWVS
ZXNvdXJjZSYpID0gZGVsZXRlOworICAgIFhVbmlxdWVSZXNvdXJjZSYgb3BlcmF0b3I9KGNvbnN0
IFhVbmlxdWVSZXNvdXJjZSYpID0gZGVsZXRlOworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBk
ZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSk7CisKKyAgICBsb25nIHVuc2ln
bmVkIG1fcmVzb3VyY2U7Cit9OworCit0eXBlZGVmIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6
OkNvbG9ybWFwPiBYVW5pcXVlQ29sb3JtYXA7Cit0eXBlZGVmIFhVbmlxdWVSZXNvdXJjZTxYUmVz
b3VyY2U6OkRhbWFnZT4gWFVuaXF1ZURhbWFnZTsKK3R5cGVkZWYgWFVuaXF1ZVJlc291cmNlPFhS
ZXNvdXJjZTo6UGl4bWFwPiBYVW5pcXVlUGl4bWFwOwordHlwZWRlZiBYVW5pcXVlUmVzb3VyY2U8
WFJlc291cmNlOjpXaW5kb3c+IFhVbmlxdWVXaW5kb3c7CisjaWYgVVNFKEdMWCkKK3R5cGVkZWYg
WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj4gWFVuaXF1ZUdMWFBidWZmZXI7
Cit0eXBlZGVmIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OkdMWFBpeG1hcD4gWFVuaXF1ZUdM
WFBpeG1hcDsKKyNlbmRpZgorCisvLyBHaXZlIGEgbmFtZSBhbHNvIHRvIHRoZXNlIFhVbmlxdWVQ
dHIgdG8gYXZvaWQgaGF2aW5nIHRvIHVzZSB0aGUgaW50ZXJuYWwgc3RydWN0IG5hbWVzIChfWEdD
LCBfX0dMWGNvbnRleHRSZWMsIC4uLikuCit0eXBlZGVmIFhVbmlxdWVQdHI8X1hHQz4gWFVuaXF1
ZUdDOworI2lmIFVTRShHTFgpCit0eXBlZGVmIFhVbmlxdWVQdHI8X19HTFhjb250ZXh0UmVjPiBY
VW5pcXVlR0xYQ29udGV4dDsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBQTEFURk9STShYMTEpCisKKyNlbmRpZiAvLyBYVW5pcXVlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBiNzE5MzczLi41OTkxYWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTUtMDUt
MDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtYMTFdIEFkZCBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8gYXV0b21hdGljYWxs
eSBmcmVlIFggcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDQ1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVc2UgWFVuaXF1ZVB0ciBhbmQgWFVuaXF1ZVJlc291cmNlIHRvIGZyZWUgWCBy
ZXNvdXJjZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMSBkaXIKKyAgICAgICAgdG8gdGhlIGluY2x1ZGUgZGly
IGxpc3QuCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IERpdHRvLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCk6IERvIG5vdCBwYXNzIHRoZSBkaXNwbGF5IHRvCisg
ICAgICAgIHRoZSBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEgY29uc3RydWN0b3IuCisgICAg
ICAgICogVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
Ojp+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVzaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3c6OmNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnN1cmZhY2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaDoKKyAgICAgICAg
KFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OndpbmRvd0lEKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemVX
aW5kb3dsZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtRGVz
dHJveSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFp
bnQpOgorCiAyMDE1LTA1LTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbU09VUF0gTmV0d29yayBDYWNoZTogSW1wbGVtZW50IFNoYXJlYWJs
ZVJlc291cmNlIGZvciBTb3VwIGFuZCBlbmFibGUgaXQgZm9yIEdUSyBwbGF0Zm9ybQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCA1YTAyZWEyLi5lZmVmZWJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtMjI2LDYgKzIyNiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVE
RV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
byIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZWZsIgogICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZSIKKyAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vZ3JhcGhpY3MveDExIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvZW5jaGFudCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vTmV0d29ya1Byb2Nlc3MvZWZsIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCBkMjc0MGI2Li5lNDg2ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtNDU4LDYgKzQ1OCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ndGsiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhp
Y3MveDExIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAiCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvZW5jaGFudCIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vRGF0YWJhc2VQcm9jZXNzL3VuaXgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCBiZDgwYjM3Li4yZmIzMGI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVD
YWlyby5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEJhY2tpbmdTdG9yZUJh
Y2tlbmRDYWlybz4gQmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5kKCkKICAgICAgICAgR2RrVmlz
dWFsKiB2aXN1YWwgPSBndGtfd2lkZ2V0X2dldF92aXN1YWwobV93ZWJQYWdlUHJveHkudmlld1dp
ZGdldCgpKTsKICAgICAgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBnZGtfdmlzdWFsX2dldF9zY3Jl
ZW4odmlzdWFsKTsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4o
c2hhcmVkRGlzcGxheSkubmF0aXZlKCkgPT0gR0RLX1NDUkVFTl9YRElTUExBWShzY3JlZW4pKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJv
WDExPihkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHNoYXJlZERpc3BsYXkpLm5hdGl2ZSgp
LCBHREtfV0lORE9XX1hJRChnZGtfc2NyZWVuX2dldF9yb290X3dpbmRvdyhzY3JlZW4pKSwKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDEx
PihHREtfV0lORE9XX1hJRChnZGtfc2NyZWVuX2dldF9yb290X3dpbmRvdyhzY3JlZW4pKSwKICAg
ICAgICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBnZGtfdmlzdWFsX2dldF9kZXB0
aCh2aXN1YWwpLCBtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93LmNwcAppbmRleCA0NDRmODY0Li4zZmJhMzI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaWYgVVNFKFJFRElSRUNURURfWENPTVBP
U0lURV9XSU5ET1cpCiAKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgogI2luY2x1ZGUgPFgxMS9leHRl
bnNpb25zL1hjb21wb3NpdGUuaD4KICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YZGFtYWdlLmg+
CiAjaW5jbHVkZSA8Y2Fpcm8teGxpYi5oPgpAQCAtMTM1LDIxICsxMzYsMTggQEAgc3RkOjp1bmlx
dWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdzo6Y3JlYXRlKEcKIAogUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93KEdka1dpbmRvdyogcGFyZW50V2luZG93LCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gZGFtYWdlTm90aWZ5KQogICAgIDogbV9kaXNwbGF5KEdES19ESVNQTEFZX1hESVNQTEFZ
KGdka193aW5kb3dfZ2V0X2Rpc3BsYXkocGFyZW50V2luZG93KSkpCi0gICAgLCBtX3dpbmRvdygw
KQotICAgICwgbV9wYXJlbnRXaW5kb3coMCkKLSAgICAsIG1fcGl4bWFwKDApCi0gICAgLCBtX2Rh
bWFnZSgwKQogICAgICwgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplKGZhbHNlKQogeworICAg
IEFTU0VSVChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpKS5uYXRpdmUoKSA9PSBtX2Rpc3BsYXkpOwogICAgIFNjcmVlbiogc2NyZWVu
ID0gRGVmYXVsdFNjcmVlbk9mRGlzcGxheShtX2Rpc3BsYXkpOwogCiAgICAgR2RrVmlzdWFsKiB2
aXN1YWwgPSBnZGtfd2luZG93X2dldF92aXN1YWwocGFyZW50V2luZG93KTsKLSAgICBDb2xvcm1h
cCBjb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChtX2Rpc3BsYXksIFJvb3RXaW5kb3dPZlNjcmVl
bihzY3JlZW4pLCBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgQWxsb2NOb25lKTsKKyAgICBY
VW5pcXVlQ29sb3JtYXAgY29sb3JtYXAoWENyZWF0ZUNvbG9ybWFwKG1fZGlzcGxheSwgUm9vdFdp
bmRvd09mU2NyZWVuKHNjcmVlbiksIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBBbGxvY05v
bmUpKTsKIAogICAgIC8vIFRoaXMgaXMgYmFzZWQgb24gY29kZSBmcm9tIENocm9taXVtOiBzcmMv
Y29udGVudC9jb21tb24vZ3B1L2ltYWdlX3RyYW5zcG9ydF9zdXJmYWNlX2xpbnV4LmNjCiAgICAg
WFNldFdpbmRvd0F0dHJpYnV0ZXMgd2luZG93QXR0cmlidXRlczsKICAgICB3aW5kb3dBdHRyaWJ1
dGVzLm92ZXJyaWRlX3JlZGlyZWN0ID0gVHJ1ZTsKLSAgICB3aW5kb3dBdHRyaWJ1dGVzLmNvbG9y
bWFwID0gY29sb3JtYXA7CisgICAgd2luZG93QXR0cmlidXRlcy5jb2xvcm1hcCA9IGNvbG9ybWFw
LmdldCgpOwogCiAgICAgLy8gQ1dCb3JkZXJQaXhlbCBtdXN0IGJlIHByZXNlbnQgd2hlbiB0aGUg
ZGVwdGggZG9lc24ndCBtYXRjaCB0aGUgcGFyZW50J3Mgb25lLgogICAgIC8vIFNlZSBodHRwOi8v
Y2dpdC5mcmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL3RyZWUvZGl4L3dpbmRvdy5jP2lkPXhv
cmctc2VydmVyLTEuMTYuMCNuNzAzLgpAQCAtMTY0LDEzICsxNjIsMTMgQEAgUmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KEdka1dpbmRvdyogcGFy
ZW50V2luZG93LAogICAgICAgICBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwKICAgICAgICAg
Q1dPdmVycmlkZVJlZGlyZWN0IHwgQ1dDb2xvcm1hcCB8IENXQm9yZGVyUGl4ZWwsCiAgICAgICAg
ICZ3aW5kb3dBdHRyaWJ1dGVzKTsKLSAgICBYTWFwV2luZG93KG1fZGlzcGxheSwgbV9wYXJlbnRX
aW5kb3cpOworICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3BhcmVudFdpbmRvdy5nZXQoKSk7
CiAKICAgICB3aW5kb3dBdHRyaWJ1dGVzLmV2ZW50X21hc2sgPSBTdHJ1Y3R1cmVOb3RpZnlNYXNr
OwogICAgIHdpbmRvd0F0dHJpYnV0ZXMub3ZlcnJpZGVfcmVkaXJlY3QgPSBGYWxzZTsKICAgICAv
LyBDcmVhdGUgdGhlIHdpbmRvdyBvZiBhdCBsYXN0IDF4MSBzaW5jZSBYIGRvZXNuJ3QgYWxsb3cg
dG8gY3JlYXRlIGVtcHR5IHdpbmRvd3MuCiAgICAgbV93aW5kb3cgPSBYQ3JlYXRlV2luZG93KG1f
ZGlzcGxheSwKLSAgICAgICAgbV9wYXJlbnRXaW5kb3csCisgICAgICAgIG1fcGFyZW50V2luZG93
LmdldCgpLAogICAgICAgICAwLCAwLAogICAgICAgICBzdGQ6Om1heCgxLCBtX3NpemUud2lkdGgo
KSksCiAgICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQoKSksCkBAIC0xODAsMjEgKzE3
OCwxOSBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3coR2RrV2luZG93KiBwYXJlbnRXaW5kb3csCiAgICAgICAgIENvcHlGcm9tUGFyZW50LAog
ICAgICAgICBDV0V2ZW50TWFzaywKICAgICAgICAgJndpbmRvd0F0dHJpYnV0ZXMpOwotICAgIFhN
YXBXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdyk7CisgICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXks
IG1fd2luZG93LmdldCgpKTsKIAotICAgIFhGcmVlQ29sb3JtYXAobV9kaXNwbGF5LCBjb2xvcm1h
cCk7Ci0KLSAgICB4RGFtYWdlTm90aWZpZXIoKS5hZGQobV93aW5kb3csIFdURjo6bW92ZShkYW1h
Z2VOb3RpZnkpKTsKKyAgICB4RGFtYWdlTm90aWZpZXIoKS5hZGQobV93aW5kb3cuZ2V0KCksIFdU
Rjo6bW92ZShkYW1hZ2VOb3RpZnkpKTsKIAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIFhFdmVu
dCBldmVudDsKLSAgICAgICAgWFdpbmRvd0V2ZW50KG1fZGlzcGxheSwgbV93aW5kb3csIFN0cnVj
dHVyZU5vdGlmeU1hc2ssICZldmVudCk7Ci0gICAgICAgIGlmIChldmVudC50eXBlID09IE1hcE5v
dGlmeSAmJiBldmVudC54bWFwLndpbmRvdyA9PSBtX3dpbmRvdykKKyAgICAgICAgWFdpbmRvd0V2
ZW50KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIFN0cnVjdHVyZU5vdGlmeU1hc2ssICZldmVu
dCk7CisgICAgICAgIGlmIChldmVudC50eXBlID09IE1hcE5vdGlmeSAmJiBldmVudC54bWFwLndp
bmRvdyA9PSBtX3dpbmRvdy5nZXQoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBY
U2VsZWN0SW5wdXQobV9kaXNwbGF5LCBtX3dpbmRvdywgTm9FdmVudE1hc2spOwotICAgIFhDb21w
b3NpdGVSZWRpcmVjdFdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93LCBDb21wb3NpdGVSZWRpcmVj
dE1hbnVhbCk7Ci0gICAgbV9kYW1hZ2UgPSBYRGFtYWdlQ3JlYXRlKG1fZGlzcGxheSwgbV93aW5k
b3csIFhEYW1hZ2VSZXBvcnROb25FbXB0eSk7CisgICAgWFNlbGVjdElucHV0KG1fZGlzcGxheSwg
bV93aW5kb3cuZ2V0KCksIE5vRXZlbnRNYXNrKTsKKyAgICBYQ29tcG9zaXRlUmVkaXJlY3RXaW5k
b3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOwor
ICAgIG1fZGFtYWdlID0gWERhbWFnZUNyZWF0ZShtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBY
RGFtYWdlUmVwb3J0Tm9uRW1wdHkpOwogfQogCiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6
flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKQEAgLTIwNCwxMiArMjAwLDEyIEBAIFJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coKQogICAg
IEFTU0VSVChtX3dpbmRvdyk7CiAgICAgQVNTRVJUKG1fcGFyZW50V2luZG93KTsKIAotICAgIHhE
YW1hZ2VOb3RpZmllcigpLnJlbW92ZShtX3dpbmRvdyk7CisgICAgeERhbWFnZU5vdGlmaWVyKCku
cmVtb3ZlKG1fd2luZG93LmdldCgpKTsKIAotICAgIFhEYW1hZ2VEZXN0cm95KG1fZGlzcGxheSwg
bV9kYW1hZ2UpOwotICAgIFhEZXN0cm95V2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cpOwotICAg
IFhEZXN0cm95V2luZG93KG1fZGlzcGxheSwgbV9wYXJlbnRXaW5kb3cpOwotICAgIGNsZWFudXBQ
aXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7CisgICAgLy8gRXhwbGljaXQgcmVzZXQgdGhlc2UgYmVj
YXVzZSB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBoYXBwZW5zIGluIHRoaXMgb3JkZXIuCisgICAgbV9k
YW1hZ2UucmVzZXQoKTsKKyAgICBtX3dpbmRvdy5yZXNldCgpOworICAgIG1fcGFyZW50V2luZG93
LnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQpAQCAtMjE4LDcgKzIxNCw3IEBAIHZvaWQgUmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3c6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBSZXNpemUgdGhlIHdpbmRvdyB0byBhdCBsYXN0IDF4MSBzaW5jZSBYIGRv
ZXNuJ3QgYWxsb3cgdG8gY3JlYXRlIGVtcHR5IHdpbmRvd3MuCi0gICAgWFJlc2l6ZVdpbmRvdyht
X2Rpc3BsYXksIG1fd2luZG93LCBzdGQ6Om1heCgxLCBzaXplLndpZHRoKCkpLCBzdGQ6Om1heCgx
LCBzaXplLmhlaWdodCgpKSk7CisgICAgWFJlc2l6ZVdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93
LmdldCgpLCBzdGQ6Om1heCgxLCBzaXplLndpZHRoKCkpLCBzdGQ6Om1heCgxLCBzaXplLmhlaWdo
dCgpKSk7CiAgICAgWEZsdXNoKG1fZGlzcGxheSk7CiAKICAgICBtX3NpemUgPSBzaXplOwpAQCAt
MjMyLDkgKzIyOCw4IEBAIHZvaWQgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNsZWFudXBQ
aXhtYXBBbmRQaXhtYXBTdXJmYWNlKCkKICAgICBpZiAoIW1fcGl4bWFwKQogICAgICAgICByZXR1
cm47CiAKLSAgICBYRnJlZVBpeG1hcChtX2Rpc3BsYXksIG1fcGl4bWFwKTsKLSAgICBtX3BpeG1h
cCA9IDA7CiAgICAgbV9zdXJmYWNlID0gbnVsbHB0cjsKKyAgICBtX3BpeG1hcC5yZXNldCgpOwog
fQogCiBjYWlyb19zdXJmYWNlX3QqIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpzdXJmYWNl
KCkKQEAgLTI0NywyMCArMjQyLDE5IEBAIGNhaXJvX3N1cmZhY2VfdCogUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3c6OnN1cmZhY2UoKQogCiAgICAgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXpl
ID0gZmFsc2U7CiAKLSAgICBQaXhtYXAgbmV3UGl4bWFwID0gWENvbXBvc2l0ZU5hbWVXaW5kb3dQ
aXhtYXAobV9kaXNwbGF5LCBtX3dpbmRvdyk7CisgICAgWFVuaXF1ZVBpeG1hcCBuZXdQaXhtYXAo
WENvbXBvc2l0ZU5hbWVXaW5kb3dQaXhtYXAobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSkpOwog
ICAgIGlmICghbmV3UGl4bWFwKSB7CiAgICAgICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJm
YWNlKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIFhXaW5kb3dBdHRy
aWJ1dGVzIHdpbmRvd0F0dHJpYnV0ZXM7Ci0gICAgaWYgKCFYR2V0V2luZG93QXR0cmlidXRlcyht
X2Rpc3BsYXksIG1fd2luZG93LCAmd2luZG93QXR0cmlidXRlcykpIHsKKyAgICBpZiAoIVhHZXRX
aW5kb3dBdHRyaWJ1dGVzKG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksICZ3aW5kb3dBdHRyaWJ1
dGVzKSkgewogICAgICAgICBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgpOwotICAgICAg
ICBYRnJlZVBpeG1hcChtX2Rpc3BsYXksIG5ld1BpeG1hcCk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5ld1N1cmZhY2UgPSBh
ZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKG1fZGlzcGxheSwgbmV3UGl4bWFwLCB3
aW5kb3dBdHRyaWJ1dGVzLnZpc3VhbCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSkp
OworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5ld1N1cmZhY2UgPSBhZG9wdFJlZihjYWly
b194bGliX3N1cmZhY2VfY3JlYXRlKG1fZGlzcGxheSwgbmV3UGl4bWFwLmdldCgpLCB3aW5kb3dB
dHRyaWJ1dGVzLnZpc3VhbCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSkpOwogCiAg
ICAgLy8gTnZpZGlhIGRyaXZlcnMgc2VlbSB0byBwcmVwYXJlIHRoZWlyIHJlZGlyZWN0ZWQgd2lu
ZG93IHBpeG1hcCBhc3luY2hyb25vdXNseSwgc28gZm9yIGEgZmV3IGZyYWN0aW9ucwogICAgIC8v
IG9mIGEgc2Vjb25kIGFmdGVyIGVhY2ggcmVzaXplLCB3aGlsZSBkb2luZyBjb250aW51b3VzIHJl
c2l6aW5nICh3aGljaCBjb25zdGFudGx5IGRlc3Ryb3lzIGFuZCBjcmVhdGVzCkBAIC0yNzUsNyAr
MjY5LDcgQEAgY2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6c3Vy
ZmFjZSgpCiAgICAgfQogCiAgICAgY2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UoKTsKLSAg
ICBtX3BpeG1hcCA9IG5ld1BpeG1hcDsKKyAgICBtX3BpeG1hcCA9IFdURjo6bW92ZShuZXdQaXht
YXApOwogICAgIG1fc3VyZmFjZSA9IG5ld1N1cmZhY2U7CiAgICAgcmV0dXJuIG1fc3VyZmFjZS5n
ZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAppbmRleCAzYWE0ZmY1Li41NGYzZjdkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3cuaApAQCAtMzEsMTEgKzMxLDEyIEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0lu
dFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+Ci0jaW5jbHVkZSA8WDEx
L1hsaWIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWUuaD4KICNpbmNsdWRlIDxmdW5jdGlv
bmFsPgogCiB0eXBlZGVmIHN0cnVjdCBfR2RrV2luZG93IEdka1dpbmRvdzsKIHR5cGVkZWYgdW5z
aWduZWQgbG9uZyBEYW1hZ2U7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgV2luZG93OwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIApAQCAtNDQsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gY3JlYXRlKEdka1dpbmRv
dyosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBkYW1hZ2VOb3RpZnkpOwogICAgIH5SZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdygpOwogCi0gICAgV2luZG93IHdpbmRvd0lEKCkgY29uc3QgeyByZXR1
cm4gbV93aW5kb3c7IH0KKyAgICBXaW5kb3cgd2luZG93SUQoKSBjb25zdCB7IHJldHVybiBtX3dp
bmRvdy5nZXQoKTsgfQogICAgIHZvaWQgcmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
ICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UoKTsKIApAQCAtNTQsMTAgKzU1LDEwIEBAIHBy
aXZhdGU6CiAKICAgICBEaXNwbGF5KiBtX2Rpc3BsYXk7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBt
X3NpemU7Ci0gICAgV2luZG93IG1fd2luZG93OwotICAgIFdpbmRvdyBtX3BhcmVudFdpbmRvdzsK
LSAgICBQaXhtYXAgbV9waXhtYXA7Ci0gICAgRGFtYWdlIG1fZGFtYWdlOworICAgIFdlYkNvcmU6
OlhVbmlxdWVXaW5kb3cgbV93aW5kb3c7CisgICAgV2ViQ29yZTo6WFVuaXF1ZVdpbmRvdyBtX3Bh
cmVudFdpbmRvdzsKKyAgICBXZWJDb3JlOjpYVW5pcXVlUGl4bWFwIG1fcGl4bWFwOworICAgIFdl
YkNvcmU6OlhVbmlxdWVEYW1hZ2UgbV9kYW1hZ2U7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gbV9zdXJmYWNlOwogICAgIGJvb2wgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggYjNjODNiZC4uNWQyMjYwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmgKQEAgLTQyLDYgKzQyLDEwIEBACiAjaW5jbHVkZSAiV2ViSGl0VGVzdFJlc3Vs
dC5oIgogI2VuZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyNpbmNsdWRlIDxX
ZWJDb3JlL1hVbmlxdWUuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBN
YWNoU2VuZFJpZ2h0OwogY2xhc3MgSFRUUEhlYWRlck1hcDsKQEAgLTM4Nyw3ICszOTEsNyBAQCBw
cml2YXRlOgogICAgIE5QX0NHQ29udGV4dCBtX25wQ0dDb250ZXh0OwogI2VuZGlmCiAjZWxpZiBQ
TFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSAgICBQaXhtYXAgbV9kcmF3YWJsZTsKKyAgICBXZWJD
b3JlOjpYVW5pcXVlUGl4bWFwIG1fZHJhd2FibGU7CiAgICAgRGlzcGxheSogbV9wbHVnaW5EaXNw
bGF5OwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBHdGtXaWRnZXQqIG1fcGxhdGZvcm1QbHVnaW5X
aWRnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCmluZGV4IDM3ZjQ3
OTMuLjIzNzFmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybURpc3BsYXlYMTEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWUuaD4KIAogI2lmIFBM
QVRGT1JNKEdUSykKICNpbmNsdWRlIDxndGsvZ3RrLmg+CkBAIC0xNzUsMTIgKzE3NiwxMCBAQCBi
b29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93bGVzcygpCiAg
ICAgdmlzdWFsVGVtcGxhdGUuZGVwdGggPSBkZXB0aDsKICAgICB2aXN1YWxUZW1wbGF0ZS5jX2Ns
YXNzID0gVHJ1ZUNvbG9yOwogICAgIGludCBudW1NYXRjaGluZzsKLSAgICBYVmlzdWFsSW5mbyog
dmlzdWFsSW5mbyA9IFhHZXRWaXN1YWxJbmZvKGRpc3BsYXksIFZpc3VhbFNjcmVlbk1hc2sgfCBW
aXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01hc2ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmdmlzdWFsVGVtcGxhdGUsICZudW1NYXRjaGluZyk7Cisg
ICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFsSW5mbyhYR2V0VmlzdWFsSW5mbyhkaXNw
bGF5LCBWaXN1YWxTY3JlZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwgVmlzdWFsQ2xhc3NNYXNr
LCAmdmlzdWFsVGVtcGxhdGUsICZudW1NYXRjaGluZykpOwogICAgIEFTU0VSVCh2aXN1YWxJbmZv
KTsKLSAgICBWaXN1YWwqIHZpc3VhbCA9IHZpc3VhbEluZm9bMF0udmlzdWFsOworICAgIFZpc3Vh
bCogdmlzdWFsID0gdmlzdWFsSW5mby5nZXQoKVswXS52aXN1YWw7CiAgICAgQVNTRVJUKHZpc3Vh
bCk7Ci0gICAgWEZyZWUodmlzdWFsSW5mbyk7CiAKICAgICBjYWxsYmFja1N0cnVjdC0+dmlzdWFs
ID0gdmlzdWFsOwogICAgIGNhbGxiYWNrU3RydWN0LT5jb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1h
cChkaXNwbGF5LCByb290V2luZG93SUQoKSwgdmlzdWFsLCBBbGxvY05vbmUpOwpAQCAtMjMyLDEw
ICsyMzEsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybURlc3Ryb3koKQogICAgIFhG
cmVlQ29sb3JtYXAoaG9zdERpc3BsYXksIGNhbGxiYWNrU3RydWN0LT5jb2xvcm1hcCk7CiAgICAg
ZGVsZXRlIGNhbGxiYWNrU3RydWN0OwogCi0gICAgaWYgKG1fZHJhd2FibGUpIHsKLSAgICAgICAg
WEZyZWVQaXhtYXAoaG9zdERpc3BsYXksIG1fZHJhd2FibGUpOwotICAgICAgICBtX2RyYXdhYmxl
ID0gMDsKLSAgICB9CisgICAgbV9kcmF3YWJsZS5yZXNldCgpOwogCiAjaWYgUExBVEZPUk0oR1RL
KQogICAgIGlmIChtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSB7CkBAIC0yNjIsMTggKzI1OCwxMiBA
QCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIERpc3BsYXkqIGRpc3BsYXkgPSB4MTFIb3N0RGlzcGxh
eSgpOwotICAgIGlmIChtX2RyYXdhYmxlKQotICAgICAgICBYRnJlZVBpeG1hcChkaXNwbGF5LCBt
X2RyYXdhYmxlKTsKLQotICAgIGlmIChtX3BsdWdpblNpemUuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IG1fZHJhd2FibGUgPSAwOworICAgIG1fZHJhd2FibGUucmVzZXQoKTsKKyAgICBpZiAobV9wbHVn
aW5TaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fZHJhd2Fi
bGUgPSBYQ3JlYXRlUGl4bWFwKGRpc3BsYXksIHJvb3RXaW5kb3dJRCgpLCBtX3BsdWdpblNpemUu
d2lkdGgoKSwgbV9wbHVnaW5TaXplLmhlaWdodCgpLCBkaXNwbGF5RGVwdGgoKSk7CiAKLSAgICBY
U3luYyhkaXNwbGF5LCBmYWxzZSk7IC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzZXJ2ZXIga25vd3Mg
YWJvdXQgdGhlIERyYXdhYmxlLgorICAgIG1fZHJhd2FibGUgPSBYQ3JlYXRlUGl4bWFwKHgxMUhv
c3REaXNwbGF5KCksIHJvb3RXaW5kb3dJRCgpLCBtX3BsdWdpblNpemUud2lkdGgoKSwgbV9wbHVn
aW5TaXplLmhlaWdodCgpLCBkaXNwbGF5RGVwdGgoKSk7CisgICAgWFN5bmMoeDExSG9zdERpc3Bs
YXkoKSwgZmFsc2UpOyAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc2VydmVyIGtub3dzIGFib3V0IHRo
ZSBEcmF3YWJsZS4KIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1WaXNpYmlsaXR5
RGlkQ2hhbmdlKCkKQEAgLTMwNyw3ICsyOTcsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0
Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydAog
ICAgIFhHcmFwaGljc0V4cG9zZUV2ZW50JiBleHBvc2VFdmVudCA9IHhldmVudC54Z3JhcGhpY3Nl
eHBvc2U7CiAgICAgZXhwb3NlRXZlbnQudHlwZSA9IEdyYXBoaWNzRXhwb3NlOwogICAgIGV4cG9z
ZUV2ZW50LmRpc3BsYXkgPSB4MTFIb3N0RGlzcGxheSgpOwotICAgIGV4cG9zZUV2ZW50LmRyYXdh
YmxlID0gbV9kcmF3YWJsZTsKKyAgICBleHBvc2VFdmVudC5kcmF3YWJsZSA9IG1fZHJhd2FibGUu
Z2V0KCk7CiAKICAgICBJbnRSZWN0IGV4cG9zZWRSZWN0KGRpcnR5UmVjdCk7CiAgICAgZXhwb3Nl
RXZlbnQueCA9IGV4cG9zZWRSZWN0LngoKTsKQEAgLTMyNCwxMSArMzE0LDggQEAgdm9pZCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRpcnQKICAgICAgICAgWFN5bmMobV9wbHVnaW5EaXNwbGF5LCBmYWxzZSk7CiAK
ICNpZiBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIFVTRShDQUlSTykpCi0gICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gZHJhd2FibGVTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9f
eGxpYl9zdXJmYWNlX2NyZWF0ZShtX3BsdWdpbkRpc3BsYXksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2RyYXdhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TlBT
ZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyktPnZpc3VhbCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcGx1Z2luU2l6ZS53aWR0aCgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wbHVnaW5TaXplLmhlaWdodCgpKSk7CisgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gZHJhd2FibGVTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9feGxpYl9zdXJmYWNlX2Ny
ZWF0ZShtX3BsdWdpbkRpc3BsYXksIG1fZHJhd2FibGUuZ2V0KCksCisgICAgICAgIHN0YXRpY19j
YXN0PE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPihtX25wV2luZG93LndzX2luZm8pLT52aXN1
YWwsIG1fcGx1Z2luU2l6ZS53aWR0aCgpLCBtX3BsdWdpblNpemUuaGVpZ2h0KCkpKTsKICAgICBj
YWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJv
X3NhdmUoY3IpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252485</attachid>
            <date>2015-05-06 09:52:46 -0700</date>
            <delta_ts>2015-05-06 10:07:29 -0700</delta_ts>
            <desc>Try to fix EFL build</desc>
            <filename>wk-xunique.diff</filename>
            <type>text/plain</type>
            <size>55480</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjhiMGU1Li5iNTgzNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQg
QEAKKzIwMTUtMDUtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtYMTFdIEFkZCBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8g
YXV0b21hdGljYWxseSBmcmVlIFggcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgWFVuaXF1ZVB0ciBhcyBhIHRlbXBsYXRlIGFsaWFz
IG9mIHN0ZDp1bmlxdWVfcHRyIHRvIGhhbmRsZSBYCisgICAgICAgIHJlc291cmNlcyB1c2luZyBw
b2ludGVycyBhbmQgWFVuaXF1ZVJlc291cmNlIGFzIGEgbmV3IGNsYXNzIHRvCisgICAgICAgIGhh
bmRsZSBYIHJlc291cmNlcyB1c2luZyBhIGxvbmcgdW5zaWduZWQgaWRlbnRpZmllci4gVGhpcwor
ICAgICAgICBzaW1wbGlmaWVzIHRoZSBjb2RlIGFuZCBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdCB0
byBsZWFrIFggcmVzb3VyY2VzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBu
ZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFk
ZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDEx
KToKKyAgICAgICAgUmVtb3ZlIHRoZSBkaXNwbGF5IG1lbWJlciwgYW5kIHVzZSBYVW5pcXVlIGZv
ciBQaXhtYXAgYW5kIEdDLgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZENh
aXJvWDExOjp+QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKToKKyAgICAgICAgUmVtb3ZlIGNv
ZGUgdG8gZXhwbGljaXRseSBmcmVlIFBpeG1hcCBhbmQgR0MuCisgICAgICAgIChXZWJDb3JlOjpC
YWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6OnNjcm9sbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQpOiBVc2UgWFVuaXF1ZSBhbmQgdGhl
CisgICAgICAgIG5ldyBjb25zdHJ1Y3RvciB0aGF0IHJlY2VpdmVzIGEgWElELCBzaW5jZSB0aGVy
ZSdzIG5vIGxvbmdlcgorICAgICAgICBjb25mbGljdCB3aXRoIHRoZSBvbmUgcmVjZWl2aW5nIGEg
UGJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNv
bnRleHQpOiBVc2UgWFVuaXF1ZSBhbmQgdGhlCisgICAgICAgIG5ldyBjb25zdHJ1Y3RvciB0aGF0
IHJlY2VpdmVzIGEgWFVuaXF1ZUdMWFBidWZmZXImJi4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRHTFg6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpH
TENvbnRleHRHTFgpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0
R0xYKTogUmVtb3ZlIGNvZGUgdG8gZXhwbGljaXRseQorICAgICAgICBmcmVlIFggcmVzb3VyY2Vz
LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjptYWtlQ29udGV4dEN1cnJlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRHTFg6OnBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFR0xY
VHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OmRlc3Ryb3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OnByZXBhcmVUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTFRleHR1cmVGcm9tUGl4bWFwOjpFR0xUZXh0dXJlRnJv
bVBpeG1hcCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
ZWdsL0VHTFhTdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWENvbmZpZ1NlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxl
Y3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnKTogVXNlIFhVbmlxdWUKKyAgICAgICAgaW5zdGVhZCBv
ZiB0aGUgY3VzdG9tIHN0ZDo6dW5pcXVlIFgxMURlbGV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpH
TFhDb25maWdTZWxlY3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnV2l0aFZpc3VhbElkKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0U3Vy
ZmFjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R0xYT2ZmU2NyZWVuU3VyZmFjZTo6aW5p
dGlhbGl6ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9YMTFIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WDExSGVscGVyOjpjcmVhdGVPZmZT
Y3JlZW5XaW5kb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlgxMUhlbHBlcjo6Y3JlYXRl
UGl4bWFwKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L1gxMUhlbHBlci5oOiBSZW1vdmUgWDExRGVsZXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy94MTEvWFVuaXF1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJl
c291cmNlPFhSZXNvdXJjZTo6Q29sb3JtYXA+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6RGFtYWdlPjo6ZGVsZXRlWFJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OlBpeG1h
cD46OmRlbGV0ZVhSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8
WFJlc291cmNlOjpXaW5kb3c+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj46OmRlbGV0ZVhSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpHTFhQaXhtYXA+
OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5p
cXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkp
OgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpYVW5pcXVlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpvcGVyYXRvcj0pOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjp+WFVuaXF1ZVJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVS
ZXNvdXJjZTo6cmVsZWFzZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U6OnJl
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6b3BlcmF0b3IhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSopOgorCiAyMDE1LTA1LTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gTmV0d29yayBDYWNoZTogSW1wbGVtZW50IFNoYXJl
YWJsZVJlc291cmNlIGZvciBTb3VwIGFuZCBlbmFibGUgaXQgZm9yIEdUSyBwbGF0Zm9ybQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3NjRiMzM2Li40ZmY2ODk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMTk3LDYgKzE5Nyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxh
cy5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuY3BwCiAKICAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggYjVkMDliNy4uYWU5OGY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEy
Niw2ICsxMjYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKIAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MveDExL1hVbmlxdWUuY3BwCiAKICAgICBwbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAogICAg
IHBsYXRmb3JtL2d0ay9FdmVudExvb3BHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExLmNwcAppbmRleCA0YzA4NzJmLi43Yjg2MzFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm9YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Jh
Y2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMS5jcHAKQEAgLTI2LDE3ICsyNiwxNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0
b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqIGRpc3BsYXksIHVuc2lnbmVkIGxvbmcgcm9vdFdp
bmRvd0lELCBWaXN1YWwqIHZpc3VhbCwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiBzaXplLCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFj
a2luZ1N0b3JlQmFja2VuZENhaXJvWDExKHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lELCBWaXN1
YWwqIHZpc3VhbCwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikKICAgICA6IEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyhzaXplKQotICAgICwg
bV9kaXNwbGF5KGRpc3BsYXkpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gc2l6ZTsKICAg
ICBzY2FsZWRTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKIAotICAgIG1fcGl4bWFwID0g
WENyZWF0ZVBpeG1hcChtX2Rpc3BsYXksIHJvb3RXaW5kb3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgp
LCBzY2FsZWRTaXplLmhlaWdodCgpLCBkZXB0aCk7Ci0gICAgbV9nYyA9IFhDcmVhdGVHQyhtX2Rp
c3BsYXksIG1fcGl4bWFwLCAwLCBudWxscHRyKTsKKyAgICBhdXRvKiBkaXNwbGF5ID0gZG93bmNh
c3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSku
bmF0aXZlKCk7CisgICAgbV9waXhtYXAgPSBYQ3JlYXRlUGl4bWFwKGRpc3BsYXksIHJvb3RXaW5k
b3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhlaWdodCgpLCBkZXB0aCk7Cisg
ICAgbV9nYy5yZXNldChYQ3JlYXRlR0MoZGlzcGxheSwgbV9waXhtYXAuZ2V0KCksIDAsIG51bGxw
dHIpKTsKIAotICAgIG1fc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVh
dGUobV9kaXNwbGF5LCBtX3BpeG1hcCwgdmlzdWFsLCBzY2FsZWRTaXplLndpZHRoKCksIHNjYWxl
ZFNpemUuaGVpZ2h0KCkpKTsKKyAgICBtX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1
cmZhY2VfY3JlYXRlKGRpc3BsYXksIG1fcGl4bWFwLmdldCgpLCB2aXN1YWwsIHNjYWxlZFNpemUu
d2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWlnaHQoKSkpOwogICAgIGNhaXJvU3VyZmFjZVNldERldmlj
ZVNjYWxlKG1fc3VyZmFjZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFj
dG9yKTsKIH0KIApAQCAtNDQsOCArNDQsNiBAQCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6
On5CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEoKQogewogICAgIC8vIFRoZSBwaXhtYXAgbmVl
ZHMgdG8gZXhpc3Qgd2hlbiB0aGUgc3VyZmFjZSBpcyBkZXN0cm95ZWQsIHNvIGJlZ2luIGJ5IGNs
ZWFyaW5nIGl0LgogICAgIG1fc3VyZmFjZS5jbGVhcigpOwotICAgIFhGcmVlUGl4bWFwKG1fZGlz
cGxheSwgbV9waXhtYXApOwotICAgIFhGcmVlR0MobV9kaXNwbGF5LCBtX2djKTsKIH0KIAogdm9p
ZCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3Jv
bGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpCkBAIC02NSw3ICs2Myw3IEBAIHZv
aWQgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExOjpzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Ny
b2xsUmVjdCwgY29uc3QgSW50U2l6CiAgICAgc2NhbGVkU2Nyb2xsT2Zmc2V0LnNjYWxlKHhTY2Fs
ZSwgeVNjYWxlKTsKIAogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsK
LSAgICBYQ29weUFyZWEobV9kaXNwbGF5LCBtX3BpeG1hcCwgbV9waXhtYXAsIG1fZ2MsCisgICAg
WENvcHlBcmVhKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBtX3BpeG1hcC5nZXQoKSwgbV9waXhtYXAuZ2V0KCks
IG1fZ2MuZ2V0KCksCiAgICAgICAgIHRhcmdldFJlY3QueCgpIC0gc2NhbGVkU2Nyb2xsT2Zmc2V0
LndpZHRoKCksIHRhcmdldFJlY3QueSgpIC0gc2NhbGVkU2Nyb2xsT2Zmc2V0LmhlaWdodCgpLAog
ICAgICAgICB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIHRhcmdldFJl
Y3QueCgpLCB0YXJnZXRSZWN0LnkoKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3Jl
Y3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwg
dGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyb1gxMS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2lu
Z1N0b3JlQmFja2VuZENhaXJvWDExLmgKaW5kZXggMWRlMGQ4NC4uNDA3OGE2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmgKQEAgLTIyLDIxICsyMiwyMCBAQAogI2lu
Y2x1ZGUgIkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyby5oIgogCiAjaWYgVVNFKENBSVJPKSAmJiBQ
TEFURk9STShYMTEpCi0jaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlICJYVW5pcXVlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmFja2luZ1N0b3JlQmFja2VuZENhaXJv
WDExIGZpbmFsIDogcHVibGljIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyB7CiBwdWJsaWM6Ci0g
ICAgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqLCB1bnNpZ25lZCBsb25nIHJv
b3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IpOworICAgIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMSh1bnNpZ25l
ZCBsb25nIHJvb3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIHZpcnR1YWwgfkJhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb1gxMSgpOwogCiAgICAgdm9pZCBzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVj
dCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBEaXNwbGF5KiBtX2Rpc3BsYXk7Ci0gICAgUGl4bWFwIG1fcGl4bWFwOwotICAgIEdDIG1fZ2M7
CisgICAgWFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKKyAgICBYVW5pcXVlR0MgbV9nYzsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggZjc0NjdhNy4uYzEwOGNjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5jcHAKQEAgLTQzLDI1ICs0MywxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgR0xDbwog
ICAgIHZpc3VhbEluZm8udmlzdWFsaWQgPSBYVmlzdWFsSURGcm9tVmlzdWFsKGF0dHJpYnV0ZXMu
dmlzdWFsKTsKIAogICAgIGludCBudW1SZXR1cm5lZCA9IDA7Ci0gICAgWFZpc3VhbEluZm8qIHZp
c3VhbEluZm9MaXN0ID0gWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsSURNYXNrLCAmdmlz
dWFsSW5mbywgJm51bVJldHVybmVkKTsKLQotICAgIEdMWENvbnRleHQgZ2x4U2hhcmluZ0NvbnRl
eHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEdMWCo+KHNoYXJpbmdD
b250ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBnbFhDcmVh
dGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9MaXN0LCBnbHhTaGFyaW5nQ29udGV4dCwgVHJ1
ZSk7Ci0gICAgWEZyZWUodmlzdWFsSW5mb0xpc3QpOworICAgIFhVbmlxdWVQdHI8WFZpc3VhbElu
Zm8+IHZpc3VhbEluZm9MaXN0KFhHZXRWaXN1YWxJbmZvKGRpc3BsYXksIFZpc3VhbElETWFzaywg
JnZpc3VhbEluZm8sICZudW1SZXR1cm5lZCkpOwogCisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5n
Q29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hh
cmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkgOiBudWxscHRyOworICAgIFhVbmlxdWVHTFhD
b250ZXh0IGNvbnRleHQoZ2xYQ3JlYXRlQ29udGV4dChkaXNwbGF5LCB2aXN1YWxJbmZvTGlzdC5n
ZXQoKSwgZ2x4U2hhcmluZ0NvbnRleHQsIFRydWUpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gR0xYUGJ1ZmZlciBhbmQgWElEIGFyZSBib3Ro
IHRoZSBzYW1lIHR5cGVzIHVuZGVybmVhdGgsIHNvIHdlIGhhdmUgdG8gc2hhcmUKLSAgICAvLyBh
IGNvbnN0cnVjdG9yIGhlcmUgd2l0aCB0aGUgd2luZG93IHBhdGguCi0gICAgYXV0byBjb250ZXh0
V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihjb250ZXh0KTsKLSAgICBj
b250ZXh0V3JhcHBlci0+bV93aW5kb3cgPSB3aW5kb3c7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShj
b250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xY
PihXVEY6Om1vdmUoY29udGV4dCksIHdpbmRvdyk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBz
aGFyaW5nQ29udGV4dCkKIHsKLSAgICBpbnQgZmJDb25maWdBdHRyaWJ1dGVzW10gPSB7CisgICAg
c3RhdGljIGNvbnN0IGludCBmYkNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHsKICAgICAgICAgR0xYX0RS
QVdBQkxFX1RZUEUsIEdMWF9QQlVGRkVSX0JJVCwKICAgICAgICAgR0xYX1JFTkRFUl9UWVBFLCBH
TFhfUkdCQV9CSVQsCiAgICAgICAgIEdMWF9SRURfU0laRSwgMSwKQEAgLTc0LDMyICs2OCwyMSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZm
ZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcgogCiAgICAgaW50IHJldHVybmVkRWxlbWVudHM7CiAg
ICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwotICAgIEdMWEZCQ29uZmlnKiBj
b25maWdzID0gZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRyaWJ1dGVz
LCAmcmV0dXJuZWRFbGVtZW50cyk7Ci0gICAgaWYgKCFyZXR1cm5lZEVsZW1lbnRzKSB7Ci0gICAg
ICAgIFhGcmVlKGNvbmZpZ3MpOworICAgIFhVbmlxdWVQdHI8R0xYRkJDb25maWc+IGNvbmZpZ3Mo
Z2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRyaWJ1dGVzLCAmcmV0dXJu
ZWRFbGVtZW50cykpOworICAgIGlmICghcmV0dXJuZWRFbGVtZW50cykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQogCiAgICAgLy8gV2Ugd2lsbCBiZSByZW5kZXJpbmcgdG8gYSB0ZXh0
dXJlLCBzbyBvdXIgcGJ1ZmZlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGxhcmdlLgogICAgIHN0YXRp
YyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgR0xYX1BCVUZGRVJfV0lEVEgsIDEs
IEdMWF9QQlVGRkVSX0hFSUdIVCwgMSwgMCB9OwotICAgIEdMWFBidWZmZXIgcGJ1ZmZlciA9IGds
WENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmlnc1swXSwgcGJ1ZmZlckF0dHJpYnV0ZXMpOwot
ICAgIGlmICghcGJ1ZmZlcikgewotICAgICAgICBYRnJlZShjb25maWdzKTsKKyAgICBYVW5pcXVl
R0xYUGJ1ZmZlciBwYnVmZmVyKGdsWENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmlncy5nZXQo
KVswXSwgcGJ1ZmZlckF0dHJpYnV0ZXMpKTsKKyAgICBpZiAoIXBidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWENvbnRleHQgY29udGV4dCA9IGdsWENyZWF0
ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmlnc1swXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0Nv
bnRleHQsIEdMX1RSVUUpOwotICAgIFhGcmVlKGNvbmZpZ3MpOwotICAgIGlmICghY29udGV4dCkg
ewotICAgICAgICBnbFhEZXN0cm95UGJ1ZmZlcihkaXNwbGF5LCBwYnVmZmVyKTsKKyAgICBYVW5p
cXVlR0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmln
cy5nZXQoKVswXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0NvbnRleHQsIEdMX1RSVUUpKTsKKyAg
ICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIC8v
IEdMWFBidWZmZXIgYW5kIFhJRCBhcmUgYm90aCB0aGUgc2FtZSB0eXBlcyB1bmRlcm5lYXRoLCBz
byB3ZSBoYXZlIHRvIHNoYXJlCi0gICAgLy8gYSBjb25zdHJ1Y3RvciBoZXJlIHdpdGggdGhlIHdp
bmRvdyBwYXRoLgotICAgIGF1dG8gY29udGV4dFdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdM
Q29udGV4dEdMWD4oY29udGV4dCk7Ci0gICAgY29udGV4dFdyYXBwZXItPm1fcGJ1ZmZlciA9IHBi
dWZmZXI7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEY6Om1vdmUoY29udGV4dCksIFdURjo6
bW92ZShwYnVmZmVyKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KQpA
QCAtMTE0LDMxICs5NywyMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRl
eHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaQogICAgIH07CiAKICAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7Ci0gICAgWFZpc3VhbEluZm8qIHZp
c3VhbEluZm8gPSBnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5
KSwgdmlzdWFsQXR0cmlidXRlcyk7CisgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFs
SW5mbyhnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5KSwgdmlz
dWFsQXR0cmlidXRlcykpOwogICAgIGlmICghdmlzdWFsSW5mbykKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBnbFhDcmVhdGVDb250ZXh0KGRpc3Bs
YXksIHZpc3VhbEluZm8sIHNoYXJpbmdDb250ZXh0LCBHTF9UUlVFKTsKLSAgICBpZiAoIWNvbnRl
eHQpIHsKLSAgICAgICAgWEZyZWUodmlzdWFsSW5mbyk7CisgICAgWFVuaXF1ZUdMWENvbnRleHQg
Y29udGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm8uZ2V0KCksIHNoYXJp
bmdDb250ZXh0LCBHTF9UUlVFKSk7CisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9CiAKLSAgICBQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcChkaXNw
bGF5LCBEZWZhdWx0Um9vdFdpbmRvdyhkaXNwbGF5KSwgMSwgMSwgdmlzdWFsSW5mby0+ZGVwdGgp
OwotICAgIGlmICghcGl4bWFwKSB7Ci0gICAgICAgIFhGcmVlKHZpc3VhbEluZm8pOworICAgIFhV
bmlxdWVQaXhtYXAgcGl4bWFwKFhDcmVhdGVQaXhtYXAoZGlzcGxheSwgRGVmYXVsdFJvb3RXaW5k
b3coZGlzcGxheSksIDEsIDEsIHZpc3VhbEluZm8tPmRlcHRoKSk7CisgICAgaWYgKCFwaXhtYXAp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWFBpeG1hcCBnbHhQaXht
YXAgPSBnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mbywgcGl4bWFwKTsKLSAg
ICBpZiAoIWdseFBpeG1hcCkgewotICAgICAgICBYRnJlZVBpeG1hcChkaXNwbGF5LCBwaXhtYXAp
OwotICAgICAgICBYRnJlZSh2aXN1YWxJbmZvKTsKKyAgICBYVW5pcXVlR0xYUGl4bWFwIGdseFBp
eG1hcChnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mby5nZXQoKSwgcGl4bWFw
LmdldCgpKSk7CisgICAgaWYgKCFnbHhQaXhtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KIAotICAgIFhGcmVlKHZpc3VhbEluZm8pOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdMQ29udGV4dEdMWD4oY29udGV4dCwgcGl4bWFwLCBnbHhQaXhtYXApOworICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdMWD4oV1RGOjptb3ZlKGNvbnRleHQpLCBXVEY6
Om1vdmUocGl4bWFwKSwgV1RGOjptb3ZlKGdseFBpeG1hcCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRvdywg
R0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKQEAgLTE1Miw3ICsxMjcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRv
dywgR0xDb250ZXh0KgogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBz
dGF0aWNfY2FzdDxHTENvbnRleHRHTFgqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dCA6IDA7
CisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3Rh
dGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkg
OiBudWxscHRyOwogICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRl
eHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOwogICAgIGlmICghY29udGV4dCkK
ICAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGdseFNoYXJpbmdDb250ZXh0
KTsKQEAgLTE2NCwyMyArMTM5LDI3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdM
Q29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqCiAgICAgcmV0
dXJuIFdURjo6bW92ZShjb250ZXh0KTsKIH0KIAotR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgo
R0xYQ29udGV4dCBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitHTENvbnRleHRH
TFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhJRCB3aW5kb3cp
CisgICAgOiBtX2NvbnRleHQoV1RGOjptb3ZlKGNvbnRleHQpKQorICAgICwgbV93aW5kb3cod2lu
ZG93KQorICAgICwgbV9jYWlyb0RldmljZShudWxscHRyKQoreworfQorCitHTENvbnRleHRHTFg6
OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhVbmlxdWVHTFhQYnVm
ZmVyJiYgcGJ1ZmZlcikKKyAgICA6IG1fY29udGV4dChXVEY6Om1vdmUoY29udGV4dCkpCiAgICAg
LCBtX3dpbmRvdygwKQotICAgICwgbV9wYnVmZmVyKDApCi0gICAgLCBtX3BpeG1hcCgwKQotICAg
ICwgbV9nbHhQaXhtYXAoMCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKKyAgICAsIG1fcGJ1ZmZl
cihXVEY6Om1vdmUocGJ1ZmZlcikpCisgICAgLCBtX2NhaXJvRGV2aWNlKG51bGxwdHIpCiB7CiB9
CiAKLUdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKEdMWENvbnRleHQgY29udGV4dCwgUGl4bWFw
IHBpeG1hcCwgR0xYUGl4bWFwIGdseFBpeG1hcCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQor
R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBY
VW5pcXVlUGl4bWFwJiYgcGl4bWFwLCBYVW5pcXVlR0xYUGl4bWFwJiYgZ2x4UGl4bWFwKQorICAg
IDogbV9jb250ZXh0KFdURjo6bW92ZShjb250ZXh0KSkKICAgICAsIG1fd2luZG93KDApCi0gICAg
LCBtX3BidWZmZXIoMCkKLSAgICAsIG1fcGl4bWFwKHBpeG1hcCkKLSAgICAsIG1fZ2x4UGl4bWFw
KGdseFBpeG1hcCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKKyAgICAsIG1fcGl4bWFwKFdURjo6
bW92ZShwaXhtYXApKQorICAgICwgbV9nbHhQaXhtYXAoV1RGOjptb3ZlKGdseFBpeG1hcCkpCisg
ICAgLCBtX2NhaXJvRGV2aWNlKG51bGxwdHIpCiB7CiB9CiAKQEAgLTE4OSwyNiArMTY4LDEyIEBA
IEdMQ29udGV4dEdMWDo6fkdMQ29udGV4dEdMWCgpCiAgICAgaWYgKG1fY2Fpcm9EZXZpY2UpCiAg
ICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95KG1fY2Fpcm9EZXZpY2UpOwogCi0gICAgRGlzcGxh
eSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAg
ICAgLy8gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZXZlbnQgY3Jhc2hlcyB3aXRoIE5WaWRp
YSdzIGNsb3NlZCBzb3VyY2UgZHJpdmVycy4gT3JpZ2luYWxseQogICAgICAgICAvLyBmcm9tIE1v
emlsbGEncyAzRCBjYW52YXMgaW1wbGVtZW50YXRpb24gYXQ6IGh0dHA6Ly9iaXRidWNrZXQub3Jn
L2lsbWFyaS9jYW52YXMzZC8KKyAgICAgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpOwogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIDAp
OwogICAgICAgICBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBOb25lLCBOb25lKTsKLSAgICAgICAg
Z2xYRGVzdHJveUNvbnRleHQoZGlzcGxheSwgbV9jb250ZXh0KTsKLSAgICB9Ci0KLSAgICBpZiAo
bV9wYnVmZmVyKSB7Ci0gICAgICAgIGdsWERlc3Ryb3lQYnVmZmVyKGRpc3BsYXksIG1fcGJ1ZmZl
cik7Ci0gICAgICAgIG1fcGJ1ZmZlciA9IDA7Ci0gICAgfQotICAgIGlmIChtX2dseFBpeG1hcCkg
ewotICAgICAgICBnbFhEZXN0cm95R0xYUGl4bWFwKGRpc3BsYXksIG1fZ2x4UGl4bWFwKTsKLSAg
ICAgICAgbV9nbHhQaXhtYXAgPSAwOwotICAgIH0KLSAgICBpZiAobV9waXhtYXApIHsKLSAgICAg
ICAgWEZyZWVQaXhtYXAoZGlzcGxheSwgbV9waXhtYXApOwotICAgICAgICBtX3BpeG1hcCA9IDA7
CiAgICAgfQogfQogCkBAIC0yMzcsMTcgKzIwMiwxNyBAQCBib29sIEdMQ29udGV4dEdMWDo6bWFr
ZUNvbnRleHRDdXJyZW50KCkKICAgICBBU1NFUlQobV9jb250ZXh0ICYmIChtX3dpbmRvdyB8fCBt
X3BidWZmZXIgfHwgbV9nbHhQaXhtYXApKTsKIAogICAgIEdMQ29udGV4dDo6bWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0gICAgaWYgKGdsWEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0KQor
ICAgIGlmIChnbFhHZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dC5nZXQoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7
CiAgICAgaWYgKG1fd2luZG93KQotICAgICAgICByZXR1cm4gZ2xYTWFrZUN1cnJlbnQoZGlzcGxh
eSwgbV93aW5kb3csIG1fY29udGV4dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChk
aXNwbGF5LCBtX3dpbmRvdywgbV9jb250ZXh0LmdldCgpKTsKIAogICAgIGlmIChtX3BidWZmZXIp
Ci0gICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3BidWZmZXIsIG1fY29u
dGV4dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3BidWZmZXIu
Z2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiAKLSAgICByZXR1cm4gOjpnbFhNYWtlQ3VycmVudChk
aXNwbGF5LCBtX2dseFBpeG1hcCwgbV9jb250ZXh0KTsKKyAgICByZXR1cm4gOjpnbFhNYWtlQ3Vy
cmVudChkaXNwbGF5LCBtX2dseFBpeG1hcC5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKIH0KIAog
dm9pZCBHTENvbnRleHRHTFg6OnN3YXBCdWZmZXJzKCkKQEAgLTI2Nyw3ICsyMzIsNyBAQCBjYWly
b19kZXZpY2VfdCogR0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSgpCiAgICAgICAgIHJldHVybiBt
X2NhaXJvRGV2aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBt
X2NhaXJvRGV2aWNlID0gY2Fpcm9fZ2x4X2RldmljZV9jcmVhdGUoZG93bmNhc3Q8UGxhdGZvcm1E
aXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIG1f
Y29udGV4dCk7CisgICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2dseF9kZXZpY2VfY3JlYXRlKGRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkpLm5hdGl2ZSgpLCBtX2NvbnRleHQuZ2V0KCkpOwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9j
YWlyb0RldmljZTsKQEAgLTI3Niw3ICsyNDEsNyBAQCBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0
R0xYOjpjYWlyb0RldmljZSgpCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCiBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEdMWDo6cGxhdGZvcm1Db250ZXh0KCkKIHsK
LSAgICByZXR1cm4gbV9jb250ZXh0OworICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4
L0dMQ29udGV4dEdMWC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dM
Q29udGV4dEdMWC5oCmluZGV4IDY5MzRmMjQuLjQwMjNiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKQEAgLTIzLDEyICsy
Myw5IEBACiAjaWYgVVNFKEdMWCkKIAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgorI2luY2x1ZGUg
IlhVbmlxdWUuaCIKIAotdHlwZWRlZiBzdHJ1Y3QgX19HTFhjb250ZXh0UmVjKiBHTFhDb250ZXh0
OwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdMWFBidWZmZXI7Ci10eXBlZGVmIHVuc2lnbmVkIGxv
bmcgR0xYUGl4bWFwOwogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIEdMdWJ5dGU7Ci10eXBlZGVmIHVu
c2lnbmVkIGxvbmcgUGl4bWFwOwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJRDsKIHR5cGVkZWYg
dm9pZCogQ29udGV4dEtleVR5cGU7CiAKQEAgLTQwLDggKzM3LDkgQEAgcHVibGljOgogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVDb250ZXh0KFhJRCB3aW5k
b3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBjcmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4
dCogc2hhcmluZ0NvbnRleHQpOwogCi0gICAgR0xDb250ZXh0R0xYKEdMWENvbnRleHQpOwotICAg
IEdMQ29udGV4dEdMWChHTFhDb250ZXh0LCBQaXhtYXAsIEdMWFBpeG1hcCk7CisgICAgR0xDb250
ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYsIFhJRCk7CisgICAgR0xDb250ZXh0R0xYKFhVbmlx
dWVHTFhDb250ZXh0JiYsIFhVbmlxdWVHTFhQYnVmZmVyJiYpOworICAgIEdMQ29udGV4dEdMWChY
VW5pcXVlR0xYQ29udGV4dCYmLCBYVW5pcXVlUGl4bWFwJiYsIFhVbmlxdWVHTFhQaXhtYXAmJik7
CiAgICAgdmlydHVhbCB+R0xDb250ZXh0R0xYKCk7CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpOwpAQCAtNTksMTEg
KzU3LDExIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRH
TFg+IGNyZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQaXhtYXBDb250ZXh0
KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogCi0gICAgR0xYQ29udGV4dCBtX2NvbnRleHQ7
CisgICAgWFVuaXF1ZUdMWENvbnRleHQgbV9jb250ZXh0OwogICAgIFhJRCBtX3dpbmRvdzsKLSAg
ICBHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKLSAgICBQaXhtYXAgbV9waXhtYXA7Ci0gICAgR0xYUGl4
bWFwIG1fZ2x4UGl4bWFwOworICAgIFhVbmlxdWVHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKKyAgICBY
VW5pcXVlUGl4bWFwIG1fcGl4bWFwOworICAgIFhVbmlxdWVHTFhQaXhtYXAgbV9nbHhQaXhtYXA7
CiAgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhT
dXJmYWNlLmNwcAppbmRleCA2MThmZGMzLi5kNGUzNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFj
ZS5jcHAKQEAgLTE0MSw3ICsxNDEsNiBAQCB2b2lkIEVHTFBpeG1hcFN1cmZhY2U6OmRlc3Ryb3ko
KQogCiBFR0xYVHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGll
bnQoY29uc3QgUGxhdGZvcm1CdWZmZXJIYW5kbGUgaGFuZGxlLCBjb25zdCBJbnRTaXplJiBzaXpl
LCBib29sIGhhc0FscGhhKQogICAgIDogR0xUcmFuc3BvcnRTdXJmYWNlQ2xpZW50KCkKLSAgICAs
IG1faW1hZ2UoMCkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV90b3RhbEJ5dGVzKDApCiB7
CkBAIC0xOTcsMTEgKzE5Niw3IEBAIHZvaWQgRUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OmRl
c3Ryb3koKQogICAgIH0KIAogICAgIGVnbFdhaXRHTCgpOwotCi0gICAgaWYgKG1faW1hZ2UpIHsK
LSAgICAgICAgWERlc3Ryb3lJbWFnZShtX2ltYWdlKTsKLSAgICAgICAgbV9pbWFnZSA9IDA7Ci0g
ICAgfQorICAgIG1faW1hZ2UucmVzZXQoKTsKIH0KIAogdm9pZCBFR0xYVHJhbnNwb3J0U3VyZmFj
ZUNsaWVudDo6cHJlcGFyZVRleHR1cmUoKQpAQCAtMjE0LDcgKzIwOSw3IEBAIHZvaWQgRUdMWFRy
YW5zcG9ydFN1cmZhY2VDbGllbnQ6OnByZXBhcmVUZXh0dXJlKCkKICAgICB9CiAKICAgICAvLyBG
YWxsYmFjayB0byB1c2UgWEltYWdlIGluIGNhc2UgRUdMSW1hZ2UgYW5kIFRleHR1cmVUb1BpeG1h
cCBhcmUgbm90IHN1cHBvcnRlZC4KLSAgICBtX2ltYWdlID0gWEdldEltYWdlKE5hdGl2ZVdyYXBw
ZXI6Om5hdGl2ZURpc3BsYXkoKSwgbV9oYW5kbGUsIDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3Np
emUuaGVpZ2h0KCksIEFsbFBsYW5lcywgWlBpeG1hcCk7CisgICAgbV9pbWFnZS5yZXNldChYR2V0
SW1hZ2UoTmF0aXZlV3JhcHBlcjo6bmF0aXZlRGlzcGxheSgpLCBtX2hhbmRsZSwgMCwgMCwgbV9z
aXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgQWxsUGxhbmVzLCBaUGl4bWFwKSk7CiAKICNp
ZiBVU0UoT1BFTkdMX0VTXzIpCiAgICAgaWYgKG1fZm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpCR1JBKSB7CkBAIC0yMjUsMTAgKzIyMCw3IEBAIHZvaWQgRUdMWFRyYW5zcG9ydFN1cmZhY2VD
bGllbnQ6OnByZXBhcmVUZXh0dXJlKCkKIAogICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBtX2Zvcm1hdCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgMCwgbV9mb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIG1faW1hZ2UtPmRhdGEpOwogCi0gICAgaWYgKG1faW1hZ2Up
IHsKLSAgICAgICAgWERlc3Ryb3lJbWFnZShtX2ltYWdlKTsKLSAgICAgICAgbV9pbWFnZSA9IDA7
Ci0gICAgfQorICAgIG1faW1hZ2UucmVzZXQoKTsKIH0KIAogRUdMVGV4dHVyZUZyb21QaXhtYXA6
OkVHTFRleHR1cmVGcm9tUGl4bWFwKGNvbnN0IE5hdGl2ZVBpeG1hcCBoYW5kbGUsIGJvb2wgaGFz
QWxwaGEsIEVHTENvbmZpZyBjb25maWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCmluZGV4IDk2Yzhh
NjYuLjI0Y2Y4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aWYgUExBVEZPUk0oWDExKSAmJiBVU0UoRUdMKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIAog
I2luY2x1ZGUgIkVHTFN1cmZhY2UuaCIKKyNpbmNsdWRlICJYVW5pcXVlLmgiCiAjaW5jbHVkZSA8
Z2x4L1gxMUhlbHBlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NCw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgotICAgIFhJbWFnZSogbV9pbWFnZTsKKyAgICBYVW5pcXVlPFhJbWFnZT4gbV9pbWFnZTsKICAg
ICBJbnRTaXplIG1fc2l6ZTsKICAgICBQbGF0Zm9ybUJ1ZmZlckhhbmRsZSBtX2hhbmRsZTsKICAg
ICBHTHVpbnQgbV9mb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCmluZGV4
IDVjZGVkZTUuLjI5Zjg3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKEdMWCkKIAogI2luY2x1ZGUgIlgxMUhlbHBlci5oIgor
I2luY2x1ZGUgIlhVbmlxdWUuaCIKICNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+CiAjaW5jbHVk
ZSA8b3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmg+CiAKQEAgLTE0MCwxMyArMTQxLDEzIEBAIHBy
aXZhdGU6CiAgICAgR0xYRkJDb25maWcgZmluZE1hdGNoaW5nQ29uZmlnKGNvbnN0IGludCBhdHRy
aWJ1dGVzW10sIGludCBkZXB0aCA9IDMyKQogICAgIHsKICAgICAgICAgaW50IG51bUF2YWlsYWJs
ZUNvbmZpZ3M7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHTFhGQkNvbmZpZ1tdLCBYMTFEZWxl
dGVyPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCBE
ZWZhdWx0U2NyZWVuKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpKSwgYXR0cmlidXRlcywgJm51
bUF2YWlsYWJsZUNvbmZpZ3MpKTsKKyAgICAgICAgWFVuaXF1ZVB0cjxHTFhGQkNvbmZpZz4gdGVt
cChnbFhDaG9vc2VGQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgRGVmYXVsdFNj
cmVlbihYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFi
bGVDb25maWdzKSk7CiAKICAgICAgICAgaWYgKCFudW1BdmFpbGFibGVDb25maWdzIHx8ICF0ZW1w
LmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1BdmFpbGFibGVDb25maWdzOyArK2kpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gc2NvcGVkVmlzdWFsSW5mbyB7IGdsWEdldFZp
c3VhbEZyb21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgdGVtcFtpXSkgfTsK
KyAgICAgICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHNjb3BlZFZpc3VhbEluZm8geyBn
bFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXAu
Z2V0KClbaV0pIH07CiAgICAgICAgICAgICBpZiAoIXNjb3BlZFZpc3VhbEluZm8uZ2V0KCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTE1Nyw0MCArMTU4LDQwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdCkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
bV9hdHRyaWJ1dGVzICYgR0xQbGF0Zm9ybVN1cmZhY2U6OlN1cHBvcnRBbHBoYSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlZFZpc3VhbEluZm8tPmRlcHRoID09IGRlcHRoICYm
IGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRlbXBbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRl
bXAuZ2V0KClbaV07CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWZvcm1hdC0+ZGly
ZWN0LmFscGhhTWFzaykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wW2ldOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXAuZ2V0KClbaV07CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBpZiAoc2NvcGVkVmlz
dWFsSW5mby0+ZGVwdGggPT0gZGVwdGgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRlbXBbaV07
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXAuZ2V0KClbaV07CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBEaWQgbm90IGZpbmQgYW55IHZpc3VhbCBzdXBwb3J0aW5nIGFscGhhLCBzZWxlY3Qg
dGhlIGZpcnN0IGF2YWlsYWJsZSBjb25maWcuCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxYVmlz
dWFsSW5mbywgWDExRGVsZXRlcj4gc2NvcGVkVmlzdWFsSW5mbyB7IGdsWEdldFZpc3VhbEZyb21G
QkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgdGVtcFswXSkgfTsKKyAgICAgICAg
WFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gc2NvcGVkVmlzdWFsSW5mbyB7IGdsWEdldFZpc3VhbEZy
b21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgdGVtcC5nZXQoKVswXSkgfTsK
IAogICAgICAgICBpZiAoKG1fYXR0cmlidXRlcyAmIEdMUGxhdGZvcm1TdXJmYWNlOjpTdXBwb3J0
QWxwaGEpICYmIChzY29wZWRWaXN1YWxJbmZvLT5kZXB0aCAhPSAzMikpCiAgICAgICAgICAgICBt
X2F0dHJpYnV0ZXMgJj0gfkdMUGxhdGZvcm1TdXJmYWNlOjpTdXBwb3J0QWxwaGE7CiAKLSAgICAg
ICAgcmV0dXJuIHRlbXBbMF07CisgICAgICAgIHJldHVybiB0ZW1wLmdldCgpWzBdOwogICAgIH0K
IAogICAgIEdMWEZCQ29uZmlnIGZpbmRNYXRjaGluZ0NvbmZpZ1dpdGhWaXN1YWxJZChjb25zdCBp
bnQgYXR0cmlidXRlc1tdLCBpbnQgZGVwdGgsIFZpc3VhbElEIGlkKQogICAgIHsKICAgICAgICAg
aW50IG51bUF2YWlsYWJsZUNvbmZpZ3M7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHTFhGQkNv
bmZpZ1tdLCBYMTFEZWxldGVyPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0
aXZlRGlzcGxheSgpLCBEZWZhdWx0U2NyZWVuKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpKSwg
YXR0cmlidXRlcywgJm51bUF2YWlsYWJsZUNvbmZpZ3MpKTsKKyAgICAgICAgWFVuaXF1ZVB0cjxH
TFhGQkNvbmZpZz4gdGVtcChnbFhDaG9vc2VGQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3Bs
YXkoKSwgRGVmYXVsdFNjcmVlbihYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSksIGF0dHJpYnV0
ZXMsICZudW1BdmFpbGFibGVDb25maWdzKSk7CiAKICAgICAgICAgaWYgKCFudW1BdmFpbGFibGVD
b25maWdzIHx8ICF0ZW1wLmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1BdmFpbGFibGVDb25maWdzOyArK2kpIHsKLSAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gc2NvcGVkVmlzdWFs
SW5mbyB7IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXko
KSwgdGVtcFtpXSkgfTsKKyAgICAgICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHNjb3Bl
ZFZpc3VhbEluZm8geyBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVE
aXNwbGF5KCksIHRlbXAuZ2V0KClbaV0pIH07CiAgICAgICAgICAgICBpZiAoIXNjb3BlZFZpc3Vh
bEluZm8uZ2V0KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlm
IChpZCAmJiBzY29wZWRWaXN1YWxJbmZvLT5kZXB0aCA9PSBkZXB0aCAmJiBzY29wZWRWaXN1YWxJ
bmZvLT52aXN1YWxpZCA9PSBpZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGVtcFtpXTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdGVtcC5nZXQoKVtpXTsKICAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCmluZGV4IGJhNDkzYjAuLjJhZGUxODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9HTFhTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIFVTRShH
TFgpCiAKKyNpbmNsdWRlICJYVW5pcXVlLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIFBGTkdMWEJJTkRURVhJTUFHRUVYVFBST0MgcEdsWEJpbmRUZXhJbWFnZUVYVCA9IDA7CkBA
IC02Niw3ICs2OCw3IEBAIEdMWFRyYW5zcG9ydFN1cmZhY2U6OkdMWFRyYW5zcG9ydFN1cmZhY2Uo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgU3VyZmFjZUF0dHJpYnV0ZXMKIHsKICAgICBhdHRyaWJ1dGVz
IHw9IEdMUGxhdGZvcm1TdXJmYWNlOjpEb3VibGVCdWZmZXJlZDsKICAgICBtX2NvbmZpZ1NlbGVj
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxHTFhDb25maWdTZWxlY3Rvcj4oYXR0cmlidXRlcyk7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiB2aXNJbmZvKG1fY29u
ZmlnU2VsZWN0b3ItPnZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rvci0+c3VyZmFjZUNvbnRleHRD
b25maWcoKSkpOworICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHZpc0luZm8obV9jb25maWdT
ZWxlY3Rvci0+dmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT5zdXJmYWNlQ29udGV4dENvbmZp
ZygpKSk7CiAKICAgICBpZiAoIXZpc0luZm8uZ2V0KCkpIHsKICAgICAgICAgZGVzdHJveSgpOwpA
QCAtMTQyLDcgKzE0NCw3IEBAIHZvaWQgR0xYT2ZmU2NyZWVuU3VyZmFjZTo6aW5pdGlhbGl6ZShT
dXJmYWNlQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogewogICAgIG1fY29uZmlnU2VsZWN0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPEdMWENvbmZpZ1NlbGVjdG9yPihhdHRyaWJ1dGVzKTsKIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gdmlzdWFsSW5mbyhtX2NvbmZp
Z1NlbGVjdG9yLT52aXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnBpeG1hcENvbnRleHRDb25m
aWcoKSkpOworICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHZpc3VhbEluZm8obV9jb25maWdT
ZWxlY3Rvci0+dmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT5waXhtYXBDb250ZXh0Q29uZmln
KCkpKTsKICAgICBYMTFIZWxwZXI6OmNyZWF0ZVBpeG1hcCgmbV9waXhtYXAsICp2aXN1YWxJbmZv
LmdldCgpKTsKIAogICAgIGlmICghbV9waXhtYXApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFIZWxwZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAKaW5k
ZXggODAxMGI1Ny4uMzY4YmE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJYMTFIZWxwZXIuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxh
eVgxMS5oIgorI2luY2x1ZGUgIlhVbmlxdWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0yMjMsNyArMjI0LDcgQEAgdm9pZCBYMTFIZWxwZXI6OmNyZWF0ZU9mZlNjcmVlbldpbmRvdyh1
aW50MzJfdCogaGFuZGxlSWQsIGNvbnN0IEVHTGludCBpZCwgYm9vbAogICAgIG1lbXNldCgmdmlz
dWFsSW5mb1RlbXBsYXRlLCAwLCBzaXplb2YoWFZpc3VhbEluZm8pKTsKICAgICB2aXN1YWxJbmZv
VGVtcGxhdGUudmlzdWFsaWQgPSB2aXN1YWxJZDsKICAgICBpbnQgbWF0Y2hpbmdDb3VudCA9IDA7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiBtYXRjaGluZ1Zp
c3VhbHMoWEdldFZpc3VhbEluZm8obmF0aXZlRGlzcGxheSgpLCBWaXN1YWxJRE1hc2ssICZ2aXN1
YWxJbmZvVGVtcGxhdGUsICZtYXRjaGluZ0NvdW50KSk7CisgICAgWFVuaXF1ZTxYVmlzdWFsSW5m
bz4gbWF0Y2hpbmdWaXN1YWxzKFhHZXRWaXN1YWxJbmZvKG5hdGl2ZURpc3BsYXkoKSwgVmlzdWFs
SURNYXNrLCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCkpOwogICAgIFhWaXN1
YWxJbmZvKiBmb3VuZFZpc3VhbCA9IDA7CiAKICAgICBpZiAobWF0Y2hpbmdWaXN1YWxzKSB7CkBA
IC0yNjAsNyArMjYxLDcgQEAgdm9pZCBYMTFIZWxwZXI6OmNyZWF0ZVBpeG1hcChQaXhtYXAqIGhh
bmRsZUlkLCBjb25zdCBFR0xpbnQgaWQsIGJvb2wgaGFzQWxwaGEsIGMKICAgICBtZW1zZXQoJnZp
c3VhbEluZm9UZW1wbGF0ZSwgMCwgc2l6ZW9mKFhWaXN1YWxJbmZvKSk7CiAgICAgdmlzdWFsSW5m
b1RlbXBsYXRlLnZpc3VhbGlkID0gdmlzdWFsSWQ7CiAgICAgaW50IG1hdGNoaW5nQ291bnQgPSAw
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gbWF0Y2hpbmdW
aXN1YWxzKFhHZXRWaXN1YWxJbmZvKG5hdGl2ZURpc3BsYXkoKSwgVmlzdWFsSURNYXNrLCAmdmlz
dWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCkpOworICAgIFhVbmlxdWU8WFZpc3VhbElu
Zm8+IG1hdGNoaW5nVmlzdWFscyhYR2V0VmlzdWFsSW5mbyhuYXRpdmVEaXNwbGF5KCksIFZpc3Vh
bElETWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpKTsKICAgICBYVmlz
dWFsSW5mbyogZm91bmRWaXN1YWwgPSAwOwogICAgIGludCByZXF1aXJlZERlcHRoID0gaGFzQWxw
aGEgPyAzMiA6IDI0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmgKaW5kZXggMTAzZjAwMS4uN2Y1ZTRjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L1gxMUhlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL2dseC9YMTFIZWxwZXIuaApAQCAtNDIsMTUgKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBYMTFEZWxldGVyIHsKLXB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB2b2lkIG9wZXJhdG9yKCkoVCogcmVzb3VyY2UpCi0gICAgewotICAgICAgICBpZiAocmVz
b3VyY2UpCi0gICAgICAgICAgICBYRnJlZShyZXNvdXJjZSk7Ci0gICAgfQotfTsKLQogY2xhc3Mg
WDExSGVscGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQaXhtYXAoUGl4bWFw
KiwgY29uc3QgWFZpc3VhbEluZm8mLCBjb25zdCBJbnRTaXplJiA9IEludFNpemUoMSwgMSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZTM0MjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5jcHAKQEAg
LTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhVbmlxdWUuaCIKKworI2lmIFBMQVRGT1JN
KFgxMSkKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hk
YW1hZ2UuaD4KKworI2lmIFVTRShHTFgpCisjaW5jbHVkZSA8R0wvZ2x4Lmg+CisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTw+IHZvaWQgWFVuaXF1ZVJlc291cmNlPFhS
ZXNvdXJjZTo6Q29sb3JtYXA+OjpkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJj
ZSkKK3sKKyAgICBpZiAocmVzb3VyY2UpCisgICAgICAgIFhGcmVlQ29sb3JtYXAoZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0
aXZlKCksIHJlc291cmNlKTsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8
WFJlc291cmNlOjpEYW1hZ2U+OjpkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJj
ZSkKK3sKKyAgICBpZiAocmVzb3VyY2UpCisgICAgICAgIFhEYW1hZ2VEZXN0cm95KGRvd25jYXN0
PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5h
dGl2ZSgpLCByZXNvdXJjZSk7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgWFVuaXF1ZVJlc291cmNl
PFhSZXNvdXJjZTo6UGl4bWFwPjo6ZGVsZXRlWFJlc291cmNlKGxvbmcgdW5zaWduZWQgcmVzb3Vy
Y2UpCit7CisgICAgaWYgKHJlc291cmNlKQorICAgICAgICBYRnJlZVBpeG1hcChkb3duY2FzdDxQ
bGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRp
dmUoKSwgcmVzb3VyY2UpOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIFhVbmlxdWVSZXNvdXJjZTxY
UmVzb3VyY2U6OldpbmRvdz46OmRlbGV0ZVhSZXNvdXJjZShsb25nIHVuc2lnbmVkIHJlc291cmNl
KQoreworICAgIGlmIChyZXNvdXJjZSkKKyAgICAgICAgWERlc3Ryb3lXaW5kb3coZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0
aXZlKCksIHJlc291cmNlKTsKK30KKworI2lmIFVTRShHTFgpCit0ZW1wbGF0ZTw+IHZvaWQgWFVu
aXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj46OmRlbGV0ZVhSZXNvdXJjZShsb25n
IHVuc2lnbmVkIHJlc291cmNlKQoreworICAgIGlmIChyZXNvdXJjZSkKKyAgICAgICAgZ2xYRGVz
dHJveVBidWZmZXIoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6
OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIHJlc291cmNlKTsKK30KKwordGVtcGxhdGU8PiB2
b2lkIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OkdMWFBpeG1hcD46OmRlbGV0ZVhSZXNvdXJj
ZShsb25nIHVuc2lnbmVkIHJlc291cmNlKQoreworICAgIGlmIChyZXNvdXJjZSkKKyAgICAgICAg
Z2xYRGVzdHJveUdMWFBpeG1hcChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgcmVzb3VyY2UpOworfQorI2VuZGlm
IC8vIFVTRShHTFgpCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBMQVRG
T1JNKFgxMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gx
MS9YVW5pcXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2OWE1YWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5o
CkBAIC0wLDAgKzEsMTY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFhVbmlxdWVfaAorI2RlZmluZSBYVW5pcXVlX2gKKworI2lmIFBMQVRGT1JN
KFgxMSkKKyNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXlYMTEuaCIKKyNpbmNsdWRlIDxYMTEvWHV0
aWwuaD4KKworI2lmIFVTRShHTFgpCit0eXBlZGVmIHN0cnVjdCBfX0dMWGNvbnRleHRSZWMqIEdM
WENvbnRleHQ7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgR0xYUGJ1ZmZlcjsKK3R5cGVkZWYgdW5z
aWduZWQgbG9uZyBHTFhQaXhtYXA7CisKK2V4dGVybiAiQyIgdm9pZCBnbFhEZXN0cm95Q29udGV4
dChEaXNwbGF5KiwgR0xYQ29udGV4dCk7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFhQdHJEZWxldGVyIHsKKyAgICB2b2lkIG9w
ZXJhdG9yKCkoVCogcHRyKSBjb25zdCB7IFhGcmVlKHB0cik7IH0KK307CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+Cit1c2luZyBYVW5pcXVlUHRyID0gc3RkOjp1bmlxdWVfcHRyPFQsIFhQdHJEZWxl
dGVyPFQ+PjsKKworI2RlZmluZSBERUZJTkVfWFBUUl9ERUxFVEVSKHR5cGVOYW1lLCBkZWxldGVy
RnVuYykgXAorICAgIHRlbXBsYXRlPD4gc3RydWN0IFhQdHJEZWxldGVyPHR5cGVOYW1lPiBcCisg
ICAgeyBcCisgICAgICAgIHZvaWQgb3BlcmF0b3IoKSAodHlwZU5hbWUqIHB0cikgY29uc3QgXAor
ICAgICAgICB7IFwKKyAgICAgICAgICAgIGlmIChwdHIpIFwKKyAgICAgICAgICAgICAgICBkZWxl
dGVyRnVuYyhwdHIpOyBcCisgICAgICAgIH0gXAorICAgIH07CisKKyNkZWZpbmUgREVGSU5FX1hQ
VFJfREVMRVRFUl9XSVRIX0RJU1BMQVkodHlwZU5hbWUsIGRlbGV0ZXJGdW5jKSBcCisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgWFB0ckRlbGV0ZXI8dHlwZU5hbWU+IFwKKyAgICB7IFwKKyAgICAgICAg
dm9pZCBvcGVyYXRvcigpICh0eXBlTmFtZSogcHRyKSBjb25zdCBcCisgICAgICAgIHsgXAorICAg
ICAgICAgICAgaWYgKHB0cikgXAorICAgICAgICAgICAgICAgIGRlbGV0ZXJGdW5jKGRvd25jYXN0
PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5h
dGl2ZSgpLCBwdHIpOyBcCisgICAgICAgIH0gXAorICAgIH07CisKKworREVGSU5FX1hQVFJfREVM
RVRFUihYSW1hZ2UsIFhEZXN0cm95SW1hZ2UpCitERUZJTkVfWFBUUl9ERUxFVEVSX1dJVEhfRElT
UExBWShfWEdDLCBYRnJlZUdDKQorCisjaWYgVVNFKEdMWCkKK0RFRklORV9YUFRSX0RFTEVURVJf
V0lUSF9ESVNQTEFZKF9fR0xYY29udGV4dFJlYywgZ2xYRGVzdHJveUNvbnRleHQpCisjZW5kaWYK
KworI3VuZGVmIERFRklORV9YUFRSX0RFTEVURVIKKyN1bmRlZiBERUZJTkVfWFBUUl9ERUxFVEVS
X1dJVEhfRElTUExBWQorCitlbnVtIGNsYXNzIFhSZXNvdXJjZSB7CisgICAgQ29sb3JtYXAsCisg
ICAgRGFtYWdlLAorICAgIFBpeG1hcCwKKyAgICBXaW5kb3csCisjaWYgVVNFKEdMWCkKKyAgICBH
TFhQYnVmZmVyLAorICAgIEdMWFBpeG1hcCwKKyNlbmRpZgorfTsKKwordGVtcGxhdGUgPFhSZXNv
dXJjZSBUPiBjbGFzcyBYVW5pcXVlUmVzb3VyY2UgeworcHVibGljOgorICAgIFhVbmlxdWVSZXNv
dXJjZSgpCisgICAgICAgIDogbV9yZXNvdXJjZSgwKQorICAgIHsKKyAgICB9CisKKyAgICBYVW5p
cXVlUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKKyAgICAgICAgOiBtX3Jlc291cmNl
KHJlc291cmNlKQorICAgIHsKKyAgICB9CisKKyAgICBYVW5pcXVlUmVzb3VyY2UoWFVuaXF1ZVJl
c291cmNlJiYgdW5pcXVlUmVzb3VyY2UpCisgICAgICAgIDogbV9yZXNvdXJjZSh1bmlxdWVSZXNv
dXJjZS5yZWxlYXNlKCkpCisgICAgeworICAgIH0KKworICAgIFhVbmlxdWVSZXNvdXJjZSYgb3Bl
cmF0b3I9KFhVbmlxdWVSZXNvdXJjZSYmIHVuaXF1ZVJlc291cmNlKQorICAgIHsKKyAgICAgICAg
cmVzZXQodW5pcXVlUmVzb3VyY2UucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKworICAgIH5YVW5pcXVlUmVzb3VyY2UoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsK
KyAgICB9CisKKyAgICBsb25nIHVuc2lnbmVkIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3Vy
Y2U7IH0KKyAgICBsb25nIHVuc2lnbmVkIHJlbGVhc2UoKSB7IGxvbmcgdW5zaWduZWQgcmVzb3Vy
Y2UgPSBtX3Jlc291cmNlOyBtX3Jlc291cmNlID0gMDsgcmV0dXJuIHJlc291cmNlOyB9CisKKyAg
ICB2b2lkIHJlc2V0KGxvbmcgdW5zaWduZWQgcmVzb3VyY2UgPSAwKQorICAgIHsKKyAgICAgICAg
c3RkOjpzd2FwKG1fcmVzb3VyY2UsIHJlc291cmNlKTsKKyAgICAgICAgZGVsZXRlWFJlc291cmNl
KHJlc291cmNlKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJu
ICFtX3Jlc291cmNlOyB9CisKKyAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dz
IGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlw
ZXMuCisgICAgdHlwZWRlZiB2b2lkKiAoWFVuaXF1ZVJlc291cmNlOjoqVW5zcGVjaWZpZWRCb29s
VHlwZSk7CisgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fcmVzb3VyY2UgPyByZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVk
Qm9vbFR5cGUqPigxKSA6IDA7CisgICAgfQorCisgICAgWFVuaXF1ZVJlc291cmNlKGNvbnN0IFhV
bmlxdWVSZXNvdXJjZSYpID0gZGVsZXRlOworICAgIFhVbmlxdWVSZXNvdXJjZSYgb3BlcmF0b3I9
KGNvbnN0IFhVbmlxdWVSZXNvdXJjZSYpID0gZGVsZXRlOworcHJpdmF0ZToKKyAgICBzdGF0aWMg
dm9pZCBkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSk7CisKKyAgICBsb25n
IHVuc2lnbmVkIG1fcmVzb3VyY2U7Cit9OworCit0eXBlZGVmIFhVbmlxdWVSZXNvdXJjZTxYUmVz
b3VyY2U6OkNvbG9ybWFwPiBYVW5pcXVlQ29sb3JtYXA7Cit0eXBlZGVmIFhVbmlxdWVSZXNvdXJj
ZTxYUmVzb3VyY2U6OkRhbWFnZT4gWFVuaXF1ZURhbWFnZTsKK3R5cGVkZWYgWFVuaXF1ZVJlc291
cmNlPFhSZXNvdXJjZTo6UGl4bWFwPiBYVW5pcXVlUGl4bWFwOwordHlwZWRlZiBYVW5pcXVlUmVz
b3VyY2U8WFJlc291cmNlOjpXaW5kb3c+IFhVbmlxdWVXaW5kb3c7CisjaWYgVVNFKEdMWCkKK3R5
cGVkZWYgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj4gWFVuaXF1ZUdMWFBi
dWZmZXI7Cit0eXBlZGVmIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OkdMWFBpeG1hcD4gWFVu
aXF1ZUdMWFBpeG1hcDsKKyNlbmRpZgorCisvLyBHaXZlIGEgbmFtZSBhbHNvIHRvIHRoZXNlIFhV
bmlxdWVQdHIgdG8gYXZvaWQgaGF2aW5nIHRvIHVzZSB0aGUgaW50ZXJuYWwgc3RydWN0IG5hbWVz
IChfWEdDLCBfX0dMWGNvbnRleHRSZWMsIC4uLikuCit0eXBlZGVmIFhVbmlxdWVQdHI8X1hHQz4g
WFVuaXF1ZUdDOworI2lmIFVTRShHTFgpCit0eXBlZGVmIFhVbmlxdWVQdHI8X19HTFhjb250ZXh0
UmVjPiBYVW5pcXVlR0xYQ29udGV4dDsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBQTEFURk9STShYMTEpCisKKyNlbmRpZiAvLyBYVW5pcXVlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCBiNzE5MzczLi41OTkxYWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIw
MTUtMDUtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtYMTFdIEFkZCBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8gYXV0b21h
dGljYWxseSBmcmVlIFggcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDQ1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgWFVuaXF1ZVB0ciBhbmQgWFVuaXF1ZVJlc291cmNlIHRvIGZy
ZWUgWCByZXNvdXJjZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMSBkaXIKKyAgICAgICAgdG8gdGhlIGluY2x1
ZGUgZGlyIGxpc3QuCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IERpdHRvLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCk6IERvIG5vdCBwYXNzIHRoZSBkaXNwbGF5
IHRvCisgICAgICAgIHRoZSBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEgY29uc3RydWN0b3Iu
CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93Ojp+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpS
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVzaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnN1cmZhY2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaDoKKyAg
ICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OndpbmRvd0lEKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRp
YWxpemVXaW5kb3dsZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRm
b3JtRGVzdHJveSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdl
b21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRm
b3JtUGFpbnQpOgorCiAyMDE1LTA1LTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gTmV0d29yayBDYWNoZTogSW1wbGVtZW50IFNo
YXJlYWJsZVJlc291cmNlIGZvciBTb3VwIGFuZCBlbmFibGUgaXQgZm9yIEdUSyBwbGF0Zm9ybQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA1YTAyZWEyLi5lZmVmZWJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQpAQCAtMjI2LDYgKzIyNiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJf
SU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlybyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZWZsIgogICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZSIKKyAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MveDExIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvZW5j
aGFudCIKICAgICAiJHtXRUJLSVQyX0RJUn0vTmV0d29ya1Byb2Nlc3MvZWZsIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCBkMjc0MGI2Li5lNDg2ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtNDU4LDYgKzQ1OCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9E
SVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ndGsiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvIgogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3MveDExIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvZW5jaGFudCIKICAgICAiJHtXRUJL
SVQyX0RJUn0vRGF0YWJhc2VQcm9jZXNzL3VuaXgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCBiZDgwYjM3Li4yZmIz
MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0
b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5n
U3RvcmVDYWlyby5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEJhY2tpbmdT
dG9yZUJhY2tlbmRDYWlybz4gQmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5kKCkKICAgICAgICAg
R2RrVmlzdWFsKiB2aXN1YWwgPSBndGtfd2lkZ2V0X2dldF92aXN1YWwobV93ZWJQYWdlUHJveHku
dmlld1dpZGdldCgpKTsKICAgICAgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBnZGtfdmlzdWFsX2dl
dF9zY3JlZW4odmlzdWFsKTsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxh
eVgxMT4oc2hhcmVkRGlzcGxheSkubmF0aXZlKCkgPT0gR0RLX1NDUkVFTl9YRElTUExBWShzY3Jl
ZW4pKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2Vu
ZENhaXJvWDExPihkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHNoYXJlZERpc3BsYXkpLm5h
dGl2ZSgpLCBHREtfV0lORE9XX1hJRChnZGtfc2NyZWVuX2dldF9yb290X3dpbmRvdyhzY3JlZW4p
KSwKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENh
aXJvWDExPihHREtfV0lORE9XX1hJRChnZGtfc2NyZWVuX2dldF9yb290X3dpbmRvdyhzY3JlZW4p
KSwKICAgICAgICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBnZGtfdmlzdWFsX2dl
dF9kZXB0aCh2aXN1YWwpLCBtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcAppbmRleCA0NDRmODY0Li4zZmJhMzI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaWYgVVNFKFJFRElSRUNURURf
WENPTVBPU0lURV9XSU5ET1cpCiAKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgogI2luY2x1ZGUgPFgx
MS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4KICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YZGFt
YWdlLmg+CiAjaW5jbHVkZSA8Y2Fpcm8teGxpYi5oPgpAQCAtMTM1LDIxICsxMzYsMTggQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdzo6Y3JlYXRlKEcKIAogUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93KEdka1dpbmRvdyogcGFyZW50V2luZG93LCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gZGFtYWdlTm90aWZ5KQogICAgIDogbV9kaXNwbGF5KEdES19ESVNQTEFZX1hE
SVNQTEFZKGdka193aW5kb3dfZ2V0X2Rpc3BsYXkocGFyZW50V2luZG93KSkpCi0gICAgLCBtX3dp
bmRvdygwKQotICAgICwgbV9wYXJlbnRXaW5kb3coMCkKLSAgICAsIG1fcGl4bWFwKDApCi0gICAg
LCBtX2RhbWFnZSgwKQogICAgICwgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplKGZhbHNlKQog
eworICAgIEFTU0VSVChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxh
eTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSA9PSBtX2Rpc3BsYXkpOwogICAgIFNjcmVlbiog
c2NyZWVuID0gRGVmYXVsdFNjcmVlbk9mRGlzcGxheShtX2Rpc3BsYXkpOwogCiAgICAgR2RrVmlz
dWFsKiB2aXN1YWwgPSBnZGtfd2luZG93X2dldF92aXN1YWwocGFyZW50V2luZG93KTsKLSAgICBD
b2xvcm1hcCBjb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChtX2Rpc3BsYXksIFJvb3RXaW5kb3dP
ZlNjcmVlbihzY3JlZW4pLCBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgQWxsb2NOb25lKTsK
KyAgICBYVW5pcXVlQ29sb3JtYXAgY29sb3JtYXAoWENyZWF0ZUNvbG9ybWFwKG1fZGlzcGxheSwg
Um9vdFdpbmRvd09mU2NyZWVuKHNjcmVlbiksIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBB
bGxvY05vbmUpKTsKIAogICAgIC8vIFRoaXMgaXMgYmFzZWQgb24gY29kZSBmcm9tIENocm9taXVt
OiBzcmMvY29udGVudC9jb21tb24vZ3B1L2ltYWdlX3RyYW5zcG9ydF9zdXJmYWNlX2xpbnV4LmNj
CiAgICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMgd2luZG93QXR0cmlidXRlczsKICAgICB3aW5kb3dB
dHRyaWJ1dGVzLm92ZXJyaWRlX3JlZGlyZWN0ID0gVHJ1ZTsKLSAgICB3aW5kb3dBdHRyaWJ1dGVz
LmNvbG9ybWFwID0gY29sb3JtYXA7CisgICAgd2luZG93QXR0cmlidXRlcy5jb2xvcm1hcCA9IGNv
bG9ybWFwLmdldCgpOwogCiAgICAgLy8gQ1dCb3JkZXJQaXhlbCBtdXN0IGJlIHByZXNlbnQgd2hl
biB0aGUgZGVwdGggZG9lc24ndCBtYXRjaCB0aGUgcGFyZW50J3Mgb25lLgogICAgIC8vIFNlZSBo
dHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL3RyZWUvZGl4L3dpbmRvdy5j
P2lkPXhvcmctc2VydmVyLTEuMTYuMCNuNzAzLgpAQCAtMTY0LDEzICsxNjIsMTMgQEAgUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KEdka1dpbmRv
dyogcGFyZW50V2luZG93LAogICAgICAgICBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwKICAg
ICAgICAgQ1dPdmVycmlkZVJlZGlyZWN0IHwgQ1dDb2xvcm1hcCB8IENXQm9yZGVyUGl4ZWwsCiAg
ICAgICAgICZ3aW5kb3dBdHRyaWJ1dGVzKTsKLSAgICBYTWFwV2luZG93KG1fZGlzcGxheSwgbV9w
YXJlbnRXaW5kb3cpOworICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3BhcmVudFdpbmRvdy5n
ZXQoKSk7CiAKICAgICB3aW5kb3dBdHRyaWJ1dGVzLmV2ZW50X21hc2sgPSBTdHJ1Y3R1cmVOb3Rp
ZnlNYXNrOwogICAgIHdpbmRvd0F0dHJpYnV0ZXMub3ZlcnJpZGVfcmVkaXJlY3QgPSBGYWxzZTsK
ICAgICAvLyBDcmVhdGUgdGhlIHdpbmRvdyBvZiBhdCBsYXN0IDF4MSBzaW5jZSBYIGRvZXNuJ3Qg
YWxsb3cgdG8gY3JlYXRlIGVtcHR5IHdpbmRvd3MuCiAgICAgbV93aW5kb3cgPSBYQ3JlYXRlV2lu
ZG93KG1fZGlzcGxheSwKLSAgICAgICAgbV9wYXJlbnRXaW5kb3csCisgICAgICAgIG1fcGFyZW50
V2luZG93LmdldCgpLAogICAgICAgICAwLCAwLAogICAgICAgICBzdGQ6Om1heCgxLCBtX3NpemUu
d2lkdGgoKSksCiAgICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQoKSksCkBAIC0xODAs
MjEgKzE3OCwxOSBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3coR2RrV2luZG93KiBwYXJlbnRXaW5kb3csCiAgICAgICAgIENvcHlGcm9tUGFy
ZW50LAogICAgICAgICBDV0V2ZW50TWFzaywKICAgICAgICAgJndpbmRvd0F0dHJpYnV0ZXMpOwot
ICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdyk7CisgICAgWE1hcFdpbmRvdyhtX2Rp
c3BsYXksIG1fd2luZG93LmdldCgpKTsKIAotICAgIFhGcmVlQ29sb3JtYXAobV9kaXNwbGF5LCBj
b2xvcm1hcCk7Ci0KLSAgICB4RGFtYWdlTm90aWZpZXIoKS5hZGQobV93aW5kb3csIFdURjo6bW92
ZShkYW1hZ2VOb3RpZnkpKTsKKyAgICB4RGFtYWdlTm90aWZpZXIoKS5hZGQobV93aW5kb3cuZ2V0
KCksIFdURjo6bW92ZShkYW1hZ2VOb3RpZnkpKTsKIAogICAgIHdoaWxlICgxKSB7CiAgICAgICAg
IFhFdmVudCBldmVudDsKLSAgICAgICAgWFdpbmRvd0V2ZW50KG1fZGlzcGxheSwgbV93aW5kb3cs
IFN0cnVjdHVyZU5vdGlmeU1hc2ssICZldmVudCk7Ci0gICAgICAgIGlmIChldmVudC50eXBlID09
IE1hcE5vdGlmeSAmJiBldmVudC54bWFwLndpbmRvdyA9PSBtX3dpbmRvdykKKyAgICAgICAgWFdp
bmRvd0V2ZW50KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIFN0cnVjdHVyZU5vdGlmeU1hc2ss
ICZldmVudCk7CisgICAgICAgIGlmIChldmVudC50eXBlID09IE1hcE5vdGlmeSAmJiBldmVudC54
bWFwLndpbmRvdyA9PSBtX3dpbmRvdy5nZXQoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICBYU2VsZWN0SW5wdXQobV9kaXNwbGF5LCBtX3dpbmRvdywgTm9FdmVudE1hc2spOwotICAg
IFhDb21wb3NpdGVSZWRpcmVjdFdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93LCBDb21wb3NpdGVS
ZWRpcmVjdE1hbnVhbCk7Ci0gICAgbV9kYW1hZ2UgPSBYRGFtYWdlQ3JlYXRlKG1fZGlzcGxheSwg
bV93aW5kb3csIFhEYW1hZ2VSZXBvcnROb25FbXB0eSk7CisgICAgWFNlbGVjdElucHV0KG1fZGlz
cGxheSwgbV93aW5kb3cuZ2V0KCksIE5vRXZlbnRNYXNrKTsKKyAgICBYQ29tcG9zaXRlUmVkaXJl
Y3RXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgQ29tcG9zaXRlUmVkaXJlY3RNYW51
YWwpOworICAgIG1fZGFtYWdlID0gWERhbWFnZUNyZWF0ZShtX2Rpc3BsYXksIG1fd2luZG93Lmdl
dCgpLCBYRGFtYWdlUmVwb3J0Tm9uRW1wdHkpOwogfQogCiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKQEAgLTIwNCwxMiArMjAwLDEyIEBA
IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3co
KQogICAgIEFTU0VSVChtX3dpbmRvdyk7CiAgICAgQVNTRVJUKG1fcGFyZW50V2luZG93KTsKIAot
ICAgIHhEYW1hZ2VOb3RpZmllcigpLnJlbW92ZShtX3dpbmRvdyk7CisgICAgeERhbWFnZU5vdGlm
aWVyKCkucmVtb3ZlKG1fd2luZG93LmdldCgpKTsKIAotICAgIFhEYW1hZ2VEZXN0cm95KG1fZGlz
cGxheSwgbV9kYW1hZ2UpOwotICAgIFhEZXN0cm95V2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cp
OwotICAgIFhEZXN0cm95V2luZG93KG1fZGlzcGxheSwgbV9wYXJlbnRXaW5kb3cpOwotICAgIGNs
ZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7CisgICAgLy8gRXhwbGljaXQgcmVzZXQgdGhl
c2UgYmVjYXVzZSB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBoYXBwZW5zIGluIHRoaXMgb3JkZXIuCisg
ICAgbV9kYW1hZ2UucmVzZXQoKTsKKyAgICBtX3dpbmRvdy5yZXNldCgpOworICAgIG1fcGFyZW50
V2luZG93LnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnJl
c2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMjE4LDcgKzIxNCw3IEBAIHZvaWQgUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBSZXNpemUgdGhlIHdpbmRvdyB0byBhdCBsYXN0IDF4MSBzaW5j
ZSBYIGRvZXNuJ3QgYWxsb3cgdG8gY3JlYXRlIGVtcHR5IHdpbmRvd3MuCi0gICAgWFJlc2l6ZVdp
bmRvdyhtX2Rpc3BsYXksIG1fd2luZG93LCBzdGQ6Om1heCgxLCBzaXplLndpZHRoKCkpLCBzdGQ6
Om1heCgxLCBzaXplLmhlaWdodCgpKSk7CisgICAgWFJlc2l6ZVdpbmRvdyhtX2Rpc3BsYXksIG1f
d2luZG93LmdldCgpLCBzdGQ6Om1heCgxLCBzaXplLndpZHRoKCkpLCBzdGQ6Om1heCgxLCBzaXpl
LmhlaWdodCgpKSk7CiAgICAgWEZsdXNoKG1fZGlzcGxheSk7CiAKICAgICBtX3NpemUgPSBzaXpl
OwpAQCAtMjMyLDkgKzIyOCw4IEBAIHZvaWQgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNs
ZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCkKICAgICBpZiAoIW1fcGl4bWFwKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBYRnJlZVBpeG1hcChtX2Rpc3BsYXksIG1fcGl4bWFwKTsKLSAgICBt
X3BpeG1hcCA9IDA7CiAgICAgbV9zdXJmYWNlID0gbnVsbHB0cjsKKyAgICBtX3BpeG1hcC5yZXNl
dCgpOwogfQogCiBjYWlyb19zdXJmYWNlX3QqIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojpz
dXJmYWNlKCkKQEAgLTI0NywyMCArMjQyLDE5IEBAIGNhaXJvX3N1cmZhY2VfdCogUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3c6OnN1cmZhY2UoKQogCiAgICAgbV9uZWVkc05ld1BpeG1hcEFmdGVy
UmVzaXplID0gZmFsc2U7CiAKLSAgICBQaXhtYXAgbmV3UGl4bWFwID0gWENvbXBvc2l0ZU5hbWVX
aW5kb3dQaXhtYXAobV9kaXNwbGF5LCBtX3dpbmRvdyk7CisgICAgWFVuaXF1ZVBpeG1hcCBuZXdQ
aXhtYXAoWENvbXBvc2l0ZU5hbWVXaW5kb3dQaXhtYXAobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQo
KSkpOwogICAgIGlmICghbmV3UGl4bWFwKSB7CiAgICAgICAgIGNsZWFudXBQaXhtYXBBbmRQaXht
YXBTdXJmYWNlKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIFhXaW5k
b3dBdHRyaWJ1dGVzIHdpbmRvd0F0dHJpYnV0ZXM7Ci0gICAgaWYgKCFYR2V0V2luZG93QXR0cmli
dXRlcyhtX2Rpc3BsYXksIG1fd2luZG93LCAmd2luZG93QXR0cmlidXRlcykpIHsKKyAgICBpZiAo
IVhHZXRXaW5kb3dBdHRyaWJ1dGVzKG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksICZ3aW5kb3dB
dHRyaWJ1dGVzKSkgewogICAgICAgICBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgpOwot
ICAgICAgICBYRnJlZVBpeG1hcChtX2Rpc3BsYXksIG5ld1BpeG1hcCk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5ld1N1cmZh
Y2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKG1fZGlzcGxheSwgbmV3UGl4
bWFwLCB3aW5kb3dBdHRyaWJ1dGVzLnZpc3VhbCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWln
aHQoKSkpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5ld1N1cmZhY2UgPSBhZG9wdFJl
ZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKG1fZGlzcGxheSwgbmV3UGl4bWFwLmdldCgpLCB3
aW5kb3dBdHRyaWJ1dGVzLnZpc3VhbCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSkp
OwogCiAgICAgLy8gTnZpZGlhIGRyaXZlcnMgc2VlbSB0byBwcmVwYXJlIHRoZWlyIHJlZGlyZWN0
ZWQgd2luZG93IHBpeG1hcCBhc3luY2hyb25vdXNseSwgc28gZm9yIGEgZmV3IGZyYWN0aW9ucwog
ICAgIC8vIG9mIGEgc2Vjb25kIGFmdGVyIGVhY2ggcmVzaXplLCB3aGlsZSBkb2luZyBjb250aW51
b3VzIHJlc2l6aW5nICh3aGljaCBjb25zdGFudGx5IGRlc3Ryb3lzIGFuZCBjcmVhdGVzCkBAIC0y
NzUsNyArMjY5LDcgQEAgY2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dzo6c3VyZmFjZSgpCiAgICAgfQogCiAgICAgY2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2Uo
KTsKLSAgICBtX3BpeG1hcCA9IG5ld1BpeG1hcDsKKyAgICBtX3BpeG1hcCA9IFdURjo6bW92ZShu
ZXdQaXhtYXApOwogICAgIG1fc3VyZmFjZSA9IG5ld1N1cmZhY2U7CiAgICAgcmV0dXJuIG1fc3Vy
ZmFjZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAppbmRleCAzYWE0ZmY1Li41NGYzZjdkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3cuaApAQCAtMzEsMTEgKzMxLDEyIEBACiAKICNpbmNsdWRlIDxXZWJD
b3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+Ci0jaW5jbHVk
ZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWUuaD4KICNpbmNsdWRlIDxm
dW5jdGlvbmFsPgogCiB0eXBlZGVmIHN0cnVjdCBfR2RrV2luZG93IEdka1dpbmRvdzsKIHR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBEYW1hZ2U7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgV2luZG93Owog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDQsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gY3JlYXRlKEdk
a1dpbmRvdyosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBkYW1hZ2VOb3RpZnkpOwogICAgIH5SZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdygpOwogCi0gICAgV2luZG93IHdpbmRvd0lEKCkgY29uc3Qg
eyByZXR1cm4gbV93aW5kb3c7IH0KKyAgICBXaW5kb3cgd2luZG93SUQoKSBjb25zdCB7IHJldHVy
biBtX3dpbmRvdy5nZXQoKTsgfQogICAgIHZvaWQgcmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKTsKICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UoKTsKIApAQCAtNTQsMTAgKzU1LDEw
IEBAIHByaXZhdGU6CiAKICAgICBEaXNwbGF5KiBtX2Rpc3BsYXk7CiAgICAgV2ViQ29yZTo6SW50
U2l6ZSBtX3NpemU7Ci0gICAgV2luZG93IG1fd2luZG93OwotICAgIFdpbmRvdyBtX3BhcmVudFdp
bmRvdzsKLSAgICBQaXhtYXAgbV9waXhtYXA7Ci0gICAgRGFtYWdlIG1fZGFtYWdlOworICAgIFdl
YkNvcmU6OlhVbmlxdWVXaW5kb3cgbV93aW5kb3c7CisgICAgV2ViQ29yZTo6WFVuaXF1ZVdpbmRv
dyBtX3BhcmVudFdpbmRvdzsKKyAgICBXZWJDb3JlOjpYVW5pcXVlUGl4bWFwIG1fcGl4bWFwOwor
ICAgIFdlYkNvcmU6OlhVbmlxdWVEYW1hZ2UgbV9kYW1hZ2U7CiAgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gbV9zdXJmYWNlOwogICAgIGJvb2wgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXpl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggYjNjODNiZC4uNWQyMjYwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmgKQEAgLTQyLDYgKzQyLDEwIEBACiAjaW5jbHVkZSAiV2ViSGl0VGVz
dFJlc3VsdC5oIgogI2VuZGlmCiAKKyNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKKyNpbmNs
dWRlIDxXZWJDb3JlL1hVbmlxdWUuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBNYWNoU2VuZFJpZ2h0OwogY2xhc3MgSFRUUEhlYWRlck1hcDsKQEAgLTM4Nyw3ICszOTEs
NyBAQCBwcml2YXRlOgogICAgIE5QX0NHQ29udGV4dCBtX25wQ0dDb250ZXh0OwogI2VuZGlmCiAj
ZWxpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSAgICBQaXhtYXAgbV9kcmF3YWJsZTsKKyAg
ICBXZWJDb3JlOjpYVW5pcXVlUGl4bWFwIG1fZHJhd2FibGU7CiAgICAgRGlzcGxheSogbV9wbHVn
aW5EaXNwbGF5OwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBHdGtXaWRnZXQqIG1fcGxhdGZvcm1Q
bHVnaW5XaWRnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCmluZGV4
IDM3ZjQ3OTMuLjIzNzFmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1hVbmlxdWUuaD4KIAog
I2lmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxndGsvZ3RrLmg+CkBAIC0xNzUsMTIgKzE3Niwx
MCBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93bGVz
cygpCiAgICAgdmlzdWFsVGVtcGxhdGUuZGVwdGggPSBkZXB0aDsKICAgICB2aXN1YWxUZW1wbGF0
ZS5jX2NsYXNzID0gVHJ1ZUNvbG9yOwogICAgIGludCBudW1NYXRjaGluZzsKLSAgICBYVmlzdWFs
SW5mbyogdmlzdWFsSW5mbyA9IFhHZXRWaXN1YWxJbmZvKGRpc3BsYXksIFZpc3VhbFNjcmVlbk1h
c2sgfCBWaXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01hc2ssCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmlzdWFsVGVtcGxhdGUsICZudW1NYXRjaGlu
Zyk7CisgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFsSW5mbyhYR2V0VmlzdWFsSW5m
byhkaXNwbGF5LCBWaXN1YWxTY3JlZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwgVmlzdWFsQ2xh
c3NNYXNrLCAmdmlzdWFsVGVtcGxhdGUsICZudW1NYXRjaGluZykpOwogICAgIEFTU0VSVCh2aXN1
YWxJbmZvKTsKLSAgICBWaXN1YWwqIHZpc3VhbCA9IHZpc3VhbEluZm9bMF0udmlzdWFsOworICAg
IFZpc3VhbCogdmlzdWFsID0gdmlzdWFsSW5mby5nZXQoKVswXS52aXN1YWw7CiAgICAgQVNTRVJU
KHZpc3VhbCk7Ci0gICAgWEZyZWUodmlzdWFsSW5mbyk7CiAKICAgICBjYWxsYmFja1N0cnVjdC0+
dmlzdWFsID0gdmlzdWFsOwogICAgIGNhbGxiYWNrU3RydWN0LT5jb2xvcm1hcCA9IFhDcmVhdGVD
b2xvcm1hcChkaXNwbGF5LCByb290V2luZG93SUQoKSwgdmlzdWFsLCBBbGxvY05vbmUpOwpAQCAt
MjMyLDEwICsyMzEsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybURlc3Ryb3koKQog
ICAgIFhGcmVlQ29sb3JtYXAoaG9zdERpc3BsYXksIGNhbGxiYWNrU3RydWN0LT5jb2xvcm1hcCk7
CiAgICAgZGVsZXRlIGNhbGxiYWNrU3RydWN0OwogCi0gICAgaWYgKG1fZHJhd2FibGUpIHsKLSAg
ICAgICAgWEZyZWVQaXhtYXAoaG9zdERpc3BsYXksIG1fZHJhd2FibGUpOwotICAgICAgICBtX2Ry
YXdhYmxlID0gMDsKLSAgICB9CisgICAgbV9kcmF3YWJsZS5yZXNldCgpOwogCiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIGlmIChtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0KSB7CkBAIC0yNjIsMTggKzI1
OCwxMiBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIERpc3BsYXkqIGRpc3BsYXkgPSB4MTFIb3N0
RGlzcGxheSgpOwotICAgIGlmIChtX2RyYXdhYmxlKQotICAgICAgICBYRnJlZVBpeG1hcChkaXNw
bGF5LCBtX2RyYXdhYmxlKTsKLQotICAgIGlmIChtX3BsdWdpblNpemUuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIG1fZHJhd2FibGUgPSAwOworICAgIG1fZHJhd2FibGUucmVzZXQoKTsKKyAgICBpZiAo
bV9wbHVnaW5TaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1f
ZHJhd2FibGUgPSBYQ3JlYXRlUGl4bWFwKGRpc3BsYXksIHJvb3RXaW5kb3dJRCgpLCBtX3BsdWdp
blNpemUud2lkdGgoKSwgbV9wbHVnaW5TaXplLmhlaWdodCgpLCBkaXNwbGF5RGVwdGgoKSk7CiAK
LSAgICBYU3luYyhkaXNwbGF5LCBmYWxzZSk7IC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzZXJ2ZXIg
a25vd3MgYWJvdXQgdGhlIERyYXdhYmxlLgorICAgIG1fZHJhd2FibGUgPSBYQ3JlYXRlUGl4bWFw
KHgxMUhvc3REaXNwbGF5KCksIHJvb3RXaW5kb3dJRCgpLCBtX3BsdWdpblNpemUud2lkdGgoKSwg
bV9wbHVnaW5TaXplLmhlaWdodCgpLCBkaXNwbGF5RGVwdGgoKSk7CisgICAgWFN5bmMoeDExSG9z
dERpc3BsYXkoKSwgZmFsc2UpOyAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc2VydmVyIGtub3dzIGFi
b3V0IHRoZSBEcmF3YWJsZS4KIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1WaXNp
YmlsaXR5RGlkQ2hhbmdlKCkKQEAgLTMwNyw3ICsyOTcsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2lu
OjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYg
ZGlydAogICAgIFhHcmFwaGljc0V4cG9zZUV2ZW50JiBleHBvc2VFdmVudCA9IHhldmVudC54Z3Jh
cGhpY3NleHBvc2U7CiAgICAgZXhwb3NlRXZlbnQudHlwZSA9IEdyYXBoaWNzRXhwb3NlOwogICAg
IGV4cG9zZUV2ZW50LmRpc3BsYXkgPSB4MTFIb3N0RGlzcGxheSgpOwotICAgIGV4cG9zZUV2ZW50
LmRyYXdhYmxlID0gbV9kcmF3YWJsZTsKKyAgICBleHBvc2VFdmVudC5kcmF3YWJsZSA9IG1fZHJh
d2FibGUuZ2V0KCk7CiAKICAgICBJbnRSZWN0IGV4cG9zZWRSZWN0KGRpcnR5UmVjdCk7CiAgICAg
ZXhwb3NlRXZlbnQueCA9IGV4cG9zZWRSZWN0LngoKTsKQEAgLTMyNCwxMSArMzE0LDggQEAgdm9p
ZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGRpcnQKICAgICAgICAgWFN5bmMobV9wbHVnaW5EaXNwbGF5LCBmYWxz
ZSk7CiAKICNpZiBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIFVTRShDQUlSTykp
Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gZHJhd2FibGVTdXJmYWNlID0gYWRvcHRSZWYo
Y2Fpcm9feGxpYl9zdXJmYWNlX2NyZWF0ZShtX3BsdWdpbkRpc3BsYXksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2RyYXdhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyktPnZpc3Vh
bCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGx1Z2luU2l6ZS53aWR0aCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wbHVnaW5TaXplLmhlaWdodCgpKSk7CisgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gZHJhd2FibGVTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9feGxpYl9zdXJm
YWNlX2NyZWF0ZShtX3BsdWdpbkRpc3BsYXksIG1fZHJhd2FibGUuZ2V0KCksCisgICAgICAgIHN0
YXRpY19jYXN0PE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPihtX25wV2luZG93LndzX2luZm8p
LT52aXN1YWwsIG1fcGx1Z2luU2l6ZS53aWR0aCgpLCBtX3BsdWdpblNpemUuaGVpZ2h0KCkpKTsK
ICAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAg
IGNhaXJvX3NhdmUoY3IpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252487</attachid>
            <date>2015-05-06 10:07:29 -0700</date>
            <delta_ts>2015-05-08 02:34:56 -0700</delta_ts>
            <desc>Try to fix EFL build</desc>
            <filename>wk-xunique.diff</filename>
            <type>text/plain</type>
            <size>55590</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjhiMGU1Li5iNTgzNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQg
QEAKKzIwMTUtMDUtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtYMTFdIEFkZCBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8g
YXV0b21hdGljYWxseSBmcmVlIFggcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgWFVuaXF1ZVB0ciBhcyBhIHRlbXBsYXRlIGFsaWFz
IG9mIHN0ZDp1bmlxdWVfcHRyIHRvIGhhbmRsZSBYCisgICAgICAgIHJlc291cmNlcyB1c2luZyBw
b2ludGVycyBhbmQgWFVuaXF1ZVJlc291cmNlIGFzIGEgbmV3IGNsYXNzIHRvCisgICAgICAgIGhh
bmRsZSBYIHJlc291cmNlcyB1c2luZyBhIGxvbmcgdW5zaWduZWQgaWRlbnRpZmllci4gVGhpcwor
ICAgICAgICBzaW1wbGlmaWVzIHRoZSBjb2RlIGFuZCBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdCB0
byBsZWFrIFggcmVzb3VyY2VzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBu
ZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFk
ZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDEx
KToKKyAgICAgICAgUmVtb3ZlIHRoZSBkaXNwbGF5IG1lbWJlciwgYW5kIHVzZSBYVW5pcXVlIGZv
ciBQaXhtYXAgYW5kIEdDLgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZENh
aXJvWDExOjp+QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKToKKyAgICAgICAgUmVtb3ZlIGNv
ZGUgdG8gZXhwbGljaXRseSBmcmVlIFBpeG1hcCBhbmQgR0MuCisgICAgICAgIChXZWJDb3JlOjpC
YWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6OnNjcm9sbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQpOiBVc2UgWFVuaXF1ZSBhbmQgdGhl
CisgICAgICAgIG5ldyBjb25zdHJ1Y3RvciB0aGF0IHJlY2VpdmVzIGEgWElELCBzaW5jZSB0aGVy
ZSdzIG5vIGxvbmdlcgorICAgICAgICBjb25mbGljdCB3aXRoIHRoZSBvbmUgcmVjZWl2aW5nIGEg
UGJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNv
bnRleHQpOiBVc2UgWFVuaXF1ZSBhbmQgdGhlCisgICAgICAgIG5ldyBjb25zdHJ1Y3RvciB0aGF0
IHJlY2VpdmVzIGEgWFVuaXF1ZUdMWFBidWZmZXImJi4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRl
eHRHTFg6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpH
TENvbnRleHRHTFgpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjp+R0xDb250ZXh0
R0xYKTogUmVtb3ZlIGNvZGUgdG8gZXhwbGljaXRseQorICAgICAgICBmcmVlIFggcmVzb3VyY2Vz
LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjptYWtlQ29udGV4dEN1cnJlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRHTFg6OnBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFR0xY
VHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OmRlc3Ryb3kpOgorICAg
ICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OnByZXBhcmVUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTFRleHR1cmVGcm9tUGl4bWFwOjpFR0xUZXh0dXJlRnJv
bVBpeG1hcCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
ZWdsL0VHTFhTdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWENvbmZpZ1NlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxl
Y3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnKTogVXNlIFhVbmlxdWUKKyAgICAgICAgaW5zdGVhZCBv
ZiB0aGUgY3VzdG9tIHN0ZDo6dW5pcXVlIFgxMURlbGV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpH
TFhDb25maWdTZWxlY3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnV2l0aFZpc3VhbElkKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0U3Vy
ZmFjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R0xYT2ZmU2NyZWVuU3VyZmFjZTo6aW5p
dGlhbGl6ZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9YMTFIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WDExSGVscGVyOjpjcmVhdGVPZmZT
Y3JlZW5XaW5kb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlgxMUhlbHBlcjo6Y3JlYXRl
UGl4bWFwKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L1gxMUhlbHBlci5oOiBSZW1vdmUgWDExRGVsZXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy94MTEvWFVuaXF1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJl
c291cmNlPFhSZXNvdXJjZTo6Q29sb3JtYXA+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6RGFtYWdlPjo6ZGVsZXRlWFJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OlBpeG1h
cD46OmRlbGV0ZVhSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8
WFJlc291cmNlOjpXaW5kb3c+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj46OmRlbGV0ZVhSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpHTFhQaXhtYXA+
OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5p
cXVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFB0ckRlbGV0ZXI6Om9wZXJhdG9yKCkp
OgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpYVW5pcXVlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpvcGVyYXRvcj0pOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjp+WFVuaXF1ZVJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVS
ZXNvdXJjZTo6cmVsZWFzZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U6OnJl
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6b3BlcmF0b3IhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29s
VHlwZSopOgorCiAyMDE1LTA1LTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gTmV0d29yayBDYWNoZTogSW1wbGVtZW50IFNoYXJl
YWJsZVJlc291cmNlIGZvciBTb3VwIGFuZCBlbmFibGUgaXQgZm9yIEdUSyBwbGF0Zm9ybQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3NjRiMzM2Li40ZmY2ODk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMTk3LDYgKzE5Nyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxh
cy5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuY3BwCiAKICAgICBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggYjVkMDliNy4uYWU5OGY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEy
Niw2ICsxMjYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKIAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MveDExL1hVbmlxdWUuY3BwCiAKICAgICBwbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAogICAg
IHBsYXRmb3JtL2d0ay9FdmVudExvb3BHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExLmNwcAppbmRleCA0YzA4NzJmLi43Yjg2MzFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm9YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Jh
Y2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMS5jcHAKQEAgLTI2LDE3ICsyNiwxNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0
b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqIGRpc3BsYXksIHVuc2lnbmVkIGxvbmcgcm9vdFdp
bmRvd0lELCBWaXN1YWwqIHZpc3VhbCwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiBzaXplLCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFj
a2luZ1N0b3JlQmFja2VuZENhaXJvWDExKHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lELCBWaXN1
YWwqIHZpc3VhbCwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikKICAgICA6IEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyhzaXplKQotICAgICwg
bV9kaXNwbGF5KGRpc3BsYXkpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gc2l6ZTsKICAg
ICBzY2FsZWRTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKIAotICAgIG1fcGl4bWFwID0g
WENyZWF0ZVBpeG1hcChtX2Rpc3BsYXksIHJvb3RXaW5kb3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgp
LCBzY2FsZWRTaXplLmhlaWdodCgpLCBkZXB0aCk7Ci0gICAgbV9nYyA9IFhDcmVhdGVHQyhtX2Rp
c3BsYXksIG1fcGl4bWFwLCAwLCBudWxscHRyKTsKKyAgICBhdXRvKiBkaXNwbGF5ID0gZG93bmNh
c3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSku
bmF0aXZlKCk7CisgICAgbV9waXhtYXAgPSBYQ3JlYXRlUGl4bWFwKGRpc3BsYXksIHJvb3RXaW5k
b3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhlaWdodCgpLCBkZXB0aCk7Cisg
ICAgbV9nYy5yZXNldChYQ3JlYXRlR0MoZGlzcGxheSwgbV9waXhtYXAuZ2V0KCksIDAsIG51bGxw
dHIpKTsKIAotICAgIG1fc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVh
dGUobV9kaXNwbGF5LCBtX3BpeG1hcCwgdmlzdWFsLCBzY2FsZWRTaXplLndpZHRoKCksIHNjYWxl
ZFNpemUuaGVpZ2h0KCkpKTsKKyAgICBtX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1
cmZhY2VfY3JlYXRlKGRpc3BsYXksIG1fcGl4bWFwLmdldCgpLCB2aXN1YWwsIHNjYWxlZFNpemUu
d2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWlnaHQoKSkpOwogICAgIGNhaXJvU3VyZmFjZVNldERldmlj
ZVNjYWxlKG1fc3VyZmFjZS5nZXQoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFj
dG9yKTsKIH0KIApAQCAtNDQsOCArNDQsNiBAQCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6
On5CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEoKQogewogICAgIC8vIFRoZSBwaXhtYXAgbmVl
ZHMgdG8gZXhpc3Qgd2hlbiB0aGUgc3VyZmFjZSBpcyBkZXN0cm95ZWQsIHNvIGJlZ2luIGJ5IGNs
ZWFyaW5nIGl0LgogICAgIG1fc3VyZmFjZS5jbGVhcigpOwotICAgIFhGcmVlUGl4bWFwKG1fZGlz
cGxheSwgbV9waXhtYXApOwotICAgIFhGcmVlR0MobV9kaXNwbGF5LCBtX2djKTsKIH0KIAogdm9p
ZCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3Jv
bGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpCkBAIC02NSw3ICs2Myw3IEBAIHZv
aWQgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExOjpzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Ny
b2xsUmVjdCwgY29uc3QgSW50U2l6CiAgICAgc2NhbGVkU2Nyb2xsT2Zmc2V0LnNjYWxlKHhTY2Fs
ZSwgeVNjYWxlKTsKIAogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsK
LSAgICBYQ29weUFyZWEobV9kaXNwbGF5LCBtX3BpeG1hcCwgbV9waXhtYXAsIG1fZ2MsCisgICAg
WENvcHlBcmVhKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBtX3BpeG1hcC5nZXQoKSwgbV9waXhtYXAuZ2V0KCks
IG1fZ2MuZ2V0KCksCiAgICAgICAgIHRhcmdldFJlY3QueCgpIC0gc2NhbGVkU2Nyb2xsT2Zmc2V0
LndpZHRoKCksIHRhcmdldFJlY3QueSgpIC0gc2NhbGVkU2Nyb2xsT2Zmc2V0LmhlaWdodCgpLAog
ICAgICAgICB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIHRhcmdldFJl
Y3QueCgpLCB0YXJnZXRSZWN0LnkoKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3Jl
Y3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwg
dGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyb1gxMS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2lu
Z1N0b3JlQmFja2VuZENhaXJvWDExLmgKaW5kZXggMWRlMGQ4NC4uNDA3OGE2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmgKQEAgLTIyLDIxICsyMiwyMCBAQAogI2lu
Y2x1ZGUgIkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyby5oIgogCiAjaWYgVVNFKENBSVJPKSAmJiBQ
TEFURk9STShYMTEpCi0jaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlICJYVW5pcXVlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmFja2luZ1N0b3JlQmFja2VuZENhaXJv
WDExIGZpbmFsIDogcHVibGljIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyB7CiBwdWJsaWM6Ci0g
ICAgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqLCB1bnNpZ25lZCBsb25nIHJv
b3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IpOworICAgIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMSh1bnNpZ25l
ZCBsb25nIHJvb3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIHZpcnR1YWwgfkJhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb1gxMSgpOwogCiAgICAgdm9pZCBzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVj
dCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBEaXNwbGF5KiBtX2Rpc3BsYXk7Ci0gICAgUGl4bWFwIG1fcGl4bWFwOwotICAgIEdDIG1fZ2M7
CisgICAgWFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKKyAgICBYVW5pcXVlR0MgbV9nYzsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggZjc0NjdhNy4uYzEwOGNjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5jcHAKQEAgLTQzLDI1ICs0MywxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0
R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgR0xDbwog
ICAgIHZpc3VhbEluZm8udmlzdWFsaWQgPSBYVmlzdWFsSURGcm9tVmlzdWFsKGF0dHJpYnV0ZXMu
dmlzdWFsKTsKIAogICAgIGludCBudW1SZXR1cm5lZCA9IDA7Ci0gICAgWFZpc3VhbEluZm8qIHZp
c3VhbEluZm9MaXN0ID0gWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsSURNYXNrLCAmdmlz
dWFsSW5mbywgJm51bVJldHVybmVkKTsKLQotICAgIEdMWENvbnRleHQgZ2x4U2hhcmluZ0NvbnRl
eHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEdMWCo+KHNoYXJpbmdD
b250ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBnbFhDcmVh
dGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9MaXN0LCBnbHhTaGFyaW5nQ29udGV4dCwgVHJ1
ZSk7Ci0gICAgWEZyZWUodmlzdWFsSW5mb0xpc3QpOworICAgIFhVbmlxdWVQdHI8WFZpc3VhbElu
Zm8+IHZpc3VhbEluZm9MaXN0KFhHZXRWaXN1YWxJbmZvKGRpc3BsYXksIFZpc3VhbElETWFzaywg
JnZpc3VhbEluZm8sICZudW1SZXR1cm5lZCkpOwogCisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5n
Q29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hh
cmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkgOiBudWxscHRyOworICAgIFhVbmlxdWVHTFhD
b250ZXh0IGNvbnRleHQoZ2xYQ3JlYXRlQ29udGV4dChkaXNwbGF5LCB2aXN1YWxJbmZvTGlzdC5n
ZXQoKSwgZ2x4U2hhcmluZ0NvbnRleHQsIFRydWUpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gR0xYUGJ1ZmZlciBhbmQgWElEIGFyZSBib3Ro
IHRoZSBzYW1lIHR5cGVzIHVuZGVybmVhdGgsIHNvIHdlIGhhdmUgdG8gc2hhcmUKLSAgICAvLyBh
IGNvbnN0cnVjdG9yIGhlcmUgd2l0aCB0aGUgd2luZG93IHBhdGguCi0gICAgYXV0byBjb250ZXh0
V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihjb250ZXh0KTsKLSAgICBj
b250ZXh0V3JhcHBlci0+bV93aW5kb3cgPSB3aW5kb3c7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShj
b250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xY
PihXVEY6Om1vdmUoY29udGV4dCksIHdpbmRvdyk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBz
aGFyaW5nQ29udGV4dCkKIHsKLSAgICBpbnQgZmJDb25maWdBdHRyaWJ1dGVzW10gPSB7CisgICAg
c3RhdGljIGNvbnN0IGludCBmYkNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHsKICAgICAgICAgR0xYX0RS
QVdBQkxFX1RZUEUsIEdMWF9QQlVGRkVSX0JJVCwKICAgICAgICAgR0xYX1JFTkRFUl9UWVBFLCBH
TFhfUkdCQV9CSVQsCiAgICAgICAgIEdMWF9SRURfU0laRSwgMSwKQEAgLTc0LDMyICs2OCwyMSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZm
ZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcgogCiAgICAgaW50IHJldHVybmVkRWxlbWVudHM7CiAg
ICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwotICAgIEdMWEZCQ29uZmlnKiBj
b25maWdzID0gZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRyaWJ1dGVz
LCAmcmV0dXJuZWRFbGVtZW50cyk7Ci0gICAgaWYgKCFyZXR1cm5lZEVsZW1lbnRzKSB7Ci0gICAg
ICAgIFhGcmVlKGNvbmZpZ3MpOworICAgIFhVbmlxdWVQdHI8R0xYRkJDb25maWc+IGNvbmZpZ3Mo
Z2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRyaWJ1dGVzLCAmcmV0dXJu
ZWRFbGVtZW50cykpOworICAgIGlmICghcmV0dXJuZWRFbGVtZW50cykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQogCiAgICAgLy8gV2Ugd2lsbCBiZSByZW5kZXJpbmcgdG8gYSB0ZXh0
dXJlLCBzbyBvdXIgcGJ1ZmZlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGxhcmdlLgogICAgIHN0YXRp
YyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgR0xYX1BCVUZGRVJfV0lEVEgsIDEs
IEdMWF9QQlVGRkVSX0hFSUdIVCwgMSwgMCB9OwotICAgIEdMWFBidWZmZXIgcGJ1ZmZlciA9IGds
WENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmlnc1swXSwgcGJ1ZmZlckF0dHJpYnV0ZXMpOwot
ICAgIGlmICghcGJ1ZmZlcikgewotICAgICAgICBYRnJlZShjb25maWdzKTsKKyAgICBYVW5pcXVl
R0xYUGJ1ZmZlciBwYnVmZmVyKGdsWENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmlncy5nZXQo
KVswXSwgcGJ1ZmZlckF0dHJpYnV0ZXMpKTsKKyAgICBpZiAoIXBidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWENvbnRleHQgY29udGV4dCA9IGdsWENyZWF0
ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmlnc1swXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0Nv
bnRleHQsIEdMX1RSVUUpOwotICAgIFhGcmVlKGNvbmZpZ3MpOwotICAgIGlmICghY29udGV4dCkg
ewotICAgICAgICBnbFhEZXN0cm95UGJ1ZmZlcihkaXNwbGF5LCBwYnVmZmVyKTsKKyAgICBYVW5p
cXVlR0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmln
cy5nZXQoKVswXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0NvbnRleHQsIEdMX1RSVUUpKTsKKyAg
ICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIC8v
IEdMWFBidWZmZXIgYW5kIFhJRCBhcmUgYm90aCB0aGUgc2FtZSB0eXBlcyB1bmRlcm5lYXRoLCBz
byB3ZSBoYXZlIHRvIHNoYXJlCi0gICAgLy8gYSBjb25zdHJ1Y3RvciBoZXJlIHdpdGggdGhlIHdp
bmRvdyBwYXRoLgotICAgIGF1dG8gY29udGV4dFdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdM
Q29udGV4dEdMWD4oY29udGV4dCk7Ci0gICAgY29udGV4dFdyYXBwZXItPm1fcGJ1ZmZlciA9IHBi
dWZmZXI7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEY6Om1vdmUoY29udGV4dCksIFdURjo6
bW92ZShwYnVmZmVyKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29u
dGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KQpA
QCAtMTE0LDMxICs5NywyMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRl
eHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaQogICAgIH07CiAKICAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7Ci0gICAgWFZpc3VhbEluZm8qIHZp
c3VhbEluZm8gPSBnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5
KSwgdmlzdWFsQXR0cmlidXRlcyk7CisgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFs
SW5mbyhnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5KSwgdmlz
dWFsQXR0cmlidXRlcykpOwogICAgIGlmICghdmlzdWFsSW5mbykKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBnbFhDcmVhdGVDb250ZXh0KGRpc3Bs
YXksIHZpc3VhbEluZm8sIHNoYXJpbmdDb250ZXh0LCBHTF9UUlVFKTsKLSAgICBpZiAoIWNvbnRl
eHQpIHsKLSAgICAgICAgWEZyZWUodmlzdWFsSW5mbyk7CisgICAgWFVuaXF1ZUdMWENvbnRleHQg
Y29udGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm8uZ2V0KCksIHNoYXJp
bmdDb250ZXh0LCBHTF9UUlVFKSk7CisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9CiAKLSAgICBQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcChkaXNw
bGF5LCBEZWZhdWx0Um9vdFdpbmRvdyhkaXNwbGF5KSwgMSwgMSwgdmlzdWFsSW5mby0+ZGVwdGgp
OwotICAgIGlmICghcGl4bWFwKSB7Ci0gICAgICAgIFhGcmVlKHZpc3VhbEluZm8pOworICAgIFhV
bmlxdWVQaXhtYXAgcGl4bWFwKFhDcmVhdGVQaXhtYXAoZGlzcGxheSwgRGVmYXVsdFJvb3RXaW5k
b3coZGlzcGxheSksIDEsIDEsIHZpc3VhbEluZm8tPmRlcHRoKSk7CisgICAgaWYgKCFwaXhtYXAp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWFBpeG1hcCBnbHhQaXht
YXAgPSBnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mbywgcGl4bWFwKTsKLSAg
ICBpZiAoIWdseFBpeG1hcCkgewotICAgICAgICBYRnJlZVBpeG1hcChkaXNwbGF5LCBwaXhtYXAp
OwotICAgICAgICBYRnJlZSh2aXN1YWxJbmZvKTsKKyAgICBYVW5pcXVlR0xYUGl4bWFwIGdseFBp
eG1hcChnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mby5nZXQoKSwgcGl4bWFw
LmdldCgpKSk7CisgICAgaWYgKCFnbHhQaXhtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KIAotICAgIFhGcmVlKHZpc3VhbEluZm8pOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdMQ29udGV4dEdMWD4oY29udGV4dCwgcGl4bWFwLCBnbHhQaXhtYXApOworICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdMWD4oV1RGOjptb3ZlKGNvbnRleHQpLCBXVEY6
Om1vdmUocGl4bWFwKSwgV1RGOjptb3ZlKGdseFBpeG1hcCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRvdywg
R0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKQEAgLTE1Miw3ICsxMjcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRv
dywgR0xDb250ZXh0KgogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRleHQgPyBz
dGF0aWNfY2FzdDxHTENvbnRleHRHTFgqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4dCA6IDA7
CisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3Rh
dGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkg
OiBudWxscHRyOwogICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRl
eHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOwogICAgIGlmICghY29udGV4dCkK
ICAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGdseFNoYXJpbmdDb250ZXh0
KTsKQEAgLTE2NCwyMyArMTM5LDI3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdM
Q29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqCiAgICAgcmV0
dXJuIFdURjo6bW92ZShjb250ZXh0KTsKIH0KIAotR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgo
R0xYQ29udGV4dCBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitHTENvbnRleHRH
TFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhJRCB3aW5kb3cp
CisgICAgOiBtX2NvbnRleHQoV1RGOjptb3ZlKGNvbnRleHQpKQorICAgICwgbV93aW5kb3cod2lu
ZG93KQorICAgICwgbV9jYWlyb0RldmljZShudWxscHRyKQoreworfQorCitHTENvbnRleHRHTFg6
OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhVbmlxdWVHTFhQYnVm
ZmVyJiYgcGJ1ZmZlcikKKyAgICA6IG1fY29udGV4dChXVEY6Om1vdmUoY29udGV4dCkpCiAgICAg
LCBtX3dpbmRvdygwKQotICAgICwgbV9wYnVmZmVyKDApCi0gICAgLCBtX3BpeG1hcCgwKQotICAg
ICwgbV9nbHhQaXhtYXAoMCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKKyAgICAsIG1fcGJ1ZmZl
cihXVEY6Om1vdmUocGJ1ZmZlcikpCisgICAgLCBtX2NhaXJvRGV2aWNlKG51bGxwdHIpCiB7CiB9
CiAKLUdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKEdMWENvbnRleHQgY29udGV4dCwgUGl4bWFw
IHBpeG1hcCwgR0xYUGl4bWFwIGdseFBpeG1hcCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQor
R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBjb250ZXh0LCBY
VW5pcXVlUGl4bWFwJiYgcGl4bWFwLCBYVW5pcXVlR0xYUGl4bWFwJiYgZ2x4UGl4bWFwKQorICAg
IDogbV9jb250ZXh0KFdURjo6bW92ZShjb250ZXh0KSkKICAgICAsIG1fd2luZG93KDApCi0gICAg
LCBtX3BidWZmZXIoMCkKLSAgICAsIG1fcGl4bWFwKHBpeG1hcCkKLSAgICAsIG1fZ2x4UGl4bWFw
KGdseFBpeG1hcCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKKyAgICAsIG1fcGl4bWFwKFdURjo6
bW92ZShwaXhtYXApKQorICAgICwgbV9nbHhQaXhtYXAoV1RGOjptb3ZlKGdseFBpeG1hcCkpCisg
ICAgLCBtX2NhaXJvRGV2aWNlKG51bGxwdHIpCiB7CiB9CiAKQEAgLTE4OSwyNiArMTY4LDEyIEBA
IEdMQ29udGV4dEdMWDo6fkdMQ29udGV4dEdMWCgpCiAgICAgaWYgKG1fY2Fpcm9EZXZpY2UpCiAg
ICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95KG1fY2Fpcm9EZXZpY2UpOwogCi0gICAgRGlzcGxh
eSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAg
ICAgLy8gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZXZlbnQgY3Jhc2hlcyB3aXRoIE5WaWRp
YSdzIGNsb3NlZCBzb3VyY2UgZHJpdmVycy4gT3JpZ2luYWxseQogICAgICAgICAvLyBmcm9tIE1v
emlsbGEncyAzRCBjYW52YXMgaW1wbGVtZW50YXRpb24gYXQ6IGh0dHA6Ly9iaXRidWNrZXQub3Jn
L2lsbWFyaS9jYW52YXMzZC8KKyAgICAgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpOwogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIDAp
OwogICAgICAgICBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBOb25lLCBOb25lKTsKLSAgICAgICAg
Z2xYRGVzdHJveUNvbnRleHQoZGlzcGxheSwgbV9jb250ZXh0KTsKLSAgICB9Ci0KLSAgICBpZiAo
bV9wYnVmZmVyKSB7Ci0gICAgICAgIGdsWERlc3Ryb3lQYnVmZmVyKGRpc3BsYXksIG1fcGJ1ZmZl
cik7Ci0gICAgICAgIG1fcGJ1ZmZlciA9IDA7Ci0gICAgfQotICAgIGlmIChtX2dseFBpeG1hcCkg
ewotICAgICAgICBnbFhEZXN0cm95R0xYUGl4bWFwKGRpc3BsYXksIG1fZ2x4UGl4bWFwKTsKLSAg
ICAgICAgbV9nbHhQaXhtYXAgPSAwOwotICAgIH0KLSAgICBpZiAobV9waXhtYXApIHsKLSAgICAg
ICAgWEZyZWVQaXhtYXAoZGlzcGxheSwgbV9waXhtYXApOwotICAgICAgICBtX3BpeG1hcCA9IDA7
CiAgICAgfQogfQogCkBAIC0yMzcsMTcgKzIwMiwxNyBAQCBib29sIEdMQ29udGV4dEdMWDo6bWFr
ZUNvbnRleHRDdXJyZW50KCkKICAgICBBU1NFUlQobV9jb250ZXh0ICYmIChtX3dpbmRvdyB8fCBt
X3BidWZmZXIgfHwgbV9nbHhQaXhtYXApKTsKIAogICAgIEdMQ29udGV4dDo6bWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0gICAgaWYgKGdsWEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0KQor
ICAgIGlmIChnbFhHZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dC5nZXQoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZv
cm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7
CiAgICAgaWYgKG1fd2luZG93KQotICAgICAgICByZXR1cm4gZ2xYTWFrZUN1cnJlbnQoZGlzcGxh
eSwgbV93aW5kb3csIG1fY29udGV4dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChk
aXNwbGF5LCBtX3dpbmRvdywgbV9jb250ZXh0LmdldCgpKTsKIAogICAgIGlmIChtX3BidWZmZXIp
Ci0gICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3BidWZmZXIsIG1fY29u
dGV4dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3BidWZmZXIu
Z2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiAKLSAgICByZXR1cm4gOjpnbFhNYWtlQ3VycmVudChk
aXNwbGF5LCBtX2dseFBpeG1hcCwgbV9jb250ZXh0KTsKKyAgICByZXR1cm4gOjpnbFhNYWtlQ3Vy
cmVudChkaXNwbGF5LCBtX2dseFBpeG1hcC5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKIH0KIAog
dm9pZCBHTENvbnRleHRHTFg6OnN3YXBCdWZmZXJzKCkKQEAgLTI2Nyw3ICsyMzIsNyBAQCBjYWly
b19kZXZpY2VfdCogR0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSgpCiAgICAgICAgIHJldHVybiBt
X2NhaXJvRGV2aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBt
X2NhaXJvRGV2aWNlID0gY2Fpcm9fZ2x4X2RldmljZV9jcmVhdGUoZG93bmNhc3Q8UGxhdGZvcm1E
aXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIG1f
Y29udGV4dCk7CisgICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2dseF9kZXZpY2VfY3JlYXRlKGRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkpLm5hdGl2ZSgpLCBtX2NvbnRleHQuZ2V0KCkpOwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9j
YWlyb0RldmljZTsKQEAgLTI3Niw3ICsyNDEsNyBAQCBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0
R0xYOjpjYWlyb0RldmljZSgpCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCiBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEdMWDo6cGxhdGZvcm1Db250ZXh0KCkKIHsK
LSAgICByZXR1cm4gbV9jb250ZXh0OworICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4
L0dMQ29udGV4dEdMWC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dM
Q29udGV4dEdMWC5oCmluZGV4IDY5MzRmMjQuLjQwMjNiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKQEAgLTIzLDEyICsy
Myw5IEBACiAjaWYgVVNFKEdMWCkKIAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgorI2luY2x1ZGUg
IlhVbmlxdWUuaCIKIAotdHlwZWRlZiBzdHJ1Y3QgX19HTFhjb250ZXh0UmVjKiBHTFhDb250ZXh0
OwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdMWFBidWZmZXI7Ci10eXBlZGVmIHVuc2lnbmVkIGxv
bmcgR0xYUGl4bWFwOwogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIEdMdWJ5dGU7Ci10eXBlZGVmIHVu
c2lnbmVkIGxvbmcgUGl4bWFwOwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJRDsKIHR5cGVkZWYg
dm9pZCogQ29udGV4dEtleVR5cGU7CiAKQEAgLTQwLDggKzM3LDkgQEAgcHVibGljOgogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVDb250ZXh0KFhJRCB3aW5k
b3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0R0xYPiBjcmVhdGVXaW5kb3dDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4
dCogc2hhcmluZ0NvbnRleHQpOwogCi0gICAgR0xDb250ZXh0R0xYKEdMWENvbnRleHQpOwotICAg
IEdMQ29udGV4dEdMWChHTFhDb250ZXh0LCBQaXhtYXAsIEdMWFBpeG1hcCk7CisgICAgR0xDb250
ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYsIFhJRCk7CisgICAgR0xDb250ZXh0R0xYKFhVbmlx
dWVHTFhDb250ZXh0JiYsIFhVbmlxdWVHTFhQYnVmZmVyJiYpOworICAgIEdMQ29udGV4dEdMWChY
VW5pcXVlR0xYQ29udGV4dCYmLCBYVW5pcXVlUGl4bWFwJiYsIFhVbmlxdWVHTFhQaXhtYXAmJik7
CiAgICAgdmlydHVhbCB+R0xDb250ZXh0R0xYKCk7CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpOwpAQCAtNTksMTEg
KzU3LDExIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRH
TFg+IGNyZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQaXhtYXBDb250ZXh0
KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpOwogCi0gICAgR0xYQ29udGV4dCBtX2NvbnRleHQ7
CisgICAgWFVuaXF1ZUdMWENvbnRleHQgbV9jb250ZXh0OwogICAgIFhJRCBtX3dpbmRvdzsKLSAg
ICBHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKLSAgICBQaXhtYXAgbV9waXhtYXA7Ci0gICAgR0xYUGl4
bWFwIG1fZ2x4UGl4bWFwOworICAgIFhVbmlxdWVHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKKyAgICBY
VW5pcXVlUGl4bWFwIG1fcGl4bWFwOworICAgIFhVbmlxdWVHTFhQaXhtYXAgbV9nbHhQaXhtYXA7
CiAgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhT
dXJmYWNlLmNwcAppbmRleCA2MThmZGMzLi5kNGUzNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFj
ZS5jcHAKQEAgLTE0MSw3ICsxNDEsNiBAQCB2b2lkIEVHTFBpeG1hcFN1cmZhY2U6OmRlc3Ryb3ko
KQogCiBFR0xYVHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGll
bnQoY29uc3QgUGxhdGZvcm1CdWZmZXJIYW5kbGUgaGFuZGxlLCBjb25zdCBJbnRTaXplJiBzaXpl
LCBib29sIGhhc0FscGhhKQogICAgIDogR0xUcmFuc3BvcnRTdXJmYWNlQ2xpZW50KCkKLSAgICAs
IG1faW1hZ2UoMCkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV90b3RhbEJ5dGVzKDApCiB7
CkBAIC0xOTcsMTEgKzE5Niw3IEBAIHZvaWQgRUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OmRl
c3Ryb3koKQogICAgIH0KIAogICAgIGVnbFdhaXRHTCgpOwotCi0gICAgaWYgKG1faW1hZ2UpIHsK
LSAgICAgICAgWERlc3Ryb3lJbWFnZShtX2ltYWdlKTsKLSAgICAgICAgbV9pbWFnZSA9IDA7Ci0g
ICAgfQorICAgIG1faW1hZ2UucmVzZXQoKTsKIH0KIAogdm9pZCBFR0xYVHJhbnNwb3J0U3VyZmFj
ZUNsaWVudDo6cHJlcGFyZVRleHR1cmUoKQpAQCAtMjE0LDcgKzIwOSw3IEBAIHZvaWQgRUdMWFRy
YW5zcG9ydFN1cmZhY2VDbGllbnQ6OnByZXBhcmVUZXh0dXJlKCkKICAgICB9CiAKICAgICAvLyBG
YWxsYmFjayB0byB1c2UgWEltYWdlIGluIGNhc2UgRUdMSW1hZ2UgYW5kIFRleHR1cmVUb1BpeG1h
cCBhcmUgbm90IHN1cHBvcnRlZC4KLSAgICBtX2ltYWdlID0gWEdldEltYWdlKE5hdGl2ZVdyYXBw
ZXI6Om5hdGl2ZURpc3BsYXkoKSwgbV9oYW5kbGUsIDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3Np
emUuaGVpZ2h0KCksIEFsbFBsYW5lcywgWlBpeG1hcCk7CisgICAgbV9pbWFnZS5yZXNldChYR2V0
SW1hZ2UoTmF0aXZlV3JhcHBlcjo6bmF0aXZlRGlzcGxheSgpLCBtX2hhbmRsZSwgMCwgMCwgbV9z
aXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgQWxsUGxhbmVzLCBaUGl4bWFwKSk7CiAKICNp
ZiBVU0UoT1BFTkdMX0VTXzIpCiAgICAgaWYgKG1fZm9ybWF0ICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpCR1JBKSB7CkBAIC0yMjUsMTAgKzIyMCw3IEBAIHZvaWQgRUdMWFRyYW5zcG9ydFN1cmZhY2VD
bGllbnQ6OnByZXBhcmVUZXh0dXJlKCkKIAogICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBtX2Zvcm1hdCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgMCwgbV9mb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIG1faW1hZ2UtPmRhdGEpOwogCi0gICAgaWYgKG1faW1hZ2Up
IHsKLSAgICAgICAgWERlc3Ryb3lJbWFnZShtX2ltYWdlKTsKLSAgICAgICAgbV9pbWFnZSA9IDA7
Ci0gICAgfQorICAgIG1faW1hZ2UucmVzZXQoKTsKIH0KIAogRUdMVGV4dHVyZUZyb21QaXhtYXA6
OkVHTFRleHR1cmVGcm9tUGl4bWFwKGNvbnN0IE5hdGl2ZVBpeG1hcCBoYW5kbGUsIGJvb2wgaGFz
QWxwaGEsIEVHTENvbmZpZyBjb25maWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCmluZGV4IDk2Yzhh
NjYuLjI0Y2Y4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aWYgUExBVEZPUk0oWDExKSAmJiBVU0UoRUdMKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIAog
I2luY2x1ZGUgIkVHTFN1cmZhY2UuaCIKKyNpbmNsdWRlICJYVW5pcXVlLmgiCiAjaW5jbHVkZSA8
Z2x4L1gxMUhlbHBlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NCw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgotICAgIFhJbWFnZSogbV9pbWFnZTsKKyAgICBYVW5pcXVlPFhJbWFnZT4gbV9pbWFnZTsKICAg
ICBJbnRTaXplIG1fc2l6ZTsKICAgICBQbGF0Zm9ybUJ1ZmZlckhhbmRsZSBtX2hhbmRsZTsKICAg
ICBHTHVpbnQgbV9mb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCmluZGV4
IDVjZGVkZTUuLjI5Zjg3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKEdMWCkKIAogI2luY2x1ZGUgIlgxMUhlbHBlci5oIgor
I2luY2x1ZGUgIlhVbmlxdWUuaCIKICNpbmNsdWRlIDxvcGVuZ2wvR0xEZWZzLmg+CiAjaW5jbHVk
ZSA8b3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmg+CiAKQEAgLTE0MCwxMyArMTQxLDEzIEBAIHBy
aXZhdGU6CiAgICAgR0xYRkJDb25maWcgZmluZE1hdGNoaW5nQ29uZmlnKGNvbnN0IGludCBhdHRy
aWJ1dGVzW10sIGludCBkZXB0aCA9IDMyKQogICAgIHsKICAgICAgICAgaW50IG51bUF2YWlsYWJs
ZUNvbmZpZ3M7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHTFhGQkNvbmZpZ1tdLCBYMTFEZWxl
dGVyPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCBE
ZWZhdWx0U2NyZWVuKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpKSwgYXR0cmlidXRlcywgJm51
bUF2YWlsYWJsZUNvbmZpZ3MpKTsKKyAgICAgICAgWFVuaXF1ZVB0cjxHTFhGQkNvbmZpZz4gdGVt
cChnbFhDaG9vc2VGQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgRGVmYXVsdFNj
cmVlbihYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFi
bGVDb25maWdzKSk7CiAKICAgICAgICAgaWYgKCFudW1BdmFpbGFibGVDb25maWdzIHx8ICF0ZW1w
LmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1BdmFpbGFibGVDb25maWdzOyArK2kpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gc2NvcGVkVmlzdWFsSW5mbyB7IGdsWEdldFZp
c3VhbEZyb21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgdGVtcFtpXSkgfTsK
KyAgICAgICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHNjb3BlZFZpc3VhbEluZm8geyBn
bFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXAu
Z2V0KClbaV0pIH07CiAgICAgICAgICAgICBpZiAoIXNjb3BlZFZpc3VhbEluZm8uZ2V0KCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTE1Nyw0MCArMTU4LDQwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdCkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
bV9hdHRyaWJ1dGVzICYgR0xQbGF0Zm9ybVN1cmZhY2U6OlN1cHBvcnRBbHBoYSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlZFZpc3VhbEluZm8tPmRlcHRoID09IGRlcHRoICYm
IGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRlbXBbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRl
bXAuZ2V0KClbaV07CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWZvcm1hdC0+ZGly
ZWN0LmFscGhhTWFzaykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wW2ldOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXAuZ2V0KClbaV07CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBpZiAoc2NvcGVkVmlz
dWFsSW5mby0+ZGVwdGggPT0gZGVwdGgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRlbXBbaV07
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXAuZ2V0KClbaV07CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBEaWQgbm90IGZpbmQgYW55IHZpc3VhbCBzdXBwb3J0aW5nIGFscGhhLCBzZWxlY3Qg
dGhlIGZpcnN0IGF2YWlsYWJsZSBjb25maWcuCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxYVmlz
dWFsSW5mbywgWDExRGVsZXRlcj4gc2NvcGVkVmlzdWFsSW5mbyB7IGdsWEdldFZpc3VhbEZyb21G
QkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgdGVtcFswXSkgfTsKKyAgICAgICAg
WFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gc2NvcGVkVmlzdWFsSW5mbyB7IGdsWEdldFZpc3VhbEZy
b21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgdGVtcC5nZXQoKVswXSkgfTsK
IAogICAgICAgICBpZiAoKG1fYXR0cmlidXRlcyAmIEdMUGxhdGZvcm1TdXJmYWNlOjpTdXBwb3J0
QWxwaGEpICYmIChzY29wZWRWaXN1YWxJbmZvLT5kZXB0aCAhPSAzMikpCiAgICAgICAgICAgICBt
X2F0dHJpYnV0ZXMgJj0gfkdMUGxhdGZvcm1TdXJmYWNlOjpTdXBwb3J0QWxwaGE7CiAKLSAgICAg
ICAgcmV0dXJuIHRlbXBbMF07CisgICAgICAgIHJldHVybiB0ZW1wLmdldCgpWzBdOwogICAgIH0K
IAogICAgIEdMWEZCQ29uZmlnIGZpbmRNYXRjaGluZ0NvbmZpZ1dpdGhWaXN1YWxJZChjb25zdCBp
bnQgYXR0cmlidXRlc1tdLCBpbnQgZGVwdGgsIFZpc3VhbElEIGlkKQogICAgIHsKICAgICAgICAg
aW50IG51bUF2YWlsYWJsZUNvbmZpZ3M7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHTFhGQkNv
bmZpZ1tdLCBYMTFEZWxldGVyPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0
aXZlRGlzcGxheSgpLCBEZWZhdWx0U2NyZWVuKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpKSwg
YXR0cmlidXRlcywgJm51bUF2YWlsYWJsZUNvbmZpZ3MpKTsKKyAgICAgICAgWFVuaXF1ZVB0cjxH
TFhGQkNvbmZpZz4gdGVtcChnbFhDaG9vc2VGQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3Bs
YXkoKSwgRGVmYXVsdFNjcmVlbihYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSksIGF0dHJpYnV0
ZXMsICZudW1BdmFpbGFibGVDb25maWdzKSk7CiAKICAgICAgICAgaWYgKCFudW1BdmFpbGFibGVD
b25maWdzIHx8ICF0ZW1wLmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1BdmFpbGFibGVDb25maWdzOyArK2kpIHsKLSAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gc2NvcGVkVmlzdWFs
SW5mbyB7IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXko
KSwgdGVtcFtpXSkgfTsKKyAgICAgICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHNjb3Bl
ZFZpc3VhbEluZm8geyBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVE
aXNwbGF5KCksIHRlbXAuZ2V0KClbaV0pIH07CiAgICAgICAgICAgICBpZiAoIXNjb3BlZFZpc3Vh
bEluZm8uZ2V0KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlm
IChpZCAmJiBzY29wZWRWaXN1YWxJbmZvLT5kZXB0aCA9PSBkZXB0aCAmJiBzY29wZWRWaXN1YWxJ
bmZvLT52aXN1YWxpZCA9PSBpZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGVtcFtpXTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdGVtcC5nZXQoKVtpXTsKICAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCmluZGV4IGJhNDkzYjAuLjJhZGUxODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9HTFhTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIFVTRShH
TFgpCiAKKyNpbmNsdWRlICJYVW5pcXVlLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIFBGTkdMWEJJTkRURVhJTUFHRUVYVFBST0MgcEdsWEJpbmRUZXhJbWFnZUVYVCA9IDA7CkBA
IC02Niw3ICs2OCw3IEBAIEdMWFRyYW5zcG9ydFN1cmZhY2U6OkdMWFRyYW5zcG9ydFN1cmZhY2Uo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgU3VyZmFjZUF0dHJpYnV0ZXMKIHsKICAgICBhdHRyaWJ1dGVz
IHw9IEdMUGxhdGZvcm1TdXJmYWNlOjpEb3VibGVCdWZmZXJlZDsKICAgICBtX2NvbmZpZ1NlbGVj
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxHTFhDb25maWdTZWxlY3Rvcj4oYXR0cmlidXRlcyk7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiB2aXNJbmZvKG1fY29u
ZmlnU2VsZWN0b3ItPnZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rvci0+c3VyZmFjZUNvbnRleHRD
b25maWcoKSkpOworICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHZpc0luZm8obV9jb25maWdT
ZWxlY3Rvci0+dmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT5zdXJmYWNlQ29udGV4dENvbmZp
ZygpKSk7CiAKICAgICBpZiAoIXZpc0luZm8uZ2V0KCkpIHsKICAgICAgICAgZGVzdHJveSgpOwpA
QCAtMTQyLDcgKzE0NCw3IEBAIHZvaWQgR0xYT2ZmU2NyZWVuU3VyZmFjZTo6aW5pdGlhbGl6ZShT
dXJmYWNlQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogewogICAgIG1fY29uZmlnU2VsZWN0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPEdMWENvbmZpZ1NlbGVjdG9yPihhdHRyaWJ1dGVzKTsKIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gdmlzdWFsSW5mbyhtX2NvbmZp
Z1NlbGVjdG9yLT52aXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnBpeG1hcENvbnRleHRDb25m
aWcoKSkpOworICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHZpc3VhbEluZm8obV9jb25maWdT
ZWxlY3Rvci0+dmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT5waXhtYXBDb250ZXh0Q29uZmln
KCkpKTsKICAgICBYMTFIZWxwZXI6OmNyZWF0ZVBpeG1hcCgmbV9waXhtYXAsICp2aXN1YWxJbmZv
LmdldCgpKTsKIAogICAgIGlmICghbV9waXhtYXApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFIZWxwZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAKaW5k
ZXggODAxMGI1Ny4uMzY4YmE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJYMTFIZWxwZXIuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxh
eVgxMS5oIgorI2luY2x1ZGUgIlhVbmlxdWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0yMjMsNyArMjI0LDcgQEAgdm9pZCBYMTFIZWxwZXI6OmNyZWF0ZU9mZlNjcmVlbldpbmRvdyh1
aW50MzJfdCogaGFuZGxlSWQsIGNvbnN0IEVHTGludCBpZCwgYm9vbAogICAgIG1lbXNldCgmdmlz
dWFsSW5mb1RlbXBsYXRlLCAwLCBzaXplb2YoWFZpc3VhbEluZm8pKTsKICAgICB2aXN1YWxJbmZv
VGVtcGxhdGUudmlzdWFsaWQgPSB2aXN1YWxJZDsKICAgICBpbnQgbWF0Y2hpbmdDb3VudCA9IDA7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiBtYXRjaGluZ1Zp
c3VhbHMoWEdldFZpc3VhbEluZm8obmF0aXZlRGlzcGxheSgpLCBWaXN1YWxJRE1hc2ssICZ2aXN1
YWxJbmZvVGVtcGxhdGUsICZtYXRjaGluZ0NvdW50KSk7CisgICAgWFVuaXF1ZTxYVmlzdWFsSW5m
bz4gbWF0Y2hpbmdWaXN1YWxzKFhHZXRWaXN1YWxJbmZvKG5hdGl2ZURpc3BsYXkoKSwgVmlzdWFs
SURNYXNrLCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCkpOwogICAgIFhWaXN1
YWxJbmZvKiBmb3VuZFZpc3VhbCA9IDA7CiAKICAgICBpZiAobWF0Y2hpbmdWaXN1YWxzKSB7CkBA
IC0yNjAsNyArMjYxLDcgQEAgdm9pZCBYMTFIZWxwZXI6OmNyZWF0ZVBpeG1hcChQaXhtYXAqIGhh
bmRsZUlkLCBjb25zdCBFR0xpbnQgaWQsIGJvb2wgaGFzQWxwaGEsIGMKICAgICBtZW1zZXQoJnZp
c3VhbEluZm9UZW1wbGF0ZSwgMCwgc2l6ZW9mKFhWaXN1YWxJbmZvKSk7CiAgICAgdmlzdWFsSW5m
b1RlbXBsYXRlLnZpc3VhbGlkID0gdmlzdWFsSWQ7CiAgICAgaW50IG1hdGNoaW5nQ291bnQgPSAw
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxYVmlzdWFsSW5mbywgWDExRGVsZXRlcj4gbWF0Y2hpbmdW
aXN1YWxzKFhHZXRWaXN1YWxJbmZvKG5hdGl2ZURpc3BsYXkoKSwgVmlzdWFsSURNYXNrLCAmdmlz
dWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCkpOworICAgIFhVbmlxdWU8WFZpc3VhbElu
Zm8+IG1hdGNoaW5nVmlzdWFscyhYR2V0VmlzdWFsSW5mbyhuYXRpdmVEaXNwbGF5KCksIFZpc3Vh
bElETWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpKTsKICAgICBYVmlz
dWFsSW5mbyogZm91bmRWaXN1YWwgPSAwOwogICAgIGludCByZXF1aXJlZERlcHRoID0gaGFzQWxw
aGEgPyAzMiA6IDI0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmgKaW5kZXggMTAzZjAwMS4uN2Y1ZTRjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L1gxMUhlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL2dseC9YMTFIZWxwZXIuaApAQCAtNDIsMTUgKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBYMTFEZWxldGVyIHsKLXB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB2b2lkIG9wZXJhdG9yKCkoVCogcmVzb3VyY2UpCi0gICAgewotICAgICAgICBpZiAocmVz
b3VyY2UpCi0gICAgICAgICAgICBYRnJlZShyZXNvdXJjZSk7Ci0gICAgfQotfTsKLQogY2xhc3Mg
WDExSGVscGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVQaXhtYXAoUGl4bWFw
KiwgY29uc3QgWFZpc3VhbEluZm8mLCBjb25zdCBJbnRTaXplJiA9IEludFNpemUoMSwgMSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZGYwN2YKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZS5jcHAKQEAg
LTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhVbmlxdWUuaCIKKworI2lmIFBMQVRGT1JN
KFgxMSkKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorCisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1
ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2UuaD4KKyNlbmRpZgorCisjaWYgVVNFKEdMWCkKKyNp
bmNsdWRlIDxHTC9nbHguaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBs
YXRlPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpDb2xvcm1hcD46OmRlbGV0ZVhS
ZXNvdXJjZShsb25nIHVuc2lnbmVkIHJlc291cmNlKQoreworICAgIGlmIChyZXNvdXJjZSkKKyAg
ICAgICAgWEZyZWVDb2xvcm1hcChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgcmVzb3VyY2UpOworfQorCisjaWYg
UExBVEZPUk0oR1RLKQordGVtcGxhdGUgPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNl
OjpEYW1hZ2U+OjpkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKK3sKKyAg
ICBpZiAocmVzb3VyY2UpCisgICAgICAgIFhEYW1hZ2VEZXN0cm95KGRvd25jYXN0PFBsYXRmb3Jt
RGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBy
ZXNvdXJjZSk7Cit9CisjZW5kaWYKKwordGVtcGxhdGUgPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8
WFJlc291cmNlOjpQaXhtYXA+OjpkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJj
ZSkKK3sKKyAgICBpZiAocmVzb3VyY2UpCisgICAgICAgIFhGcmVlUGl4bWFwKGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpLCByZXNvdXJjZSk7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgWFVuaXF1ZVJlc291cmNlPFhS
ZXNvdXJjZTo6V2luZG93Pjo6ZGVsZXRlWFJlc291cmNlKGxvbmcgdW5zaWduZWQgcmVzb3VyY2Up
Cit7CisgICAgaWYgKHJlc291cmNlKQorICAgICAgICBYRGVzdHJveVdpbmRvdyhkb3duY2FzdDxQ
bGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRp
dmUoKSwgcmVzb3VyY2UpOworfQorCisjaWYgVVNFKEdMWCkKK3RlbXBsYXRlPD4gdm9pZCBYVW5p
cXVlUmVzb3VyY2U8WFJlc291cmNlOjpHTFhQYnVmZmVyPjo6ZGVsZXRlWFJlc291cmNlKGxvbmcg
dW5zaWduZWQgcmVzb3VyY2UpCit7CisgICAgaWYgKHJlc291cmNlKQorICAgICAgICBnbFhEZXN0
cm95UGJ1ZmZlcihkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6
c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgcmVzb3VyY2UpOworfQorCit0ZW1wbGF0ZTw+IHZv
aWQgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGl4bWFwPjo6ZGVsZXRlWFJlc291cmNl
KGxvbmcgdW5zaWduZWQgcmVzb3VyY2UpCit7CisgICAgaWYgKHJlc291cmNlKQorICAgICAgICBn
bFhEZXN0cm95R0xYUGl4bWFwKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCByZXNvdXJjZSk7Cit9CisjZW5kaWYg
Ly8gVVNFKEdMWCkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUExBVEZP
Uk0oWDExKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDEx
L1hVbmlxdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI2YTI3ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlLmgK
QEAgLTAsMCArMSwxNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTAor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgWFVuaXF1ZV9oCisjZGVmaW5lIFhVbmlxdWVfaAorCisjaWYgUExBVEZPUk0o
WDExKQorI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheVgxMS5oIgorI2luY2x1ZGUgPFgxMS9YdXRp
bC5oPgorCisjaWYgVVNFKEdMWCkKK3R5cGVkZWYgc3RydWN0IF9fR0xYY29udGV4dFJlYyogR0xY
Q29udGV4dDsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBHTFhQYnVmZmVyOwordHlwZWRlZiB1bnNp
Z25lZCBsb25nIEdMWFBpeG1hcDsKKworZXh0ZXJuICJDIiB2b2lkIGdsWERlc3Ryb3lDb250ZXh0
KERpc3BsYXkqLCBHTFhDb250ZXh0KTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgWFB0ckRlbGV0ZXIgeworICAgIHZvaWQgb3Bl
cmF0b3IoKShUKiBwdHIpIGNvbnN0IHsgWEZyZWUocHRyKTsgfQorfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK3VzaW5nIFhVbmlxdWVQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VCwgWFB0ckRlbGV0
ZXI8VD4+OworCisjZGVmaW5lIERFRklORV9YUFRSX0RFTEVURVIodHlwZU5hbWUsIGRlbGV0ZXJG
dW5jKSBcCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgWFB0ckRlbGV0ZXI8dHlwZU5hbWU+IFwKKyAg
ICB7IFwKKyAgICAgICAgdm9pZCBvcGVyYXRvcigpICh0eXBlTmFtZSogcHRyKSBjb25zdCBcCisg
ICAgICAgIHsgXAorICAgICAgICAgICAgaWYgKHB0cikgXAorICAgICAgICAgICAgICAgIGRlbGV0
ZXJGdW5jKHB0cik7IFwKKyAgICAgICAgfSBcCisgICAgfTsKKworI2RlZmluZSBERUZJTkVfWFBU
Ul9ERUxFVEVSX1dJVEhfRElTUExBWSh0eXBlTmFtZSwgZGVsZXRlckZ1bmMpIFwKKyAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBYUHRyRGVsZXRlcjx0eXBlTmFtZT4gXAorICAgIHsgXAorICAgICAgICB2
b2lkIG9wZXJhdG9yKCkgKHR5cGVOYW1lKiBwdHIpIGNvbnN0IFwKKyAgICAgICAgeyBcCisgICAg
ICAgICAgICBpZiAocHRyKSBcCisgICAgICAgICAgICAgICAgZGVsZXRlckZ1bmMoZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0
aXZlKCksIHB0cik7IFwKKyAgICAgICAgfSBcCisgICAgfTsKKworCitERUZJTkVfWFBUUl9ERUxF
VEVSKFhJbWFnZSwgWERlc3Ryb3lJbWFnZSkKK0RFRklORV9YUFRSX0RFTEVURVJfV0lUSF9ESVNQ
TEFZKF9YR0MsIFhGcmVlR0MpCisKKyNpZiBVU0UoR0xYKQorREVGSU5FX1hQVFJfREVMRVRFUl9X
SVRIX0RJU1BMQVkoX19HTFhjb250ZXh0UmVjLCBnbFhEZXN0cm95Q29udGV4dCkKKyNlbmRpZgor
CisjdW5kZWYgREVGSU5FX1hQVFJfREVMRVRFUgorI3VuZGVmIERFRklORV9YUFRSX0RFTEVURVJf
V0lUSF9ESVNQTEFZCisKK2VudW0gY2xhc3MgWFJlc291cmNlIHsKKyAgICBDb2xvcm1hcCwKKyNp
ZiBQTEFURk9STShHVEspCisgICAgRGFtYWdlLAorI2VuZGlmCisgICAgUGl4bWFwLAorICAgIFdp
bmRvdywKKyNpZiBVU0UoR0xYKQorICAgIEdMWFBidWZmZXIsCisgICAgR0xYUGl4bWFwLAorI2Vu
ZGlmCit9OworCit0ZW1wbGF0ZSA8WFJlc291cmNlIFQ+IGNsYXNzIFhVbmlxdWVSZXNvdXJjZSB7
CitwdWJsaWM6CisgICAgWFVuaXF1ZVJlc291cmNlKCkKKyAgICAgICAgOiBtX3Jlc291cmNlKDAp
CisgICAgeworICAgIH0KKworICAgIFhVbmlxdWVSZXNvdXJjZShsb25nIHVuc2lnbmVkIHJlc291
cmNlKQorICAgICAgICA6IG1fcmVzb3VyY2UocmVzb3VyY2UpCisgICAgeworICAgIH0KKworICAg
IFhVbmlxdWVSZXNvdXJjZShYVW5pcXVlUmVzb3VyY2UmJiB1bmlxdWVSZXNvdXJjZSkKKyAgICAg
ICAgOiBtX3Jlc291cmNlKHVuaXF1ZVJlc291cmNlLnJlbGVhc2UoKSkKKyAgICB7CisgICAgfQor
CisgICAgWFVuaXF1ZVJlc291cmNlJiBvcGVyYXRvcj0oWFVuaXF1ZVJlc291cmNlJiYgdW5pcXVl
UmVzb3VyY2UpCisgICAgeworICAgICAgICByZXNldCh1bmlxdWVSZXNvdXJjZS5yZWxlYXNlKCkp
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgflhVbmlxdWVSZXNvdXJjZSgp
CisgICAgeworICAgICAgICByZXNldCgpOworICAgIH0KKworICAgIGxvbmcgdW5zaWduZWQgZ2V0
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZTsgfQorICAgIGxvbmcgdW5zaWduZWQgcmVsZWFz
ZSgpIHsgbG9uZyB1bnNpZ25lZCByZXNvdXJjZSA9IG1fcmVzb3VyY2U7IG1fcmVzb3VyY2UgPSAw
OyByZXR1cm4gcmVzb3VyY2U7IH0KKworICAgIHZvaWQgcmVzZXQobG9uZyB1bnNpZ25lZCByZXNv
dXJjZSA9IDApCisgICAgeworICAgICAgICBzdGQ6OnN3YXAobV9yZXNvdXJjZSwgcmVzb3VyY2Up
OworICAgICAgICBkZWxldGVYUmVzb3VyY2UocmVzb3VyY2UpOworICAgIH0KKworICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcmVzb3VyY2U7IH0KKworICAgIC8vIFRoaXMg
Y29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1
dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KKyAgICB0eXBlZGVmIHZvaWQqIChYVW5pcXVl
UmVzb3VyY2U6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmll
ZEJvb2xUeXBlKigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9yZXNvdXJjZSA/IHJl
aW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZpZWRCb29sVHlwZSo+KDEpIDogMDsKKyAgICB9CisKKyAg
ICBYVW5pcXVlUmVzb3VyY2UoY29uc3QgWFVuaXF1ZVJlc291cmNlJikgPSBkZWxldGU7CisgICAg
WFVuaXF1ZVJlc291cmNlJiBvcGVyYXRvcj0oY29uc3QgWFVuaXF1ZVJlc291cmNlJikgPSBkZWxl
dGU7Citwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGRlbGV0ZVhSZXNvdXJjZShsb25nIHVuc2ln
bmVkIHJlc291cmNlKTsKKworICAgIGxvbmcgdW5zaWduZWQgbV9yZXNvdXJjZTsKK307CisKK3R5
cGVkZWYgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6Q29sb3JtYXA+IFhVbmlxdWVDb2xvcm1h
cDsKKyNpZiBQTEFURk9STShHVEspCit0eXBlZGVmIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6
OkRhbWFnZT4gWFVuaXF1ZURhbWFnZTsKKyNlbmRpZgordHlwZWRlZiBYVW5pcXVlUmVzb3VyY2U8
WFJlc291cmNlOjpQaXhtYXA+IFhVbmlxdWVQaXhtYXA7Cit0eXBlZGVmIFhVbmlxdWVSZXNvdXJj
ZTxYUmVzb3VyY2U6OldpbmRvdz4gWFVuaXF1ZVdpbmRvdzsKKyNpZiBVU0UoR0xYKQordHlwZWRl
ZiBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpHTFhQYnVmZmVyPiBYVW5pcXVlR0xYUGJ1ZmZl
cjsKK3R5cGVkZWYgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGl4bWFwPiBYVW5pcXVl
R0xYUGl4bWFwOworI2VuZGlmCisKKy8vIEdpdmUgYSBuYW1lIGFsc28gdG8gdGhlc2UgWFVuaXF1
ZVB0ciB0byBhdm9pZCBoYXZpbmcgdG8gdXNlIHRoZSBpbnRlcm5hbCBzdHJ1Y3QgbmFtZXMgKF9Y
R0MsIF9fR0xYY29udGV4dFJlYywgLi4uKS4KK3R5cGVkZWYgWFVuaXF1ZVB0cjxfWEdDPiBYVW5p
cXVlR0M7CisjaWYgVVNFKEdMWCkKK3R5cGVkZWYgWFVuaXF1ZVB0cjxfX0dMWGNvbnRleHRSZWM+
IFhVbmlxdWVHTFhDb250ZXh0OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKKworI2VuZGlmIC8vIFhVbmlxdWVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGI3MTkzNzMuLjU5OTFhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNS0w
NS0wMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW1gxMV0gQWRkIFhVbmlxdWVQdHIgYW5kIFhVbmlxdWVSZXNvdXJjZSB0byBhdXRvbWF0aWNh
bGx5IGZyZWUgWCByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NDUyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8gZnJlZSBY
IHJlc291cmNlcy4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBBZGQgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExIGRpcgorICAgICAgICB0byB0aGUgaW5jbHVkZSBk
aXIgbGlzdC4KKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICog
VUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
QmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5kKTogRG8gbm90IHBhc3MgdGhlIGRpc3BsYXkgdG8K
KyAgICAgICAgdGhlIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMSBjb25zdHJ1Y3Rvci4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3c6On5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OlJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUpOgorICAgICAgICAoV2ViS2l0OjpSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdzo6Y2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6c3VyZmFjZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oOgorICAgICAg
ICAoV2ViS2l0OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6d2luZG93SUQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6
ZVdpbmRvd2xlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1E
ZXN0cm95KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0
cnlEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Q
YWludCk6CisKIDIwMTUtMDUtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBOZXR3b3JrIENhY2hlOiBJbXBsZW1lbnQgU2hhcmVh
YmxlUmVzb3VyY2UgZm9yIFNvdXAgYW5kIGVuYWJsZSBpdCBmb3IgR1RLIHBsYXRmb3JtCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDVhMDJlYTIuLmVmZWZlYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0yMjYsNiArMjI2LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlIgorICAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9ncmFwaGljcy94MTEiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
L25ldHdvcmsvc291cCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC9lbmNoYW50
IgogICAgICIke1dFQktJVDJfRElSfS9OZXR3b3JrUHJvY2Vzcy9lZmwiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
R1RLLmNtYWtlCmluZGV4IGQyNzQwYjYuLmU0ODY4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNt
YWtlCkBAIC00NTgsNiArNDU4LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2d0ayIKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFw
aGljcy94MTEiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvc291cCIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC9lbmNoYW50IgogICAgICIke1dFQktJVDJf
RElSfS9EYXRhYmFzZVByb2Nlc3MvdW5peCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IGJkODBiMzcuLjJmYjMwYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9y
ZUNhaXJvLmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2luZ1N0b3Jl
QmFja2VuZENhaXJvPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQoKQogICAgICAgICBHZGtW
aXN1YWwqIHZpc3VhbCA9IGd0a193aWRnZXRfZ2V0X3Zpc3VhbChtX3dlYlBhZ2VQcm94eS52aWV3
V2lkZ2V0KCkpOwogICAgICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGdka192aXN1YWxfZ2V0X3Nj
cmVlbih2aXN1YWwpOwogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDEx
PihzaGFyZWREaXNwbGF5KS5uYXRpdmUoKSA9PSBHREtfU0NSRUVOX1hESVNQTEFZKHNjcmVlbikp
OwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm9YMTE+KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oc2hhcmVkRGlzcGxheSkubmF0aXZl
KCksIEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikpLAor
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9Y
MTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikpLAog
ICAgICAgICAgICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIGdka192aXN1YWxfZ2V0X2Rl
cHRoKHZpc3VhbCksIG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3cuY3BwCmluZGV4IDQ0NGY4NjQuLjNmYmEzMjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBVU0UoUkVESVJFQ1RFRF9YQ09N
UE9TSVRFX1dJTkRPVykKIAorI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjaW5jbHVkZSA8WDExL2V4
dGVuc2lvbnMvWGNvbXBvc2l0ZS5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hkYW1hZ2Uu
aD4KICNpbmNsdWRlIDxjYWlyby14bGliLmg+CkBAIC0xMzUsMjEgKzEzNiwxOCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IFJlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93OjpjcmVhdGUoRwogCiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3coR2RrV2luZG93KiBwYXJlbnRXaW5kb3csIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBkYW1hZ2VOb3RpZnkpCiAgICAgOiBtX2Rpc3BsYXkoR0RLX0RJU1BMQVlfWERJU1BM
QVkoZ2RrX3dpbmRvd19nZXRfZGlzcGxheShwYXJlbnRXaW5kb3cpKSkKLSAgICAsIG1fd2luZG93
KDApCi0gICAgLCBtX3BhcmVudFdpbmRvdygwKQotICAgICwgbV9waXhtYXAoMCkKLSAgICAsIG1f
ZGFtYWdlKDApCiAgICAgLCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemUoZmFsc2UpCiB7Cisg
ICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpID09IG1fZGlzcGxheSk7CiAgICAgU2NyZWVuKiBzY3Jl
ZW4gPSBEZWZhdWx0U2NyZWVuT2ZEaXNwbGF5KG1fZGlzcGxheSk7CiAKICAgICBHZGtWaXN1YWwq
IHZpc3VhbCA9IGdka193aW5kb3dfZ2V0X3Zpc3VhbChwYXJlbnRXaW5kb3cpOwotICAgIENvbG9y
bWFwIGNvbG9ybWFwID0gWENyZWF0ZUNvbG9ybWFwKG1fZGlzcGxheSwgUm9vdFdpbmRvd09mU2Ny
ZWVuKHNjcmVlbiksIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBBbGxvY05vbmUpOworICAg
IFhVbmlxdWVDb2xvcm1hcCBjb2xvcm1hcChYQ3JlYXRlQ29sb3JtYXAobV9kaXNwbGF5LCBSb290
V2luZG93T2ZTY3JlZW4oc2NyZWVuKSwgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIEFsbG9j
Tm9uZSkpOwogCiAgICAgLy8gVGhpcyBpcyBiYXNlZCBvbiBjb2RlIGZyb20gQ2hyb21pdW06IHNy
Yy9jb250ZW50L2NvbW1vbi9ncHUvaW1hZ2VfdHJhbnNwb3J0X3N1cmZhY2VfbGludXguY2MKICAg
ICBYU2V0V2luZG93QXR0cmlidXRlcyB3aW5kb3dBdHRyaWJ1dGVzOwogICAgIHdpbmRvd0F0dHJp
YnV0ZXMub3ZlcnJpZGVfcmVkaXJlY3QgPSBUcnVlOwotICAgIHdpbmRvd0F0dHJpYnV0ZXMuY29s
b3JtYXAgPSBjb2xvcm1hcDsKKyAgICB3aW5kb3dBdHRyaWJ1dGVzLmNvbG9ybWFwID0gY29sb3Jt
YXAuZ2V0KCk7CiAKICAgICAvLyBDV0JvcmRlclBpeGVsIG11c3QgYmUgcHJlc2VudCB3aGVuIHRo
ZSBkZXB0aCBkb2Vzbid0IG1hdGNoIHRoZSBwYXJlbnQncyBvbmUuCiAgICAgLy8gU2VlIGh0dHA6
Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvdHJlZS9kaXgvd2luZG93LmM/aWQ9
eG9yZy1zZXJ2ZXItMS4xNi4wI243MDMuCkBAIC0xNjQsMTMgKzE2MiwxMyBAQCBSZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coR2RrV2luZG93KiBw
YXJlbnRXaW5kb3csCiAgICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLAogICAgICAg
ICBDV092ZXJyaWRlUmVkaXJlY3QgfCBDV0NvbG9ybWFwIHwgQ1dCb3JkZXJQaXhlbCwKICAgICAg
ICAgJndpbmRvd0F0dHJpYnV0ZXMpOwotICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3BhcmVu
dFdpbmRvdyk7CisgICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fcGFyZW50V2luZG93LmdldCgp
KTsKIAogICAgIHdpbmRvd0F0dHJpYnV0ZXMuZXZlbnRfbWFzayA9IFN0cnVjdHVyZU5vdGlmeU1h
c2s7CiAgICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IEZhbHNlOwogICAg
IC8vIENyZWF0ZSB0aGUgd2luZG93IG9mIGF0IGxhc3QgMXgxIHNpbmNlIFggZG9lc24ndCBhbGxv
dyB0byBjcmVhdGUgZW1wdHkgd2luZG93cy4KICAgICBtX3dpbmRvdyA9IFhDcmVhdGVXaW5kb3co
bV9kaXNwbGF5LAotICAgICAgICBtX3BhcmVudFdpbmRvdywKKyAgICAgICAgbV9wYXJlbnRXaW5k
b3cuZ2V0KCksCiAgICAgICAgIDAsIDAsCiAgICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS53aWR0
aCgpKSwKICAgICAgICAgc3RkOjptYXgoMSwgbV9zaXplLmhlaWdodCgpKSwKQEAgLTE4MCwyMSAr
MTc4LDE5IEBAIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdyhHZGtXaW5kb3cqIHBhcmVudFdpbmRvdywKICAgICAgICAgQ29weUZyb21QYXJlbnQs
CiAgICAgICAgIENXRXZlbnRNYXNrLAogICAgICAgICAmd2luZG93QXR0cmlidXRlcyk7Ci0gICAg
WE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93KTsKKyAgICBYTWFwV2luZG93KG1fZGlzcGxh
eSwgbV93aW5kb3cuZ2V0KCkpOwogCi0gICAgWEZyZWVDb2xvcm1hcChtX2Rpc3BsYXksIGNvbG9y
bWFwKTsKLQotICAgIHhEYW1hZ2VOb3RpZmllcigpLmFkZChtX3dpbmRvdywgV1RGOjptb3ZlKGRh
bWFnZU5vdGlmeSkpOworICAgIHhEYW1hZ2VOb3RpZmllcigpLmFkZChtX3dpbmRvdy5nZXQoKSwg
V1RGOjptb3ZlKGRhbWFnZU5vdGlmeSkpOwogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgWEV2
ZW50IGV2ZW50OwotICAgICAgICBYV2luZG93RXZlbnQobV9kaXNwbGF5LCBtX3dpbmRvdywgU3Ry
dWN0dXJlTm90aWZ5TWFzaywgJmV2ZW50KTsKLSAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT0gTWFw
Tm90aWZ5ICYmIGV2ZW50LnhtYXAud2luZG93ID09IG1fd2luZG93KQorICAgICAgICBYV2luZG93
RXZlbnQobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgU3RydWN0dXJlTm90aWZ5TWFzaywgJmV2
ZW50KTsKKyAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT0gTWFwTm90aWZ5ICYmIGV2ZW50LnhtYXAu
d2luZG93ID09IG1fd2luZG93LmdldCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IFhTZWxlY3RJbnB1dChtX2Rpc3BsYXksIG1fd2luZG93LCBOb0V2ZW50TWFzayk7Ci0gICAgWENv
bXBvc2l0ZVJlZGlyZWN0V2luZG93KG1fZGlzcGxheSwgbV93aW5kb3csIENvbXBvc2l0ZVJlZGly
ZWN0TWFudWFsKTsKLSAgICBtX2RhbWFnZSA9IFhEYW1hZ2VDcmVhdGUobV9kaXNwbGF5LCBtX3dp
bmRvdywgWERhbWFnZVJlcG9ydE5vbkVtcHR5KTsKKyAgICBYU2VsZWN0SW5wdXQobV9kaXNwbGF5
LCBtX3dpbmRvdy5nZXQoKSwgTm9FdmVudE1hc2spOworICAgIFhDb21wb3NpdGVSZWRpcmVjdFdp
bmRvdyhtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBDb21wb3NpdGVSZWRpcmVjdE1hbnVhbCk7
CisgICAgbV9kYW1hZ2UgPSBYRGFtYWdlQ3JlYXRlKG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCks
IFhEYW1hZ2VSZXBvcnROb25FbXB0eSk7CiB9CiAKIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
Ojp+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coKQpAQCAtMjA0LDEyICsyMDAsMTIgQEAgUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6On5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygpCiAg
ICAgQVNTRVJUKG1fd2luZG93KTsKICAgICBBU1NFUlQobV9wYXJlbnRXaW5kb3cpOwogCi0gICAg
eERhbWFnZU5vdGlmaWVyKCkucmVtb3ZlKG1fd2luZG93KTsKKyAgICB4RGFtYWdlTm90aWZpZXIo
KS5yZW1vdmUobV93aW5kb3cuZ2V0KCkpOwogCi0gICAgWERhbWFnZURlc3Ryb3kobV9kaXNwbGF5
LCBtX2RhbWFnZSk7Ci0gICAgWERlc3Ryb3lXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdyk7Ci0g
ICAgWERlc3Ryb3lXaW5kb3cobV9kaXNwbGF5LCBtX3BhcmVudFdpbmRvdyk7Ci0gICAgY2xlYW51
cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UoKTsKKyAgICAvLyBFeHBsaWNpdCByZXNldCB0aGVzZSBi
ZWNhdXNlIHdlIG5lZWQgdG8gZW5zdXJlIGl0IGhhcHBlbnMgaW4gdGhpcyBvcmRlci4KKyAgICBt
X2RhbWFnZS5yZXNldCgpOworICAgIG1fd2luZG93LnJlc2V0KCk7CisgICAgbV9wYXJlbnRXaW5k
b3cucmVzZXQoKTsKIH0KIAogdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVzaXpl
KGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0yMTgsNyArMjE0LDcgQEAgdm9pZCBSZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdzo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFJlc2l6ZSB0aGUgd2luZG93IHRvIGF0IGxhc3QgMXgxIHNpbmNlIFgg
ZG9lc24ndCBhbGxvdyB0byBjcmVhdGUgZW1wdHkgd2luZG93cy4KLSAgICBYUmVzaXplV2luZG93
KG1fZGlzcGxheSwgbV93aW5kb3csIHN0ZDo6bWF4KDEsIHNpemUud2lkdGgoKSksIHN0ZDo6bWF4
KDEsIHNpemUuaGVpZ2h0KCkpKTsKKyAgICBYUmVzaXplV2luZG93KG1fZGlzcGxheSwgbV93aW5k
b3cuZ2V0KCksIHN0ZDo6bWF4KDEsIHNpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIHNpemUuaGVp
Z2h0KCkpKTsKICAgICBYRmx1c2gobV9kaXNwbGF5KTsKIAogICAgIG1fc2l6ZSA9IHNpemU7CkBA
IC0yMzIsOSArMjI4LDggQEAgdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y2xlYW51
cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UoKQogICAgIGlmICghbV9waXhtYXApCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbV9waXhtYXApOwotICAgIG1fcGl4
bWFwID0gMDsKICAgICBtX3N1cmZhY2UgPSBudWxscHRyOworICAgIG1fcGl4bWFwLnJlc2V0KCk7
CiB9CiAKIGNhaXJvX3N1cmZhY2VfdCogUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnN1cmZh
Y2UoKQpAQCAtMjQ3LDIwICsyNDIsMTkgQEAgY2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdzo6c3VyZmFjZSgpCiAKICAgICBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNp
emUgPSBmYWxzZTsKIAotICAgIFBpeG1hcCBuZXdQaXhtYXAgPSBYQ29tcG9zaXRlTmFtZVdpbmRv
d1BpeG1hcChtX2Rpc3BsYXksIG1fd2luZG93KTsKKyAgICBYVW5pcXVlUGl4bWFwIG5ld1BpeG1h
cChYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpKSk7
CiAgICAgaWYgKCFuZXdQaXhtYXApIHsKICAgICAgICAgY2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1
cmZhY2UoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgWFdpbmRvd0F0
dHJpYnV0ZXMgd2luZG93QXR0cmlidXRlczsKLSAgICBpZiAoIVhHZXRXaW5kb3dBdHRyaWJ1dGVz
KG1fZGlzcGxheSwgbV93aW5kb3csICZ3aW5kb3dBdHRyaWJ1dGVzKSkgeworICAgIGlmICghWEdl
dFdpbmRvd0F0dHJpYnV0ZXMobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgJndpbmRvd0F0dHJp
YnV0ZXMpKSB7CiAgICAgICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7Ci0gICAg
ICAgIFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbmV3UGl4bWFwKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmV3U3VyZmFjZSA9
IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9kaXNwbGF5LCBuZXdQaXhtYXAs
IHdpbmRvd0F0dHJpYnV0ZXMudmlzdWFsLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgp
KSk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmV3U3VyZmFjZSA9IGFkb3B0UmVmKGNh
aXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9kaXNwbGF5LCBuZXdQaXhtYXAuZ2V0KCksIHdpbmRv
d0F0dHJpYnV0ZXMudmlzdWFsLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7CiAK
ICAgICAvLyBOdmlkaWEgZHJpdmVycyBzZWVtIHRvIHByZXBhcmUgdGhlaXIgcmVkaXJlY3RlZCB3
aW5kb3cgcGl4bWFwIGFzeW5jaHJvbm91c2x5LCBzbyBmb3IgYSBmZXcgZnJhY3Rpb25zCiAgICAg
Ly8gb2YgYSBzZWNvbmQgYWZ0ZXIgZWFjaCByZXNpemUsIHdoaWxlIGRvaW5nIGNvbnRpbnVvdXMg
cmVzaXppbmcgKHdoaWNoIGNvbnN0YW50bHkgZGVzdHJveXMgYW5kIGNyZWF0ZXMKQEAgLTI3NSw3
ICsyNjksNyBAQCBjYWlyb19zdXJmYWNlX3QqIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojpz
dXJmYWNlKCkKICAgICB9CiAKICAgICBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgpOwot
ICAgIG1fcGl4bWFwID0gbmV3UGl4bWFwOworICAgIG1fcGl4bWFwID0gV1RGOjptb3ZlKG5ld1Bp
eG1hcCk7CiAgICAgbV9zdXJmYWNlID0gbmV3U3VyZmFjZTsKICAgICByZXR1cm4gbV9zdXJmYWNl
LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9S
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCmluZGV4IDNhYTRmZjUuLjU0ZjNmN2Q0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdy5oCkBAIC0zMSwxMSArMzEsMTIgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUv
SW50U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRlIDxY
MTEvWGxpYi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvWFVuaXF1ZS5oPgogI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+CiAKIHR5cGVkZWYgc3RydWN0IF9HZGtXaW5kb3cgR2RrV2luZG93OwogdHlwZWRlZiB1
bnNpZ25lZCBsb25nIERhbWFnZTsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBXaW5kb3c7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCkBAIC00NCw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBjcmVhdGUoR2RrV2lu
ZG93Kiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRhbWFnZU5vdGlmeSk7CiAgICAgflJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93KCk7CiAKLSAgICBXaW5kb3cgd2luZG93SUQoKSBjb25zdCB7IHJl
dHVybiBtX3dpbmRvdzsgfQorICAgIFdpbmRvdyB3aW5kb3dJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2luZG93LmdldCgpOyB9CiAgICAgdm9pZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
OwogICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSgpOwogCkBAIC01NCwxMCArNTUsMTAgQEAg
cHJpdmF0ZToKIAogICAgIERpc3BsYXkqIG1fZGlzcGxheTsKICAgICBXZWJDb3JlOjpJbnRTaXpl
IG1fc2l6ZTsKLSAgICBXaW5kb3cgbV93aW5kb3c7Ci0gICAgV2luZG93IG1fcGFyZW50V2luZG93
OwotICAgIFBpeG1hcCBtX3BpeG1hcDsKLSAgICBEYW1hZ2UgbV9kYW1hZ2U7CisgICAgV2ViQ29y
ZTo6WFVuaXF1ZVdpbmRvdyBtX3dpbmRvdzsKKyAgICBXZWJDb3JlOjpYVW5pcXVlV2luZG93IG1f
cGFyZW50V2luZG93OworICAgIFdlYkNvcmU6OlhVbmlxdWVQaXhtYXAgbV9waXhtYXA7CisgICAg
V2ViQ29yZTo6WFVuaXF1ZURhbWFnZSBtX2RhbWFnZTsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBtX3N1cmZhY2U7CiAgICAgYm9vbCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCBiM2M4M2JkLi41ZDIyNjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaApAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlICJXZWJIaXRUZXN0UmVz
dWx0LmgiCiAjZW5kaWYKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorI2luY2x1ZGUg
PFdlYkNvcmUvWFVuaXF1ZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IE1hY2hTZW5kUmlnaHQ7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwpAQCAtMzg3LDcgKzM5MSw3IEBA
IHByaXZhdGU6CiAgICAgTlBfQ0dDb250ZXh0IG1fbnBDR0NvbnRleHQ7CiAjZW5kaWYKICNlbGlm
IFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQotICAgIFBpeG1hcCBtX2RyYXdhYmxlOworICAgIFdl
YkNvcmU6OlhVbmlxdWVQaXhtYXAgbV9kcmF3YWJsZTsKICAgICBEaXNwbGF5KiBtX3BsdWdpbkRp
c3BsYXk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEd0a1dpZGdldCogbV9wbGF0Zm9ybVBsdWdp
bldpZGdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKaW5kZXggMzdm
NDc5My4uMjM3MWYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtRGlzcGxheVgxMS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvWFVuaXF1ZS5oPgogCiAjaWYg
UExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPGd0ay9ndGsuaD4KQEAgLTE3NSwxMiArMTc2LDEwIEBA
IGJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUG9zdEluaXRpYWxpemVXaW5kb3dsZXNzKCkK
ICAgICB2aXN1YWxUZW1wbGF0ZS5kZXB0aCA9IGRlcHRoOwogICAgIHZpc3VhbFRlbXBsYXRlLmNf
Y2xhc3MgPSBUcnVlQ29sb3I7CiAgICAgaW50IG51bU1hdGNoaW5nOwotICAgIFhWaXN1YWxJbmZv
KiB2aXN1YWxJbmZvID0gWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsU2NyZWVuTWFzayB8
IFZpc3VhbERlcHRoTWFzayB8IFZpc3VhbENsYXNzTWFzaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZ2aXN1YWxUZW1wbGF0ZSwgJm51bU1hdGNoaW5nKTsK
KyAgICBYVW5pcXVlUHRyPFhWaXN1YWxJbmZvPiB2aXN1YWxJbmZvKFhHZXRWaXN1YWxJbmZvKGRp
c3BsYXksIFZpc3VhbFNjcmVlbk1hc2sgfCBWaXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01h
c2ssICZ2aXN1YWxUZW1wbGF0ZSwgJm51bU1hdGNoaW5nKSk7CiAgICAgQVNTRVJUKHZpc3VhbElu
Zm8pOwotICAgIFZpc3VhbCogdmlzdWFsID0gdmlzdWFsSW5mb1swXS52aXN1YWw7CisgICAgVmlz
dWFsKiB2aXN1YWwgPSB2aXN1YWxJbmZvLmdldCgpWzBdLnZpc3VhbDsKICAgICBBU1NFUlQodmlz
dWFsKTsKLSAgICBYRnJlZSh2aXN1YWxJbmZvKTsKIAogICAgIGNhbGxiYWNrU3RydWN0LT52aXN1
YWwgPSB2aXN1YWw7CiAgICAgY2FsbGJhY2tTdHJ1Y3QtPmNvbG9ybWFwID0gWENyZWF0ZUNvbG9y
bWFwKGRpc3BsYXksIHJvb3RXaW5kb3dJRCgpLCB2aXN1YWwsIEFsbG9jTm9uZSk7CkBAIC0yMzIs
MTAgKzIzMSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtRGVzdHJveSgpCiAgICAg
WEZyZWVDb2xvcm1hcChob3N0RGlzcGxheSwgY2FsbGJhY2tTdHJ1Y3QtPmNvbG9ybWFwKTsKICAg
ICBkZWxldGUgY2FsbGJhY2tTdHJ1Y3Q7CiAKLSAgICBpZiAobV9kcmF3YWJsZSkgewotICAgICAg
ICBYRnJlZVBpeG1hcChob3N0RGlzcGxheSwgbV9kcmF3YWJsZSk7Ci0gICAgICAgIG1fZHJhd2Fi
bGUgPSAwOwotICAgIH0KKyAgICBtX2RyYXdhYmxlLnJlc2V0KCk7CiAKICNpZiBQTEFURk9STShH
VEspCiAgICAgaWYgKG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQpIHsKQEAgLTI2MiwxOCArMjU4LDEy
IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRGlzcGxheSogZGlzcGxheSA9IHgxMUhvc3REaXNw
bGF5KCk7Ci0gICAgaWYgKG1fZHJhd2FibGUpCi0gICAgICAgIFhGcmVlUGl4bWFwKGRpc3BsYXks
IG1fZHJhd2FibGUpOwotCi0gICAgaWYgKG1fcGx1Z2luU2l6ZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgbV9kcmF3YWJsZSA9IDA7CisgICAgbV9kcmF3YWJsZS5yZXNldCgpOworICAgIGlmIChtX3Bs
dWdpblNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9kcmF3
YWJsZSA9IFhDcmVhdGVQaXhtYXAoZGlzcGxheSwgcm9vdFdpbmRvd0lEKCksIG1fcGx1Z2luU2l6
ZS53aWR0aCgpLCBtX3BsdWdpblNpemUuaGVpZ2h0KCksIGRpc3BsYXlEZXB0aCgpKTsKIAotICAg
IFhTeW5jKGRpc3BsYXksIGZhbHNlKTsgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHNlcnZlciBrbm93
cyBhYm91dCB0aGUgRHJhd2FibGUuCisgICAgbV9kcmF3YWJsZSA9IFhDcmVhdGVQaXhtYXAoeDEx
SG9zdERpc3BsYXkoKSwgcm9vdFdpbmRvd0lEKCksIG1fcGx1Z2luU2l6ZS53aWR0aCgpLCBtX3Bs
dWdpblNpemUuaGVpZ2h0KCksIGRpc3BsYXlEZXB0aCgpKTsKKyAgICBYU3luYyh4MTFIb3N0RGlz
cGxheSgpLCBmYWxzZSk7IC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzZXJ2ZXIga25vd3MgYWJvdXQg
dGhlIERyYXdhYmxlLgogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVZpc2liaWxp
dHlEaWRDaGFuZ2UoKQpAQCAtMzA3LDcgKzI5Nyw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBs
YXRmb3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0
CiAgICAgWEdyYXBoaWNzRXhwb3NlRXZlbnQmIGV4cG9zZUV2ZW50ID0geGV2ZW50LnhncmFwaGlj
c2V4cG9zZTsKICAgICBleHBvc2VFdmVudC50eXBlID0gR3JhcGhpY3NFeHBvc2U7CiAgICAgZXhw
b3NlRXZlbnQuZGlzcGxheSA9IHgxMUhvc3REaXNwbGF5KCk7Ci0gICAgZXhwb3NlRXZlbnQuZHJh
d2FibGUgPSBtX2RyYXdhYmxlOworICAgIGV4cG9zZUV2ZW50LmRyYXdhYmxlID0gbV9kcmF3YWJs
ZS5nZXQoKTsKIAogICAgIEludFJlY3QgZXhwb3NlZFJlY3QoZGlydHlSZWN0KTsKICAgICBleHBv
c2VFdmVudC54ID0gZXhwb3NlZFJlY3QueCgpOwpAQCAtMzI0LDExICszMTQsOCBAQCB2b2lkIE5l
dHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGlydAogICAgICAgICBYU3luYyhtX3BsdWdpbkRpc3BsYXksIGZhbHNlKTsK
IAogI2lmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgVVNFKENBSVJPKSkKLSAg
ICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWly
b194bGliX3N1cmZhY2VfY3JlYXRlKG1fcGx1Z2luRGlzcGxheSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZHJhd2FibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxO
UFNldFdpbmRvd0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRvdy53c19pbmZvKS0+dmlzdWFsLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9wbHVnaW5TaXplLndpZHRoKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3BsdWdpblNpemUuaGVpZ2h0KCkpKTsKKyAgICBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBkcmF3YWJsZVN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2Vf
Y3JlYXRlKG1fcGx1Z2luRGlzcGxheSwgbV9kcmF3YWJsZS5nZXQoKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5kb3cud3NfaW5mbyktPnZp
c3VhbCwgbV9wbHVnaW5TaXplLndpZHRoKCksIG1fcGx1Z2luU2l6ZS5oZWlnaHQoKSkpOwogICAg
IGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fp
cm9fc2F2ZShjcik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252709</attachid>
            <date>2015-05-08 02:34:56 -0700</date>
            <delta_ts>2015-05-10 02:56:54 -0700</delta_ts>
            <desc>Addressed review comments</desc>
            <filename>wk-xunique.diff</filename>
            <type>text/plain</type>
            <size>57721</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5MmI3ZTAzLi42YTY3OTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQg
QEAKKzIwMTUtMDUtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtYMTFdIEFkZCBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8g
YXV0b21hdGljYWxseSBmcmVlIFggcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgWFVuaXF1ZVB0ciBhcyBhIHRlbXBsYXRlIGFsaWFz
IG9mIHN0ZDp1bmlxdWVfcHRyIHRvIGhhbmRsZSBYCisgICAgICAgIHJlc291cmNlcyB1c2luZyBw
b2ludGVycyBhbmQgWFVuaXF1ZVJlc291cmNlIGFzIGEgbmV3IGNsYXNzIHRvCisgICAgICAgIGhh
bmRsZSBYIHJlc291cmNlcyB1c2luZyBhIGxvbmcgdW5zaWduZWQgaWRlbnRpZmllci4gVGhpcwor
ICAgICAgICBzaW1wbGlmaWVzIHRoZSBjb2RlIGFuZCBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdCB0
byBsZWFrIFggcmVzb3VyY2VzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBu
ZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IERp
dHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb1gxMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm9YMTE6OkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMSk6CisgICAgICAgIFJlbW92ZSB0aGUg
ZGlzcGxheSBtZW1iZXIsIGFuZCB1c2UgWFVuaXF1ZSBmb3IgUGl4bWFwIGFuZCBHQy4KKyAgICAg
ICAgKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6fkJhY2tpbmdTdG9yZUJh
Y2tlbmRDYWlyb1gxMSk6CisgICAgICAgIFJlbW92ZSBjb2RlIHRvIGV4cGxpY2l0bHkgZnJlZSBQ
aXhtYXAgYW5kIEdDLgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJv
WDExOjpzY3JvbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdT
dG9yZUJhY2tlbmRDYWlyb1gxMS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9H
TENvbnRleHRHTFguY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVX
aW5kb3dDb250ZXh0KTogVXNlIFhVbmlxdWUgYW5kIHRoZQorICAgICAgICBuZXcgY29uc3RydWN0
b3IgdGhhdCByZWNlaXZlcyBhIFhJRCwgc2luY2UgdGhlcmUncyBubyBsb25nZXIKKyAgICAgICAg
Y29uZmxpY3Qgd2l0aCB0aGUgb25lIHJlY2VpdmluZyBhIFBidWZmZXIuCisgICAgICAgIChXZWJD
b3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZmZXJDb250ZXh0KTogVXNlIFhVbmlxdWUgYW5k
IHRoZQorICAgICAgICBuZXcgY29uc3RydWN0b3IgdGhhdCByZWNlaXZlcyBhIFhVbmlxdWVHTFhQ
YnVmZmVyJiYuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKToKKyAgICAgICAg
KFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6fkdMQ29udGV4dEdMWCk6IFJlbW92ZSBjb2RlIHRvIGV4
cGxpY2l0bHkKKyAgICAgICAgZnJlZSBYIHJlc291cmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkdM
Q29udGV4dEdMWDo6bWFrZUNvbnRleHRDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEdMWDo6Y2Fpcm9EZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpw
bGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRl
eHRHTFguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1
cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6
OkVHTFhUcmFuc3BvcnRTdXJmYWNlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTFhUcmFu
c3BvcnRTdXJmYWNlQ2xpZW50OjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTFhUcmFu
c3BvcnRTdXJmYWNlQ2xpZW50OjpwcmVwYXJlVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhTdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnKTogVXNlIFhVbmlxdWUK
KyAgICAgICAgaW5zdGVhZCBvZiB0aGUgY3VzdG9tIHN0ZDo6dW5pcXVlIFgxMURlbGV0ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnV2l0
aFZpc3VhbElkKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWFN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0U3VyZmFj
ZTo6R0xYVHJhbnNwb3J0U3VyZmFjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R0xYT2Zm
U2NyZWVuU3VyZmFjZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYMTFIZWxwZXI6
OmNyZWF0ZU9mZlNjcmVlbldpbmRvdyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6WDExSGVs
cGVyOjpjcmVhdGVQaXhtYXApOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvWDExSGVscGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MveDEx
L1hVbmlxdWVQdHIuaDogUmVtb3ZlIFgxMURlbGV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpYUHRy
RGVsZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hV
bmlxdWVSZXNvdXJjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291
cmNlPFhSZXNvdXJjZTo6Q29sb3JtYXA+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6RGFtYWdlPjo6ZGVsZXRlWFJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OlBpeG1hcD46
OmRlbGV0ZVhSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8WFJl
c291cmNlOjpXaW5kb3c+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6WFVu
aXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj46OmRlbGV0ZVhSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpHTFhQaXhtYXA+Ojpk
ZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVl
UmVzb3VyY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U6OlhV
bmlxdWVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U6Om9wZXJh
dG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U6On5YVW5pcXVlUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpyZWxlYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlhV
bmlxdWVSZXNvdXJjZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNl
OjpvcGVyYXRvciEpOgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpvcGVyYXRv
ciBVbnNwZWNpZmllZEJvb2xUeXBlKik6CisKIDIwMTUtMDUtMDUgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBOZXR3b3JrIENhY2hl
OiBJbXBsZW1lbnQgU2hhcmVhYmxlUmVzb3VyY2UgZm9yIFNvdXAgYW5kIGVuYWJsZSBpdCBmb3Ig
R1RLIHBsYXRmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDc2NGIzMzYuLmIwNTIw
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xOTcsNiArMTk3LDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL1VwZGF0ZUF0bGFzLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRm
b3JtRGlzcGxheVgxMS5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZVJlc291
cmNlLmNwcAogCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGI1ZDA5YjcuLjFmOWYzYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMjYsNiArMTI2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNh
bERhdGEuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDEx
LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlUmVzb3VyY2UuY3BwCiAKICAg
ICBwbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9FdmVudExvb3BH
dGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcAppbmRleCA0
YzA4NzJmLi43Yjg2MzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gx
MS5jcHAKQEAgLTI2LDE3ICsyNiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUJhY2tp
bmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKERpc3Bs
YXkqIGRpc3BsYXksIHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lELCBWaXN1YWwqIHZpc3VhbCwg
aW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikK
K0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDEx
KHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lELCBWaXN1YWwqIHZpc3VhbCwgaW50IGRlcHRoLCBj
b25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKICAgICA6IEJhY2tp
bmdTdG9yZUJhY2tlbmRDYWlybyhzaXplKQotICAgICwgbV9kaXNwbGF5KGRpc3BsYXkpCiB7CiAg
ICAgSW50U2l6ZSBzY2FsZWRTaXplID0gc2l6ZTsKICAgICBzY2FsZWRTaXplLnNjYWxlKGRldmlj
ZVNjYWxlRmFjdG9yKTsKIAotICAgIG1fcGl4bWFwID0gWENyZWF0ZVBpeG1hcChtX2Rpc3BsYXks
IHJvb3RXaW5kb3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhlaWdodCgpLCBk
ZXB0aCk7Ci0gICAgbV9nYyA9IFhDcmVhdGVHQyhtX2Rpc3BsYXksIG1fcGl4bWFwLCAwLCBudWxs
cHRyKTsKKyAgICBhdXRvKiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CisgICAgbV9waXhtYXAg
PSBYQ3JlYXRlUGl4bWFwKGRpc3BsYXksIHJvb3RXaW5kb3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgp
LCBzY2FsZWRTaXplLmhlaWdodCgpLCBkZXB0aCk7CisgICAgbV9nYy5yZXNldChYQ3JlYXRlR0Mo
ZGlzcGxheSwgbV9waXhtYXAuZ2V0KCksIDAsIG51bGxwdHIpKTsKIAotICAgIG1fc3VyZmFjZSA9
IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9kaXNwbGF5LCBtX3BpeG1hcCwg
dmlzdWFsLCBzY2FsZWRTaXplLndpZHRoKCksIHNjYWxlZFNpemUuaGVpZ2h0KCkpKTsKKyAgICBt
X3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKGRpc3BsYXksIG1f
cGl4bWFwLmdldCgpLCB2aXN1YWwsIHNjYWxlZFNpemUud2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWln
aHQoKSkpOwogICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKG1fc3VyZmFjZS5nZXQoKSwg
ZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKTsKIH0KIApAQCAtNDQsOCArNDQs
NiBAQCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6On5CYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm9YMTEoKQogewogICAgIC8vIFRoZSBwaXhtYXAgbmVlZHMgdG8gZXhpc3Qgd2hlbiB0aGUgc3Vy
ZmFjZSBpcyBkZXN0cm95ZWQsIHNvIGJlZ2luIGJ5IGNsZWFyaW5nIGl0LgogICAgIG1fc3VyZmFj
ZS5jbGVhcigpOwotICAgIFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbV9waXhtYXApOwotICAgIFhG
cmVlR0MobV9kaXNwbGF5LCBtX2djKTsKIH0KIAogdm9pZCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm9YMTE6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBz
Y3JvbGxPZmZzZXQpCkBAIC02NSw3ICs2Myw3IEBAIHZvaWQgQmFja2luZ1N0b3JlQmFja2VuZENh
aXJvWDExOjpzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6CiAg
ICAgc2NhbGVkU2Nyb2xsT2Zmc2V0LnNjYWxlKHhTY2FsZSwgeVNjYWxlKTsKIAogICAgIGNhaXJv
X3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsKLSAgICBYQ29weUFyZWEobV9kaXNwbGF5
LCBtX3BpeG1hcCwgbV9waXhtYXAsIG1fZ2MsCisgICAgWENvcHlBcmVhKGRvd25jYXN0PFBsYXRm
b3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgp
LCBtX3BpeG1hcC5nZXQoKSwgbV9waXhtYXAuZ2V0KCksIG1fZ2MuZ2V0KCksCiAgICAgICAgIHRh
cmdldFJlY3QueCgpIC0gc2NhbGVkU2Nyb2xsT2Zmc2V0LndpZHRoKCksIHRhcmdldFJlY3QueSgp
IC0gc2NhbGVkU2Nyb2xsT2Zmc2V0LmhlaWdodCgpLAogICAgICAgICB0YXJnZXRSZWN0LndpZHRo
KCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSk7
CiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShtX3N1cmZhY2UuZ2V0KCks
IHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJn
ZXRSZWN0LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmgK
aW5kZXggMWRlMGQ4NC4uMzQ0MTgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENh
aXJvWDExLmgKQEAgLTIyLDIxICsyMiwyMSBAQAogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyby5oIgogCiAjaWYgVVNFKENBSVJPKSAmJiBQTEFURk9STShYMTEpCi0jaW5jbHVkZSA8
WDExL1hsaWIuaD4KKyNpbmNsdWRlICJYVW5pcXVlUHRyLmgiCisjaW5jbHVkZSAiWFVuaXF1ZVJl
c291cmNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvWDExIGZpbmFsIDogcHVibGljIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyB7CiBw
dWJsaWM6Ci0gICAgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqLCB1bnNpZ25l
ZCBsb25nIHJvb3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gx
MSh1bnNpZ25lZCBsb25nIHJvb3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJ
bnRTaXplJiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIHZpcnR1YWwgfkJhY2tpbmdT
dG9yZUJhY2tlbmRDYWlyb1gxMSgpOwogCiAgICAgdm9pZCBzY3JvbGwoY29uc3QgSW50UmVjdCYg
c2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKLSAgICBEaXNwbGF5KiBtX2Rpc3BsYXk7Ci0gICAgUGl4bWFwIG1fcGl4bWFwOwotICAg
IEdDIG1fZ2M7CisgICAgWFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKKyAgICBYVW5pcXVlR0MgbV9n
YzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggZjc0NjdhNy4u
YzEwOGNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4
L0dMQ29udGV4dEdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z2x4L0dMQ29udGV4dEdMWC5jcHAKQEAgLTQzLDI1ICs0MywxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRv
dywgR0xDbwogICAgIHZpc3VhbEluZm8udmlzdWFsaWQgPSBYVmlzdWFsSURGcm9tVmlzdWFsKGF0
dHJpYnV0ZXMudmlzdWFsKTsKIAogICAgIGludCBudW1SZXR1cm5lZCA9IDA7Ci0gICAgWFZpc3Vh
bEluZm8qIHZpc3VhbEluZm9MaXN0ID0gWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsSURN
YXNrLCAmdmlzdWFsSW5mbywgJm51bVJldHVybmVkKTsKLQotICAgIEdMWENvbnRleHQgZ2x4U2hh
cmluZ0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEdMWCo+
KHNoYXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBHTFhDb250ZXh0IGNvbnRleHQg
PSBnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9MaXN0LCBnbHhTaGFyaW5nQ29u
dGV4dCwgVHJ1ZSk7Ci0gICAgWEZyZWUodmlzdWFsSW5mb0xpc3QpOworICAgIFhVbmlxdWVQdHI8
WFZpc3VhbEluZm8+IHZpc3VhbEluZm9MaXN0KFhHZXRWaXN1YWxJbmZvKGRpc3BsYXksIFZpc3Vh
bElETWFzaywgJnZpc3VhbEluZm8sICZudW1SZXR1cm5lZCkpOwogCisgICAgR0xYQ29udGV4dCBn
bHhTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0
R0xYKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkgOiBudWxscHRyOworICAgIFhV
bmlxdWVHTFhDb250ZXh0IGNvbnRleHQoZ2xYQ3JlYXRlQ29udGV4dChkaXNwbGF5LCB2aXN1YWxJ
bmZvTGlzdC5nZXQoKSwgZ2x4U2hhcmluZ0NvbnRleHQsIFRydWUpKTsKICAgICBpZiAoIWNvbnRl
eHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gR0xYUGJ1ZmZlciBhbmQgWElE
IGFyZSBib3RoIHRoZSBzYW1lIHR5cGVzIHVuZGVybmVhdGgsIHNvIHdlIGhhdmUgdG8gc2hhcmUK
LSAgICAvLyBhIGNvbnN0cnVjdG9yIGhlcmUgd2l0aCB0aGUgd2luZG93IHBhdGguCi0gICAgYXV0
byBjb250ZXh0V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihjb250ZXh0
KTsKLSAgICBjb250ZXh0V3JhcHBlci0+bV93aW5kb3cgPSB3aW5kb3c7Ci0gICAgcmV0dXJuIFdU
Rjo6bW92ZShjb250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xD
b250ZXh0R0xYPihXVEY6Om1vdmUoY29udGV4dCksIHdpbmRvdyk7CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xY
Q29udGV4dCBzaGFyaW5nQ29udGV4dCkKIHsKLSAgICBpbnQgZmJDb25maWdBdHRyaWJ1dGVzW10g
PSB7CisgICAgc3RhdGljIGNvbnN0IGludCBmYkNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHsKICAgICAg
ICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9QQlVGRkVSX0JJVCwKICAgICAgICAgR0xYX1JFTkRF
Ul9UWVBFLCBHTFhfUkdCQV9CSVQsCiAgICAgICAgIEdMWF9SRURfU0laRSwgMSwKQEAgLTc0LDMy
ICs2OCwyMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNy
ZWF0ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcgogCiAgICAgaW50IHJldHVybmVkRWxl
bWVudHM7CiAgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgx
MT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwotICAgIEdMWEZC
Q29uZmlnKiBjb25maWdzID0gZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdB
dHRyaWJ1dGVzLCAmcmV0dXJuZWRFbGVtZW50cyk7Ci0gICAgaWYgKCFyZXR1cm5lZEVsZW1lbnRz
KSB7Ci0gICAgICAgIFhGcmVlKGNvbmZpZ3MpOworICAgIFhVbmlxdWVQdHI8R0xYRkJDb25maWc+
IGNvbmZpZ3MoZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRyaWJ1dGVz
LCAmcmV0dXJuZWRFbGVtZW50cykpOworICAgIGlmICghcmV0dXJuZWRFbGVtZW50cykKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQogCiAgICAgLy8gV2Ugd2lsbCBiZSByZW5kZXJpbmcg
dG8gYSB0ZXh0dXJlLCBzbyBvdXIgcGJ1ZmZlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGxhcmdlLgog
ICAgIHN0YXRpYyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgR0xYX1BCVUZGRVJf
V0lEVEgsIDEsIEdMWF9QQlVGRkVSX0hFSUdIVCwgMSwgMCB9OwotICAgIEdMWFBidWZmZXIgcGJ1
ZmZlciA9IGdsWENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmlnc1swXSwgcGJ1ZmZlckF0dHJp
YnV0ZXMpOwotICAgIGlmICghcGJ1ZmZlcikgewotICAgICAgICBYRnJlZShjb25maWdzKTsKKyAg
ICBYVW5pcXVlR0xYUGJ1ZmZlciBwYnVmZmVyKGdsWENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29u
Zmlncy5nZXQoKVswXSwgcGJ1ZmZlckF0dHJpYnV0ZXMpKTsKKyAgICBpZiAoIXBidWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWENvbnRleHQgY29udGV4dCA9
IGdsWENyZWF0ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmlnc1swXSwgR0xYX1JHQkFfVFlQRSwg
c2hhcmluZ0NvbnRleHQsIEdMX1RSVUUpOwotICAgIFhGcmVlKGNvbmZpZ3MpOwotICAgIGlmICgh
Y29udGV4dCkgewotICAgICAgICBnbFhEZXN0cm95UGJ1ZmZlcihkaXNwbGF5LCBwYnVmZmVyKTsK
KyAgICBYVW5pcXVlR0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZU5ld0NvbnRleHQoZGlzcGxh
eSwgY29uZmlncy5nZXQoKVswXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0NvbnRleHQsIEdMX1RS
VUUpKTsKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
IAotICAgIC8vIEdMWFBidWZmZXIgYW5kIFhJRCBhcmUgYm90aCB0aGUgc2FtZSB0eXBlcyB1bmRl
cm5lYXRoLCBzbyB3ZSBoYXZlIHRvIHNoYXJlCi0gICAgLy8gYSBjb25zdHJ1Y3RvciBoZXJlIHdp
dGggdGhlIHdpbmRvdyBwYXRoLgotICAgIGF1dG8gY29udGV4dFdyYXBwZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEdMQ29udGV4dEdMWD4oY29udGV4dCk7Ci0gICAgY29udGV4dFdyYXBwZXItPm1fcGJ1
ZmZlciA9IHBidWZmZXI7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0V3JhcHBlcik7Cisg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEY6Om1vdmUoY29udGV4
dCksIFdURjo6bW92ZShwYnVmZmVyKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRH
TFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdD
b250ZXh0KQpAQCAtMTE0LDMxICs5NywyMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xY
PiBHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaQogICAg
IH07CiAKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDEx
PihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7Ci0gICAgWFZpc3Vh
bEluZm8qIHZpc3VhbEluZm8gPSBnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVl
bihkaXNwbGF5KSwgdmlzdWFsQXR0cmlidXRlcyk7CisgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5m
bz4gdmlzdWFsSW5mbyhnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNw
bGF5KSwgdmlzdWFsQXR0cmlidXRlcykpOwogICAgIGlmICghdmlzdWFsSW5mbykKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBnbFhDcmVhdGVDb250
ZXh0KGRpc3BsYXksIHZpc3VhbEluZm8sIHNoYXJpbmdDb250ZXh0LCBHTF9UUlVFKTsKLSAgICBp
ZiAoIWNvbnRleHQpIHsKLSAgICAgICAgWEZyZWUodmlzdWFsSW5mbyk7CisgICAgWFVuaXF1ZUdM
WENvbnRleHQgY29udGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm8uZ2V0
KCksIHNoYXJpbmdDb250ZXh0LCBHTF9UUlVFKSk7CisgICAgaWYgKCFjb250ZXh0KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CiAKLSAgICBQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBp
eG1hcChkaXNwbGF5LCBEZWZhdWx0Um9vdFdpbmRvdyhkaXNwbGF5KSwgMSwgMSwgdmlzdWFsSW5m
by0+ZGVwdGgpOwotICAgIGlmICghcGl4bWFwKSB7Ci0gICAgICAgIFhGcmVlKHZpc3VhbEluZm8p
OworICAgIFhVbmlxdWVQaXhtYXAgcGl4bWFwKFhDcmVhdGVQaXhtYXAoZGlzcGxheSwgRGVmYXVs
dFJvb3RXaW5kb3coZGlzcGxheSksIDEsIDEsIHZpc3VhbEluZm8tPmRlcHRoKSk7CisgICAgaWYg
KCFwaXhtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWFBpeG1h
cCBnbHhQaXhtYXAgPSBnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mbywgcGl4
bWFwKTsKLSAgICBpZiAoIWdseFBpeG1hcCkgewotICAgICAgICBYRnJlZVBpeG1hcChkaXNwbGF5
LCBwaXhtYXApOwotICAgICAgICBYRnJlZSh2aXN1YWxJbmZvKTsKKyAgICBYVW5pcXVlR0xYUGl4
bWFwIGdseFBpeG1hcChnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mby5nZXQo
KSwgcGl4bWFwLmdldCgpKSk7CisgICAgaWYgKCFnbHhQaXhtYXApCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KIAotICAgIFhGcmVlKHZpc3VhbEluZm8pOwotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdMWD4oY29udGV4dCwgcGl4bWFwLCBnbHhQaXhtYXApOwor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdMWD4oV1RGOjptb3ZlKGNvbnRl
eHQpLCBXVEY6Om1vdmUocGl4bWFwKSwgV1RGOjptb3ZlKGdseFBpeG1hcCkpOwogfQogCiBzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElE
IHdpbmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKQEAgLTE1Miw3ICsxMjcsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQo
WElEIHdpbmRvdywgR0xDb250ZXh0KgogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0Nv
bnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRHTFgqPihzaGFyaW5nQ29udGV4dCktPm1fY29u
dGV4dCA6IDA7CisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250
ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRl
eHQuZ2V0KCkgOiBudWxscHRyOwogICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdp
bmRvd0NvbnRleHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOwogICAgIGlmICgh
Y29udGV4dCkKICAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGdseFNoYXJp
bmdDb250ZXh0KTsKQEAgLTE2NCwyMyArMTM5LDI3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRl
eHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQq
CiAgICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0KTsKIH0KIAotR0xDb250ZXh0R0xYOjpHTENv
bnRleHRHTFgoR0xYQ29udGV4dCBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCitH
TENvbnRleHRHTFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhJ
RCB3aW5kb3cpCisgICAgOiBtX2NvbnRleHQoV1RGOjptb3ZlKGNvbnRleHQpKQorICAgICwgbV93
aW5kb3cod2luZG93KQorICAgICwgbV9jYWlyb0RldmljZShudWxscHRyKQoreworfQorCitHTENv
bnRleHRHTFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhVbmlx
dWVHTFhQYnVmZmVyJiYgcGJ1ZmZlcikKKyAgICA6IG1fY29udGV4dChXVEY6Om1vdmUoY29udGV4
dCkpCiAgICAgLCBtX3dpbmRvdygwKQotICAgICwgbV9wYnVmZmVyKDApCi0gICAgLCBtX3BpeG1h
cCgwKQotICAgICwgbV9nbHhQaXhtYXAoMCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKKyAgICAs
IG1fcGJ1ZmZlcihXVEY6Om1vdmUocGJ1ZmZlcikpCisgICAgLCBtX2NhaXJvRGV2aWNlKG51bGxw
dHIpCiB7CiB9CiAKLUdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKEdMWENvbnRleHQgY29udGV4
dCwgUGl4bWFwIHBpeG1hcCwgR0xYUGl4bWFwIGdseFBpeG1hcCkKLSAgICA6IG1fY29udGV4dChj
b250ZXh0KQorR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBj
b250ZXh0LCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFwLCBYVW5pcXVlR0xYUGl4bWFwJiYgZ2x4UGl4
bWFwKQorICAgIDogbV9jb250ZXh0KFdURjo6bW92ZShjb250ZXh0KSkKICAgICAsIG1fd2luZG93
KDApCi0gICAgLCBtX3BidWZmZXIoMCkKLSAgICAsIG1fcGl4bWFwKHBpeG1hcCkKLSAgICAsIG1f
Z2x4UGl4bWFwKGdseFBpeG1hcCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKKyAgICAsIG1fcGl4
bWFwKFdURjo6bW92ZShwaXhtYXApKQorICAgICwgbV9nbHhQaXhtYXAoV1RGOjptb3ZlKGdseFBp
eG1hcCkpCisgICAgLCBtX2NhaXJvRGV2aWNlKG51bGxwdHIpCiB7CiB9CiAKQEAgLTE4OSwyNiAr
MTY4LDEyIEBAIEdMQ29udGV4dEdMWDo6fkdMQ29udGV4dEdMWCgpCiAgICAgaWYgKG1fY2Fpcm9E
ZXZpY2UpCiAgICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95KG1fY2Fpcm9EZXZpY2UpOwogCi0g
ICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwogICAgIGlmIChtX2NvbnRleHQp
IHsKICAgICAgICAgLy8gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZXZlbnQgY3Jhc2hlcyB3
aXRoIE5WaWRpYSdzIGNsb3NlZCBzb3VyY2UgZHJpdmVycy4gT3JpZ2luYWxseQogICAgICAgICAv
LyBmcm9tIE1vemlsbGEncyAzRCBjYW52YXMgaW1wbGVtZW50YXRpb24gYXQ6IGh0dHA6Ly9iaXRi
dWNrZXQub3JnL2lsbWFyaS9jYW52YXMzZC8KKyAgICAgICAgRGlzcGxheSogZGlzcGxheSA9IGRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
KCkpLm5hdGl2ZSgpOwogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZF
Ul9FWFQsIDApOwogICAgICAgICBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBOb25lLCBOb25lKTsK
LSAgICAgICAgZ2xYRGVzdHJveUNvbnRleHQoZGlzcGxheSwgbV9jb250ZXh0KTsKLSAgICB9Ci0K
LSAgICBpZiAobV9wYnVmZmVyKSB7Ci0gICAgICAgIGdsWERlc3Ryb3lQYnVmZmVyKGRpc3BsYXks
IG1fcGJ1ZmZlcik7Ci0gICAgICAgIG1fcGJ1ZmZlciA9IDA7Ci0gICAgfQotICAgIGlmIChtX2ds
eFBpeG1hcCkgewotICAgICAgICBnbFhEZXN0cm95R0xYUGl4bWFwKGRpc3BsYXksIG1fZ2x4UGl4
bWFwKTsKLSAgICAgICAgbV9nbHhQaXhtYXAgPSAwOwotICAgIH0KLSAgICBpZiAobV9waXhtYXAp
IHsKLSAgICAgICAgWEZyZWVQaXhtYXAoZGlzcGxheSwgbV9waXhtYXApOwotICAgICAgICBtX3Bp
eG1hcCA9IDA7CiAgICAgfQogfQogCkBAIC0yMzcsMTcgKzIwMiwxNyBAQCBib29sIEdMQ29udGV4
dEdMWDo6bWFrZUNvbnRleHRDdXJyZW50KCkKICAgICBBU1NFUlQobV9jb250ZXh0ICYmIChtX3dp
bmRvdyB8fCBtX3BidWZmZXIgfHwgbV9nbHhQaXhtYXApKTsKIAogICAgIEdMQ29udGV4dDo6bWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgaWYgKGdsWEdldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9j
b250ZXh0KQorICAgIGlmIChnbFhHZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dC5nZXQo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNh
c3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSku
bmF0aXZlKCk7CiAgICAgaWYgKG1fd2luZG93KQotICAgICAgICByZXR1cm4gZ2xYTWFrZUN1cnJl
bnQoZGlzcGxheSwgbV93aW5kb3csIG1fY29udGV4dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtl
Q3VycmVudChkaXNwbGF5LCBtX3dpbmRvdywgbV9jb250ZXh0LmdldCgpKTsKIAogICAgIGlmICht
X3BidWZmZXIpCi0gICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3BidWZm
ZXIsIG1fY29udGV4dCk7CisgICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBt
X3BidWZmZXIuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiAKLSAgICByZXR1cm4gOjpnbFhNYWtl
Q3VycmVudChkaXNwbGF5LCBtX2dseFBpeG1hcCwgbV9jb250ZXh0KTsKKyAgICByZXR1cm4gOjpn
bFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX2dseFBpeG1hcC5nZXQoKSwgbV9jb250ZXh0LmdldCgp
KTsKIH0KIAogdm9pZCBHTENvbnRleHRHTFg6OnN3YXBCdWZmZXJzKCkKQEAgLTI2Nyw3ICsyMzIs
NyBAQCBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSgpCiAgICAgICAg
IHJldHVybiBtX2NhaXJvRGV2aWNlOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKLSAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZ2x4X2RldmljZV9jcmVhdGUoZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0
aXZlKCksIG1fY29udGV4dCk7CisgICAgbV9jYWlyb0RldmljZSA9IGNhaXJvX2dseF9kZXZpY2Vf
Y3JlYXRlKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFy
ZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBtX2NvbnRleHQuZ2V0KCkpOwogI2VuZGlmCiAKICAgICBy
ZXR1cm4gbV9jYWlyb0RldmljZTsKQEAgLTI3Niw3ICsyNDEsNyBAQCBjYWlyb19kZXZpY2VfdCog
R0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSgpCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRf
M0QpCiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29udGV4dEdMWDo6cGxhdGZvcm1Db250
ZXh0KCkKIHsKLSAgICByZXR1cm4gbV9jb250ZXh0OworICAgIHJldHVybiBtX2NvbnRleHQuZ2V0
KCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ2x4L0dMQ29udGV4dEdMWC5oCmluZGV4IDY5MzRmMjQuLmFjMjRlOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmgKQEAg
LTIzLDEyICsyMywxMCBAQAogI2lmIFVTRShHTFgpCiAKICNpbmNsdWRlICJHTENvbnRleHQuaCIK
KyNpbmNsdWRlICJYVW5pcXVlUHRyLmgiCisjaW5jbHVkZSAiWFVuaXF1ZVJlc291cmNlLmgiCiAK
LXR5cGVkZWYgc3RydWN0IF9fR0xYY29udGV4dFJlYyogR0xYQ29udGV4dDsKLXR5cGVkZWYgdW5z
aWduZWQgbG9uZyBHTFhQYnVmZmVyOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdMWFBpeG1hcDsK
IHR5cGVkZWYgdW5zaWduZWQgY2hhciBHTHVieXRlOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIFBp
eG1hcDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBYSUQ7CiB0eXBlZGVmIHZvaWQqIENvbnRleHRL
ZXlUeXBlOwogCkBAIC00MCw4ICszOCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQq
IHNoYXJpbmdDb250ZXh0KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdM
WD4gY3JlYXRlV2luZG93Q29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250
ZXh0KTsKIAotICAgIEdMQ29udGV4dEdMWChHTFhDb250ZXh0KTsKLSAgICBHTENvbnRleHRHTFgo
R0xYQ29udGV4dCwgUGl4bWFwLCBHTFhQaXhtYXApOworICAgIEdMQ29udGV4dEdMWChYVW5pcXVl
R0xYQ29udGV4dCYmLCBYSUQpOworICAgIEdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYm
LCBYVW5pcXVlR0xYUGJ1ZmZlciYmKTsKKyAgICBHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRl
eHQmJiwgWFVuaXF1ZVBpeG1hcCYmLCBYVW5pcXVlR0xYUGl4bWFwJiYpOwogICAgIHZpcnR1YWwg
fkdMQ29udGV4dEdMWCgpOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKTsKQEAgLTU5LDExICs1OCwxMSBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVQYnVm
ZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNo
YXJpbmdDb250ZXh0KTsKIAotICAgIEdMWENvbnRleHQgbV9jb250ZXh0OworICAgIFhVbmlxdWVH
TFhDb250ZXh0IG1fY29udGV4dDsKICAgICBYSUQgbV93aW5kb3c7Ci0gICAgR0xYUGJ1ZmZlciBt
X3BidWZmZXI7Ci0gICAgUGl4bWFwIG1fcGl4bWFwOwotICAgIEdMWFBpeG1hcCBtX2dseFBpeG1h
cDsKKyAgICBYVW5pcXVlR0xYUGJ1ZmZlciBtX3BidWZmZXI7CisgICAgWFVuaXF1ZVBpeG1hcCBt
X3BpeG1hcDsKKyAgICBYVW5pcXVlR0xYUGl4bWFwIG1fZ2x4UGl4bWFwOwogICAgIGNhaXJvX2Rl
dmljZV90KiBtX2NhaXJvRGV2aWNlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhTdXJmYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5jcHAKaW5k
ZXggNjE4ZmRjMy4uZDRlMzczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuY3BwCkBAIC0xNDEs
NyArMTQxLDYgQEAgdm9pZCBFR0xQaXhtYXBTdXJmYWNlOjpkZXN0cm95KCkKIAogRUdMWFRyYW5z
cG9ydFN1cmZhY2VDbGllbnQ6OkVHTFhUcmFuc3BvcnRTdXJmYWNlQ2xpZW50KGNvbnN0IFBsYXRm
b3JtQnVmZmVySGFuZGxlIGhhbmRsZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNBbHBo
YSkKICAgICA6IEdMVHJhbnNwb3J0U3VyZmFjZUNsaWVudCgpCi0gICAgLCBtX2ltYWdlKDApCiAg
ICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fdG90YWxCeXRlcygwKQogewpAQCAtMTk3LDExICsx
OTYsNyBAQCB2b2lkIEVHTFhUcmFuc3BvcnRTdXJmYWNlQ2xpZW50OjpkZXN0cm95KCkKICAgICB9
CiAKICAgICBlZ2xXYWl0R0woKTsKLQotICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIFhEZXN0
cm95SW1hZ2UobV9pbWFnZSk7Ci0gICAgICAgIG1faW1hZ2UgPSAwOwotICAgIH0KKyAgICBtX2lt
YWdlLnJlc2V0KCk7CiB9CiAKIHZvaWQgRUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OnByZXBh
cmVUZXh0dXJlKCkKQEAgLTIxNCw3ICsyMDksNyBAQCB2b2lkIEVHTFhUcmFuc3BvcnRTdXJmYWNl
Q2xpZW50OjpwcmVwYXJlVGV4dHVyZSgpCiAgICAgfQogCiAgICAgLy8gRmFsbGJhY2sgdG8gdXNl
IFhJbWFnZSBpbiBjYXNlIEVHTEltYWdlIGFuZCBUZXh0dXJlVG9QaXhtYXAgYXJlIG5vdCBzdXBw
b3J0ZWQuCi0gICAgbV9pbWFnZSA9IFhHZXRJbWFnZShOYXRpdmVXcmFwcGVyOjpuYXRpdmVEaXNw
bGF5KCksIG1faGFuZGxlLCAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBB
bGxQbGFuZXMsIFpQaXhtYXApOworICAgIG1faW1hZ2UucmVzZXQoWEdldEltYWdlKE5hdGl2ZVdy
YXBwZXI6Om5hdGl2ZURpc3BsYXkoKSwgbV9oYW5kbGUsIDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCksIEFsbFBsYW5lcywgWlBpeG1hcCkpOwogCiAjaWYgVVNFKE9QRU5HTF9F
U18yKQogICAgIGlmIChtX2Zvcm1hdCAhPSBHcmFwaGljc0NvbnRleHQzRDo6QkdSQSkgewpAQCAt
MjI1LDEwICsyMjAsNyBAQCB2b2lkIEVHTFhUcmFuc3BvcnRTdXJmYWNlQ2xpZW50OjpwcmVwYXJl
VGV4dHVyZSgpCiAKICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgbV9mb3JtYXQs
IG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDAsIG1fZm9ybWF0LCBHTF9VTlNJR05F
RF9CWVRFLCBtX2ltYWdlLT5kYXRhKTsKIAotICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIFhE
ZXN0cm95SW1hZ2UobV9pbWFnZSk7Ci0gICAgICAgIG1faW1hZ2UgPSAwOwotICAgIH0KKyAgICBt
X2ltYWdlLnJlc2V0KCk7CiB9CiAKIEVHTFRleHR1cmVGcm9tUGl4bWFwOjpFR0xUZXh0dXJlRnJv
bVBpeG1hcChjb25zdCBOYXRpdmVQaXhtYXAgaGFuZGxlLCBib29sIGhhc0FscGhhLCBFR0xDb25m
aWcgY29uZmlnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZWdsL0VHTFhTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuaAppbmRleCA5NmM4YTY2Li5iNDIxZTE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wv
RUdMWFN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9lZ2wvRUdMWFN1cmZhY2UuaApAQCAtMjksMTEgKzI5LDExIEBACiAjaWYgUExBVEZPUk0o
WDExKSAmJiBVU0UoRUdMKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIAogI2luY2x1ZGUgIkVH
TFN1cmZhY2UuaCIKKyNpbmNsdWRlICJYVW5pcXVlUHRyLmgiCiAjaW5jbHVkZSA8Z2x4L1gxMUhl
bHBlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgWDExSGVscGVyIE5hdGl2
ZVdyYXBwZXI7CiB0eXBlZGVmIFBpeG1hcCBOYXRpdmVQaXhtYXA7CiAKIC8vIENvbnRlbnRzIG9m
IHRoZSBzdXJmYWNlIGFyZSBiYWNrZWQgYnkgbmF0aXZlIHdpbmRvdy4KQEAgLTc0LDcgKzc0LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6Ci0gICAgWEltYWdlKiBtX2ltYWdlOworICAgIFhVbmlxdWVQdHI8WEltYWdlPiBtX2ltYWdl
OwogICAgIEludFNpemUgbV9zaXplOwogICAgIFBsYXRmb3JtQnVmZmVySGFuZGxlIG1faGFuZGxl
OwogICAgIEdMdWludCBtX2Zvcm1hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmgK
aW5kZXggNWNkZWRlNS4uMTQ1ODMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9y
LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBVU0UoR0xYKQogCiAjaW5jbHVkZSAiWDExSGVscGVy
LmgiCisjaW5jbHVkZSAiWFVuaXF1ZVB0ci5oIgogI2luY2x1ZGUgPG9wZW5nbC9HTERlZnMuaD4K
ICNpbmNsdWRlIDxvcGVuZ2wvR0xQbGF0Zm9ybVN1cmZhY2UuaD4KIApAQCAtMTQwLDEzICsxNDEs
MTMgQEAgcHJpdmF0ZToKICAgICBHTFhGQkNvbmZpZyBmaW5kTWF0Y2hpbmdDb25maWcoY29uc3Qg
aW50IGF0dHJpYnV0ZXNbXSwgaW50IGRlcHRoID0gMzIpCiAgICAgewogICAgICAgICBpbnQgbnVt
QXZhaWxhYmxlQ29uZmlnczsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdMWEZCQ29uZmlnW10s
IFgxMURlbGV0ZXI+IHRlbXAoZ2xYQ2hvb3NlRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNw
bGF5KCksIERlZmF1bHRTY3JlZW4oWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCkpLCBhdHRyaWJ1
dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncykpOworICAgICAgICBYVW5pcXVlUHRyPEdMWEZCQ29u
ZmlnPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCBE
ZWZhdWx0U2NyZWVuKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpKSwgYXR0cmlidXRlcywgJm51
bUF2YWlsYWJsZUNvbmZpZ3MpKTsKIAogICAgICAgICBpZiAoIW51bUF2YWlsYWJsZUNvbmZpZ3Mg
fHwgIXRlbXAuZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bUF2YWlsYWJsZUNvbmZpZ3M7ICsraSkgewotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiBzY29wZWRWaXN1YWxJbmZvIHsg
Z2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCB0ZW1w
W2ldKSB9OworICAgICAgICAgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gc2NvcGVkVmlzdWFs
SW5mbyB7IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXko
KSwgdGVtcC5nZXQoKVtpXSkgfTsKICAgICAgICAgICAgIGlmICghc2NvcGVkVmlzdWFsSW5mby5n
ZXQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTU3LDQwICsxNTgsNDAgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoZm9ybWF0KSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChtX2F0dHJpYnV0ZXMgJiBHTFBsYXRmb3JtU3VyZmFjZTo6U3VwcG9ydEFscGhhKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGVkVmlzdWFsSW5mby0+ZGVwdGggPT0g
ZGVwdGggJiYgZm9ybWF0LT5kaXJlY3QuYWxwaGFNYXNrID4gMCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGVtcFtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGVtcC5nZXQoKVtpXTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghZm9y
bWF0LT5kaXJlY3QuYWxwaGFNYXNrKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRl
bXBbaV07CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVtcC5nZXQoKVtpXTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIGlmIChz
Y29wZWRWaXN1YWxJbmZvLT5kZXB0aCA9PSBkZXB0aCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
dGVtcFtpXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGVtcC5nZXQoKVtpXTsKICAgICAgICAg
fQogCiAgICAgICAgIC8vIERpZCBub3QgZmluZCBhbnkgdmlzdWFsIHN1cHBvcnRpbmcgYWxwaGEs
IHNlbGVjdCB0aGUgZmlyc3QgYXZhaWxhYmxlIGNvbmZpZy4KLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiBzY29wZWRWaXN1YWxJbmZvIHsgZ2xYR2V0Vmlz
dWFsRnJvbUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCB0ZW1wWzBdKSB9Owor
ICAgICAgICBYVW5pcXVlUHRyPFhWaXN1YWxJbmZvPiBzY29wZWRWaXN1YWxJbmZvIHsgZ2xYR2V0
VmlzdWFsRnJvbUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCB0ZW1wLmdldCgp
WzBdKSB9OwogCiAgICAgICAgIGlmICgobV9hdHRyaWJ1dGVzICYgR0xQbGF0Zm9ybVN1cmZhY2U6
OlN1cHBvcnRBbHBoYSkgJiYgKHNjb3BlZFZpc3VhbEluZm8tPmRlcHRoICE9IDMyKSkKICAgICAg
ICAgICAgIG1fYXR0cmlidXRlcyAmPSB+R0xQbGF0Zm9ybVN1cmZhY2U6OlN1cHBvcnRBbHBoYTsK
IAotICAgICAgICByZXR1cm4gdGVtcFswXTsKKyAgICAgICAgcmV0dXJuIHRlbXAuZ2V0KClbMF07
CiAgICAgfQogCiAgICAgR0xYRkJDb25maWcgZmluZE1hdGNoaW5nQ29uZmlnV2l0aFZpc3VhbElk
KGNvbnN0IGludCBhdHRyaWJ1dGVzW10sIGludCBkZXB0aCwgVmlzdWFsSUQgaWQpCiAgICAgewog
ICAgICAgICBpbnQgbnVtQXZhaWxhYmxlQ29uZmlnczsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEdMWEZCQ29uZmlnW10sIFgxMURlbGV0ZXI+IHRlbXAoZ2xYQ2hvb3NlRkJDb25maWcoWDExSGVs
cGVyOjpuYXRpdmVEaXNwbGF5KCksIERlZmF1bHRTY3JlZW4oWDExSGVscGVyOjpuYXRpdmVEaXNw
bGF5KCkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncykpOworICAgICAgICBYVW5p
cXVlUHRyPEdMWEZCQ29uZmlnPiB0ZW1wKGdsWENob29zZUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0
aXZlRGlzcGxheSgpLCBEZWZhdWx0U2NyZWVuKFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpKSwg
YXR0cmlidXRlcywgJm51bUF2YWlsYWJsZUNvbmZpZ3MpKTsKIAogICAgICAgICBpZiAoIW51bUF2
YWlsYWJsZUNvbmZpZ3MgfHwgIXRlbXAuZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAog
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUF2YWlsYWJsZUNvbmZpZ3M7ICsraSkgewot
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiBzY29w
ZWRWaXN1YWxJbmZvIHsgZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZl
RGlzcGxheSgpLCB0ZW1wW2ldKSB9OworICAgICAgICAgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5m
bz4gc2NvcGVkVmlzdWFsSW5mbyB7IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhYMTFIZWxwZXI6
Om5hdGl2ZURpc3BsYXkoKSwgdGVtcC5nZXQoKVtpXSkgfTsKICAgICAgICAgICAgIGlmICghc2Nv
cGVkVmlzdWFsSW5mby5nZXQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICAgICAgaWYgKGlkICYmIHNjb3BlZFZpc3VhbEluZm8tPmRlcHRoID09IGRlcHRoICYmIHNjb3Bl
ZFZpc3VhbEluZm8tPnZpc3VhbGlkID09IGlkKQotICAgICAgICAgICAgICAgIHJldHVybiB0ZW1w
W2ldOworICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wLmdldCgpW2ldOwogICAgICAgICB9CiAK
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAKaW5kZXggYmE0OTNiMC4u
NTQxZTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAj
aWYgVVNFKEdMWCkKIAorI2luY2x1ZGUgIlhVbmlxdWVQdHIuaCIKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgUEZOR0xYQklORFRFWElNQUdFRVhUUFJPQyBwR2xYQmluZFRleEltYWdl
RVhUID0gMDsKQEAgLTY2LDcgKzY4LDcgQEAgR0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNw
b3J0U3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBTdXJmYWNlQXR0cmlidXRlcwogewogICAg
IGF0dHJpYnV0ZXMgfD0gR0xQbGF0Zm9ybVN1cmZhY2U6OkRvdWJsZUJ1ZmZlcmVkOwogICAgIG1f
Y29uZmlnU2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEdMWENvbmZpZ1NlbGVjdG9yPihhdHRy
aWJ1dGVzKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8WFZpc3VhbEluZm8sIFgxMURlbGV0ZXI+IHZp
c0luZm8obV9jb25maWdTZWxlY3Rvci0+dmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT5zdXJm
YWNlQ29udGV4dENvbmZpZygpKSk7CisgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzSW5m
byhtX2NvbmZpZ1NlbGVjdG9yLT52aXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnN1cmZhY2VD
b250ZXh0Q29uZmlnKCkpKTsKIAogICAgIGlmICghdmlzSW5mby5nZXQoKSkgewogICAgICAgICBk
ZXN0cm95KCk7CkBAIC0xNDIsNyArMTQ0LDcgQEAgdm9pZCBHTFhPZmZTY3JlZW5TdXJmYWNlOjpp
bml0aWFsaXplKFN1cmZhY2VBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiB7CiAgICAgbV9jb25maWdT
ZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8R0xYQ29uZmlnU2VsZWN0b3I+KGF0dHJpYnV0ZXMp
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFEZWxldGVyPiB2aXN1YWxJ
bmZvKG1fY29uZmlnU2VsZWN0b3ItPnZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rvci0+cGl4bWFw
Q29udGV4dENvbmZpZygpKSk7CisgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFsSW5m
byhtX2NvbmZpZ1NlbGVjdG9yLT52aXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnBpeG1hcENv
bnRleHRDb25maWcoKSkpOwogICAgIFgxMUhlbHBlcjo6Y3JlYXRlUGl4bWFwKCZtX3BpeG1hcCwg
KnZpc3VhbEluZm8uZ2V0KCkpOwogCiAgICAgaWYgKCFtX3BpeG1hcCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVs
cGVyLmNwcAppbmRleCA4MDEwYjU3Li5mYThjNGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmNwcApA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlgxMUhlbHBlci5oIgogCiAjaW5jbHVkZSAiUGxh
dGZvcm1EaXNwbGF5WDExLmgiCisjaW5jbHVkZSAiWFVuaXF1ZVB0ci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTIyMyw3ICsyMjQsNyBAQCB2b2lkIFgxMUhlbHBlcjo6Y3JlYXRlT2Zm
U2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5kbGVJZCwgY29uc3QgRUdMaW50IGlkLCBib29sCiAg
ICAgbWVtc2V0KCZ2aXN1YWxJbmZvVGVtcGxhdGUsIDAsIHNpemVvZihYVmlzdWFsSW5mbykpOwog
ICAgIHZpc3VhbEluZm9UZW1wbGF0ZS52aXN1YWxpZCA9IHZpc3VhbElkOwogICAgIGludCBtYXRj
aGluZ0NvdW50ID0gMDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8WFZpc3VhbEluZm8sIFgxMURlbGV0
ZXI+IG1hdGNoaW5nVmlzdWFscyhYR2V0VmlzdWFsSW5mbyhuYXRpdmVEaXNwbGF5KCksIFZpc3Vh
bElETWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpKTsKKyAgICBYVW5p
cXVlUHRyPFhWaXN1YWxJbmZvPiBtYXRjaGluZ1Zpc3VhbHMoWEdldFZpc3VhbEluZm8obmF0aXZl
RGlzcGxheSgpLCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZvVGVtcGxhdGUsICZtYXRjaGluZ0Nv
dW50KSk7CiAgICAgWFZpc3VhbEluZm8qIGZvdW5kVmlzdWFsID0gMDsKIAogICAgIGlmIChtYXRj
aGluZ1Zpc3VhbHMpIHsKQEAgLTI2MCw3ICsyNjEsNyBAQCB2b2lkIFgxMUhlbHBlcjo6Y3JlYXRl
UGl4bWFwKFBpeG1hcCogaGFuZGxlSWQsIGNvbnN0IEVHTGludCBpZCwgYm9vbCBoYXNBbHBoYSwg
YwogICAgIG1lbXNldCgmdmlzdWFsSW5mb1RlbXBsYXRlLCAwLCBzaXplb2YoWFZpc3VhbEluZm8p
KTsKICAgICB2aXN1YWxJbmZvVGVtcGxhdGUudmlzdWFsaWQgPSB2aXN1YWxJZDsKICAgICBpbnQg
bWF0Y2hpbmdDb3VudCA9IDA7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFhWaXN1YWxJbmZvLCBYMTFE
ZWxldGVyPiBtYXRjaGluZ1Zpc3VhbHMoWEdldFZpc3VhbEluZm8obmF0aXZlRGlzcGxheSgpLCBW
aXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZvVGVtcGxhdGUsICZtYXRjaGluZ0NvdW50KSk7CisgICAg
WFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gbWF0Y2hpbmdWaXN1YWxzKFhHZXRWaXN1YWxJbmZvKG5h
dGl2ZURpc3BsYXkoKSwgVmlzdWFsSURNYXNrLCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hp
bmdDb3VudCkpOwogICAgIFhWaXN1YWxJbmZvKiBmb3VuZFZpc3VhbCA9IDA7CiAgICAgaW50IHJl
cXVpcmVkRGVwdGggPSBoYXNBbHBoYSA/IDMyIDogMjQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFIZWxwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFIZWxwZXIuaAppbmRl
eCAxMDNmMDAxLi43ZjVlNGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5oCkBAIC00MiwxNSArNDIsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFgxMURlbGV0ZXIgewotcHVibGljOgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgb3BlcmF0b3IoKShUKiByZXNvdXJjZSkKLSAg
ICB7Ci0gICAgICAgIGlmIChyZXNvdXJjZSkKLSAgICAgICAgICAgIFhGcmVlKHJlc291cmNlKTsK
LSAgICB9Ci19OwotCiBjbGFzcyBYMTFIZWxwZXIgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lk
IGNyZWF0ZVBpeG1hcChQaXhtYXAqLCBjb25zdCBYVmlzdWFsSW5mbyYsIGNvbnN0IEludFNpemUm
ID0gSW50U2l6ZSgxLCAxKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy94MTEvWFVuaXF1ZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MveDExL1hVbmlxdWVQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w
OGYyY2YwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MveDExL1hVbmlxdWVQdHIuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IElnYWxpYSBTLkwKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFhVbmlxdWVQdHJfaAorI2RlZmluZSBYVW5p
cXVlUHRyX2gKKworI2lmIFBMQVRGT1JNKFgxMSkKKyNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXlY
MTEuaCIKKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KKworI2lmIFVTRShHTFgpCit0eXBlZGVmIHN0
cnVjdCBfX0dMWGNvbnRleHRSZWMqIEdMWENvbnRleHQ7CitleHRlcm4gIkMiIHZvaWQgZ2xYRGVz
dHJveUNvbnRleHQoRGlzcGxheSosIEdMWENvbnRleHQpOworI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBYUHRyRGVsZXRlciB7Cisg
ICAgdm9pZCBvcGVyYXRvcigpKFQqIHB0cikgY29uc3QgeyBYRnJlZShwdHIpOyB9Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgordXNpbmcgWFVuaXF1ZVB0ciA9IHN0ZDo6dW5pcXVlX3B0cjxU
LCBYUHRyRGVsZXRlcjxUPj47CisKKyNkZWZpbmUgREVGSU5FX1hQVFJfREVMRVRFUih0eXBlTmFt
ZSwgZGVsZXRlckZ1bmMpIFwKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBYUHRyRGVsZXRlcjx0eXBl
TmFtZT4gXAorICAgIHsgXAorICAgICAgICB2b2lkIG9wZXJhdG9yKCkgKHR5cGVOYW1lKiBwdHIp
IGNvbnN0IFwKKyAgICAgICAgeyBcCisgICAgICAgICAgICBpZiAocHRyKSBcCisgICAgICAgICAg
ICAgICAgZGVsZXRlckZ1bmMocHRyKTsgXAorICAgICAgICB9IFwKKyAgICB9OworCisjZGVmaW5l
IERFRklORV9YUFRSX0RFTEVURVJfV0lUSF9ESVNQTEFZKHR5cGVOYW1lLCBkZWxldGVyRnVuYykg
XAorICAgIHRlbXBsYXRlPD4gc3RydWN0IFhQdHJEZWxldGVyPHR5cGVOYW1lPiBcCisgICAgeyBc
CisgICAgICAgIHZvaWQgb3BlcmF0b3IoKSAodHlwZU5hbWUqIHB0cikgY29uc3QgXAorICAgICAg
ICB7IFwKKyAgICAgICAgICAgIGlmIChwdHIpIFwKKyAgICAgICAgICAgICAgICBkZWxldGVyRnVu
Yyhkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlz
cGxheSgpKS5uYXRpdmUoKSwgcHRyKTsgXAorICAgICAgICB9IFwKKyAgICB9OworCisKK0RFRklO
RV9YUFRSX0RFTEVURVIoWEltYWdlLCBYRGVzdHJveUltYWdlKQorREVGSU5FX1hQVFJfREVMRVRF
Ul9XSVRIX0RJU1BMQVkoX1hHQywgWEZyZWVHQykKKworI2lmIFVTRShHTFgpCitERUZJTkVfWFBU
Ul9ERUxFVEVSX1dJVEhfRElTUExBWShfX0dMWGNvbnRleHRSZWMsIGdsWERlc3Ryb3lDb250ZXh0
KQorI2VuZGlmCisKKyN1bmRlZiBERUZJTkVfWFBUUl9ERUxFVEVSCisjdW5kZWYgREVGSU5FX1hQ
VFJfREVMRVRFUl9XSVRIX0RJU1BMQVkKKworLy8gR2l2ZSBhIG5hbWUgdG8gdGhlc2UgWFVuaXF1
ZVB0ciB0byBhdm9pZCBoYXZpbmcgdG8gdXNlIHRoZSBpbnRlcm5hbCBzdHJ1Y3QgbmFtZXMgKF9Y
R0MsIF9fR0xYY29udGV4dFJlYywgLi4uKS4KK3VzaW5nIFhVbmlxdWVHQyA9IFhVbmlxdWVQdHI8
X1hHQz47CisjaWYgVVNFKEdMWCkKK3VzaW5nIFhVbmlxdWVHTFhDb250ZXh0ID0gWFVuaXF1ZVB0
cjxfX0dMWGNvbnRleHRSZWM+OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKKworI2VuZGlmIC8vIFhVbmlxdWVQdHJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWVSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZVJlc291
cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDVkOWM3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlx
dWVSZXNvdXJjZS5jcHAKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBJZ2FsaWEgUy5MCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhVbmlxdWVS
ZXNvdXJjZS5oIgorCisjaWYgUExBVEZPUk0oWDExKQorI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxh
eVgxMS5oIgorI2luY2x1ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVkZSA8WDExL1h1dGlsLmg+CisK
KyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgor
I2VuZGlmCisKKyNpZiBVU0UoR0xYKQorI2luY2x1ZGUgPEdML2dseC5oPgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8PiB2b2lkIFhVbmlxdWVSZXNvdXJjZTxYUmVz
b3VyY2U6OkNvbG9ybWFwPjo6ZGVsZXRlWFJlc291cmNlKGxvbmcgdW5zaWduZWQgcmVzb3VyY2Up
Cit7CisgICAgaWYgKHJlc291cmNlKQorICAgICAgICBYRnJlZUNvbG9ybWFwKGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2
ZSgpLCByZXNvdXJjZSk7Cit9CisKKyNpZiBQTEFURk9STShHVEspCit0ZW1wbGF0ZSA8PiB2b2lk
IFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OkRhbWFnZT46OmRlbGV0ZVhSZXNvdXJjZShsb25n
IHVuc2lnbmVkIHJlc291cmNlKQoreworICAgIGlmIChyZXNvdXJjZSkKKyAgICAgICAgWERhbWFn
ZURlc3Ryb3koZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNo
YXJlZERpc3BsYXkoKSkubmF0aXZlKCksIHJlc291cmNlKTsKK30KKyNlbmRpZgorCit0ZW1wbGF0
ZSA8PiB2b2lkIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OlBpeG1hcD46OmRlbGV0ZVhSZXNv
dXJjZShsb25nIHVuc2lnbmVkIHJlc291cmNlKQoreworICAgIGlmIChyZXNvdXJjZSkKKyAgICAg
ICAgWEZyZWVQaXhtYXAoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3Bs
YXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIHJlc291cmNlKTsKK30KKwordGVtcGxhdGUg
PD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpXaW5kb3c+OjpkZWxldGVYUmVzb3Vy
Y2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKK3sKKyAgICBpZiAocmVzb3VyY2UpCisgICAgICAg
IFhEZXN0cm95V2luZG93KGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCByZXNvdXJjZSk7Cit9CisKKyNpZiBVU0Uo
R0xYKQordGVtcGxhdGU8PiB2b2lkIFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OkdMWFBidWZm
ZXI+OjpkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKK3sKKyAgICBpZiAo
cmVzb3VyY2UpCisgICAgICAgIGdsWERlc3Ryb3lQYnVmZmVyKGRvd25jYXN0PFBsYXRmb3JtRGlz
cGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCByZXNv
dXJjZSk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpH
TFhQaXhtYXA+OjpkZWxldGVYUmVzb3VyY2UobG9uZyB1bnNpZ25lZCByZXNvdXJjZSkKK3sKKyAg
ICBpZiAocmVzb3VyY2UpCisgICAgICAgIGdsWERlc3Ryb3lHTFhQaXhtYXAoZG93bmNhc3Q8UGxh
dGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZl
KCksIHJlc291cmNlKTsKK30KKyNlbmRpZiAvLyBVU0UoR0xYKQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShYMTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZVJlc291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZVJlc291cmNlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBhNjk0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlUmVzb3VyY2UuaApAQCAtMCww
ICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBYVW5pcXVlUmVzb3VyY2VfaAorI2RlZmluZSBYVW5pcXVlUmVzb3VyY2VfaAorCisjaWYg
UExBVEZPUk0oWDExKQorCisjaWYgVVNFKEdMWCkKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBHTFhQ
YnVmZmVyOwordHlwZWRlZiB1bnNpZ25lZCBsb25nIEdMWFBpeG1hcDsKKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgWFJlc291cmNlIHsKKyAgICBDb2xvcm1hcCwK
KyNpZiBQTEFURk9STShHVEspCisgICAgRGFtYWdlLAorI2VuZGlmCisgICAgUGl4bWFwLAorICAg
IFdpbmRvdywKKyNpZiBVU0UoR0xYKQorICAgIEdMWFBidWZmZXIsCisgICAgR0xYUGl4bWFwLAor
I2VuZGlmCit9OworCit0ZW1wbGF0ZSA8WFJlc291cmNlIFQ+IGNsYXNzIFhVbmlxdWVSZXNvdXJj
ZSB7CitwdWJsaWM6CisgICAgWFVuaXF1ZVJlc291cmNlKCkKKyAgICAgICAgOiBtX3Jlc291cmNl
KDApCisgICAgeworICAgIH0KKworICAgIFhVbmlxdWVSZXNvdXJjZShsb25nIHVuc2lnbmVkIHJl
c291cmNlKQorICAgICAgICA6IG1fcmVzb3VyY2UocmVzb3VyY2UpCisgICAgeworICAgIH0KKwor
ICAgIFhVbmlxdWVSZXNvdXJjZShYVW5pcXVlUmVzb3VyY2UmJiB1bmlxdWVSZXNvdXJjZSkKKyAg
ICAgICAgOiBtX3Jlc291cmNlKHVuaXF1ZVJlc291cmNlLnJlbGVhc2UoKSkKKyAgICB7CisgICAg
fQorCisgICAgWFVuaXF1ZVJlc291cmNlJiBvcGVyYXRvcj0oWFVuaXF1ZVJlc291cmNlJiYgdW5p
cXVlUmVzb3VyY2UpCisgICAgeworICAgICAgICByZXNldCh1bmlxdWVSZXNvdXJjZS5yZWxlYXNl
KCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgflhVbmlxdWVSZXNvdXJj
ZSgpCisgICAgeworICAgICAgICByZXNldCgpOworICAgIH0KKworICAgIGxvbmcgdW5zaWduZWQg
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZTsgfQorICAgIGxvbmcgdW5zaWduZWQgcmVs
ZWFzZSgpIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9yZXNvdXJjZSwgMCk7IH0KKworICAgIHZv
aWQgcmVzZXQobG9uZyB1bnNpZ25lZCByZXNvdXJjZSA9IDApCisgICAgeworICAgICAgICBzdGQ6
OnN3YXAobV9yZXNvdXJjZSwgcmVzb3VyY2UpOworICAgICAgICBkZWxldGVYUmVzb3VyY2UocmVz
b3VyY2UpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1f
cmVzb3VyY2U7IH0KKworICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1w
bGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4K
KyAgICB0eXBlZGVmIHZvaWQqIChYVW5pcXVlUmVzb3VyY2U6OipVbnNwZWNpZmllZEJvb2xUeXBl
KTsKKyAgICBvcGVyYXRvciBVbnNwZWNpZmllZEJvb2xUeXBlKigpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9yZXNvdXJjZSA/IHJlaW50ZXJwcmV0X2Nhc3Q8VW5zcGVjaWZpZWRCb29s
VHlwZSo+KDEpIDogMDsKKyAgICB9CisKKyAgICBYVW5pcXVlUmVzb3VyY2UoY29uc3QgWFVuaXF1
ZVJlc291cmNlJikgPSBkZWxldGU7CisgICAgWFVuaXF1ZVJlc291cmNlJiBvcGVyYXRvcj0oY29u
c3QgWFVuaXF1ZVJlc291cmNlJikgPSBkZWxldGU7Citwcml2YXRlOgorICAgIHN0YXRpYyB2b2lk
IGRlbGV0ZVhSZXNvdXJjZShsb25nIHVuc2lnbmVkIHJlc291cmNlKTsKKworICAgIGxvbmcgdW5z
aWduZWQgbV9yZXNvdXJjZTsKK307CisKK3VzaW5nIFhVbmlxdWVDb2xvcm1hcCA9IFhVbmlxdWVS
ZXNvdXJjZTxYUmVzb3VyY2U6OkNvbG9ybWFwPjsKKyNpZiBQTEFURk9STShHVEspCit1c2luZyBY
VW5pcXVlRGFtYWdlID0gWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6RGFtYWdlPjsKKyNlbmRp
ZgordXNpbmcgWFVuaXF1ZVBpeG1hcCA9IFhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OlBpeG1h
cD47Cit1c2luZyBYVW5pcXVlV2luZG93ID0gWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6V2lu
ZG93PjsKKyNpZiBVU0UoR0xYKQordXNpbmcgWFVuaXF1ZUdMWFBidWZmZXIgPSBYVW5pcXVlUmVz
b3VyY2U8WFJlc291cmNlOjpHTFhQYnVmZmVyPjsKK3VzaW5nIFhVbmlxdWVHTFhQaXhtYXAgPSBY
VW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpHTFhQaXhtYXA+OworI2VuZGlmCisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKKworI2VuZGlmIC8vIFhV
bmlxdWVSZXNvdXJjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGQ4Mzg4Ny4uNjk1NTdlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA1LTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbWDExXSBBZGQgWFVuaXF1ZVB0ciBhbmQgWFVu
aXF1ZVJlc291cmNlIHRvIGF1dG9tYXRpY2FsbHkgZnJlZSBYIHJlc291cmNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NTIxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFhVbmlxdWVQdHIgYW5k
IFhVbmlxdWVSZXNvdXJjZSB0byBmcmVlIFggcmVzb3VyY2VzLgorCisgICAgICAgICogUGxhdGZv
cm1FZmwuY21ha2U6IEFkZCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEgZGly
CisgICAgICAgIHRvIHRoZSBpbmNsdWRlIGRpciBsaXN0LgorICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fp
cm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOiBE
byBub3QgcGFzcyB0aGUgZGlzcGxheSB0bworICAgICAgICB0aGUgQmFja2luZ1N0b3JlQmFja2Vu
ZENhaXJvWDExIGNvbnN0cnVjdG9yLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3cuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cpOgorICAgICAgICAoV2ViS2l0
OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
KToKKyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjbGVhbnVwUGl4
bWFwQW5kUGl4bWFwU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93OjpzdXJmYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93Ojp3aW5kb3dJRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1
Z2luOjpwbGF0Zm9ybVBvc3RJbml0aWFsaXplV2luZG93bGVzcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybURlc3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KToKKwogMjAxNS0wNS0wNSAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBdIE5ldHdv
cmsgQ2FjaGU6IEltcGxlbWVudCBTaGFyZWFibGVSZXNvdXJjZSBmb3IgU291cCBhbmQgZW5hYmxl
IGl0IGZvciBHVEsgcGxhdGZvcm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNWEwMmVh
Mi4uZWZlZmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTIyNiw2ICsyMjYsNyBA
QCBsaXN0KEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL2dyYXBoaWNzL2VmbCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3gxMSIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3VwIgogICAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L05ldHdvcmtQ
cm9jZXNzL2VmbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggZjdiYjYzNy4uODlkNDcw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTQ1Niw2ICs0NTYsNyBAQCBsaXN0KEFQ
UEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vZ3RrIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlybyIK
ICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUiCisgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3gxMSIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vbmV0d29yay9zb3VwIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0
L2VuY2hhbnQiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L0RhdGFiYXNlUHJvY2Vzcy91bml4IgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5j
cHAKaW5kZXggYmQ4MGIzNy4uMmZiMzBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm8+IEJhY2tpbmdTdG9yZTo6Y3Jl
YXRlQmFja2VuZCgpCiAgICAgICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ3RrX3dpZGdldF9nZXRf
dmlzdWFsKG1fd2ViUGFnZVByb3h5LnZpZXdXaWRnZXQoKSk7CiAgICAgICAgIEdka1NjcmVlbiog
c2NyZWVuID0gZ2RrX3Zpc3VhbF9nZXRfc2NyZWVuKHZpc3VhbCk7CiAgICAgICAgIEFTU0VSVChk
b3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHNoYXJlZERpc3BsYXkpLm5hdGl2ZSgpID09IEdE
S19TQ1JFRU5fWERJU1BMQVkoc2NyZWVuKSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMT4oZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5
WDExPihzaGFyZWREaXNwbGF5KS5uYXRpdmUoKSwgR0RLX1dJTkRPV19YSUQoZ2RrX3NjcmVlbl9n
ZXRfcm9vdF93aW5kb3coc2NyZWVuKSksCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMT4oR0RLX1dJTkRPV19YSUQoZ2RrX3NjcmVlbl9n
ZXRfcm9vdF93aW5kb3coc2NyZWVuKSksCiAgICAgICAgICAgICBHREtfVklTVUFMX1hWSVNVQUwo
dmlzdWFsKSwgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgodmlzdWFsKSwgbV9zaXplLCBtX2RldmljZVNj
YWxlRmFjdG9yKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKaW5kZXggNDQ0
Zjg2NC4uM2ZiYTMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9S
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
IAogI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQogCisjaW5jbHVkZSA8WDEx
L1hsaWIuaD4KICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YY29tcG9zaXRlLmg+CiAjaW5jbHVk
ZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgogI2luY2x1ZGUgPGNhaXJvLXhsaWIuaD4KQEAg
LTEzNSwyMSArMTM2LDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdz4gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShHCiAKIFJlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhHZGtXaW5kb3cqIHBh
cmVudFdpbmRvdywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRhbWFnZU5vdGlmeSkKICAgICA6IG1f
ZGlzcGxheShHREtfRElTUExBWV9YRElTUExBWShnZGtfd2luZG93X2dldF9kaXNwbGF5KHBhcmVu
dFdpbmRvdykpKQotICAgICwgbV93aW5kb3coMCkKLSAgICAsIG1fcGFyZW50V2luZG93KDApCi0g
ICAgLCBtX3BpeG1hcCgwKQotICAgICwgbV9kYW1hZ2UoMCkKICAgICAsIG1fbmVlZHNOZXdQaXht
YXBBZnRlclJlc2l6ZShmYWxzZSkKIHsKKyAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNw
bGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCkgPT0gbV9k
aXNwbGF5KTsKICAgICBTY3JlZW4qIHNjcmVlbiA9IERlZmF1bHRTY3JlZW5PZkRpc3BsYXkobV9k
aXNwbGF5KTsKIAogICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ2RrX3dpbmRvd19nZXRfdmlzdWFs
KHBhcmVudFdpbmRvdyk7Ci0gICAgQ29sb3JtYXAgY29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAo
bV9kaXNwbGF5LCBSb290V2luZG93T2ZTY3JlZW4oc2NyZWVuKSwgR0RLX1ZJU1VBTF9YVklTVUFM
KHZpc3VhbCksIEFsbG9jTm9uZSk7CisgICAgWFVuaXF1ZUNvbG9ybWFwIGNvbG9ybWFwKFhDcmVh
dGVDb2xvcm1hcChtX2Rpc3BsYXksIFJvb3RXaW5kb3dPZlNjcmVlbihzY3JlZW4pLCBHREtfVklT
VUFMX1hWSVNVQUwodmlzdWFsKSwgQWxsb2NOb25lKSk7CiAKICAgICAvLyBUaGlzIGlzIGJhc2Vk
IG9uIGNvZGUgZnJvbSBDaHJvbWl1bTogc3JjL2NvbnRlbnQvY29tbW9uL2dwdS9pbWFnZV90cmFu
c3BvcnRfc3VyZmFjZV9saW51eC5jYwogICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIHdpbmRvd0F0
dHJpYnV0ZXM7CiAgICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IFRydWU7
Ci0gICAgd2luZG93QXR0cmlidXRlcy5jb2xvcm1hcCA9IGNvbG9ybWFwOworICAgIHdpbmRvd0F0
dHJpYnV0ZXMuY29sb3JtYXAgPSBjb2xvcm1hcC5nZXQoKTsKIAogICAgIC8vIENXQm9yZGVyUGl4
ZWwgbXVzdCBiZSBwcmVzZW50IHdoZW4gdGhlIGRlcHRoIGRvZXNuJ3QgbWF0Y2ggdGhlIHBhcmVu
dCdzIG9uZS4KICAgICAvLyBTZWUgaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcveHNl
cnZlci90cmVlL2RpeC93aW5kb3cuYz9pZD14b3JnLXNlcnZlci0xLjE2LjAjbjcwMy4KQEAgLTE2
NCwxMyArMTYyLDEzIEBAIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdyhHZGtXaW5kb3cqIHBhcmVudFdpbmRvdywKICAgICAgICAgR0RLX1ZJU1VB
TF9YVklTVUFMKHZpc3VhbCksCiAgICAgICAgIENXT3ZlcnJpZGVSZWRpcmVjdCB8IENXQ29sb3Jt
YXAgfCBDV0JvcmRlclBpeGVsLAogICAgICAgICAmd2luZG93QXR0cmlidXRlcyk7Ci0gICAgWE1h
cFdpbmRvdyhtX2Rpc3BsYXksIG1fcGFyZW50V2luZG93KTsKKyAgICBYTWFwV2luZG93KG1fZGlz
cGxheSwgbV9wYXJlbnRXaW5kb3cuZ2V0KCkpOwogCiAgICAgd2luZG93QXR0cmlidXRlcy5ldmVu
dF9tYXNrID0gU3RydWN0dXJlTm90aWZ5TWFzazsKICAgICB3aW5kb3dBdHRyaWJ1dGVzLm92ZXJy
aWRlX3JlZGlyZWN0ID0gRmFsc2U7CiAgICAgLy8gQ3JlYXRlIHRoZSB3aW5kb3cgb2YgYXQgbGFz
dCAxeDEgc2luY2UgWCBkb2Vzbid0IGFsbG93IHRvIGNyZWF0ZSBlbXB0eSB3aW5kb3dzLgogICAg
IG1fd2luZG93ID0gWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksCi0gICAgICAgIG1fcGFyZW50V2lu
ZG93LAorICAgICAgICBtX3BhcmVudFdpbmRvdy5nZXQoKSwKICAgICAgICAgMCwgMCwKICAgICAg
ICAgc3RkOjptYXgoMSwgbV9zaXplLndpZHRoKCkpLAogICAgICAgICBzdGQ6Om1heCgxLCBtX3Np
emUuaGVpZ2h0KCkpLApAQCAtMTgwLDIxICsxNzgsMTkgQEAgUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KEdka1dpbmRvdyogcGFyZW50V2luZG93
LAogICAgICAgICBDb3B5RnJvbVBhcmVudCwKICAgICAgICAgQ1dFdmVudE1hc2ssCiAgICAgICAg
ICZ3aW5kb3dBdHRyaWJ1dGVzKTsKLSAgICBYTWFwV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cp
OworICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSk7CiAKLSAgICBYRnJl
ZUNvbG9ybWFwKG1fZGlzcGxheSwgY29sb3JtYXApOwotCi0gICAgeERhbWFnZU5vdGlmaWVyKCku
YWRkKG1fd2luZG93LCBXVEY6Om1vdmUoZGFtYWdlTm90aWZ5KSk7CisgICAgeERhbWFnZU5vdGlm
aWVyKCkuYWRkKG1fd2luZG93LmdldCgpLCBXVEY6Om1vdmUoZGFtYWdlTm90aWZ5KSk7CiAKICAg
ICB3aGlsZSAoMSkgewogICAgICAgICBYRXZlbnQgZXZlbnQ7Ci0gICAgICAgIFhXaW5kb3dFdmVu
dChtX2Rpc3BsYXksIG1fd2luZG93LCBTdHJ1Y3R1cmVOb3RpZnlNYXNrLCAmZXZlbnQpOwotICAg
ICAgICBpZiAoZXZlbnQudHlwZSA9PSBNYXBOb3RpZnkgJiYgZXZlbnQueG1hcC53aW5kb3cgPT0g
bV93aW5kb3cpCisgICAgICAgIFhXaW5kb3dFdmVudChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgp
LCBTdHJ1Y3R1cmVOb3RpZnlNYXNrLCAmZXZlbnQpOworICAgICAgICBpZiAoZXZlbnQudHlwZSA9
PSBNYXBOb3RpZnkgJiYgZXZlbnQueG1hcC53aW5kb3cgPT0gbV93aW5kb3cuZ2V0KCkpCiAgICAg
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgWFNlbGVjdElucHV0KG1fZGlzcGxheSwgbV93aW5k
b3csIE5vRXZlbnRNYXNrKTsKLSAgICBYQ29tcG9zaXRlUmVkaXJlY3RXaW5kb3cobV9kaXNwbGF5
LCBtX3dpbmRvdywgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOwotICAgIG1fZGFtYWdlID0gWERh
bWFnZUNyZWF0ZShtX2Rpc3BsYXksIG1fd2luZG93LCBYRGFtYWdlUmVwb3J0Tm9uRW1wdHkpOwor
ICAgIFhTZWxlY3RJbnB1dChtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpLCBOb0V2ZW50TWFzayk7
CisgICAgWENvbXBvc2l0ZVJlZGlyZWN0V2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCks
IENvbXBvc2l0ZVJlZGlyZWN0TWFudWFsKTsKKyAgICBtX2RhbWFnZSA9IFhEYW1hZ2VDcmVhdGUo
bV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgWERhbWFnZVJlcG9ydE5vbkVtcHR5KTsKIH0KIAog
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6On5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygp
CkBAIC0yMDQsMTIgKzIwMCwxMiBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6flJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKICAgICBBU1NFUlQobV93aW5kb3cpOwogICAgIEFTU0VS
VChtX3BhcmVudFdpbmRvdyk7CiAKLSAgICB4RGFtYWdlTm90aWZpZXIoKS5yZW1vdmUobV93aW5k
b3cpOworICAgIHhEYW1hZ2VOb3RpZmllcigpLnJlbW92ZShtX3dpbmRvdy5nZXQoKSk7CiAKLSAg
ICBYRGFtYWdlRGVzdHJveShtX2Rpc3BsYXksIG1fZGFtYWdlKTsKLSAgICBYRGVzdHJveVdpbmRv
dyhtX2Rpc3BsYXksIG1fd2luZG93KTsKLSAgICBYRGVzdHJveVdpbmRvdyhtX2Rpc3BsYXksIG1f
cGFyZW50V2luZG93KTsKLSAgICBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgpOworICAg
IC8vIEV4cGxpY2l0IHJlc2V0IHRoZXNlIGJlY2F1c2Ugd2UgbmVlZCB0byBlbnN1cmUgaXQgaGFw
cGVucyBpbiB0aGlzIG9yZGVyLgorICAgIG1fZGFtYWdlLnJlc2V0KCk7CisgICAgbV93aW5kb3cu
cmVzZXQoKTsKKyAgICBtX3BhcmVudFdpbmRvdy5yZXNldCgpOwogfQogCiB2b2lkIFJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTIxOCw3
ICsyMTQsNyBAQCB2b2lkIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUmVzaXplIHRoZSB3aW5k
b3cgdG8gYXQgbGFzdCAxeDEgc2luY2UgWCBkb2Vzbid0IGFsbG93IHRvIGNyZWF0ZSBlbXB0eSB3
aW5kb3dzLgotICAgIFhSZXNpemVXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdywgc3RkOjptYXgo
MSwgc2l6ZS53aWR0aCgpKSwgc3RkOjptYXgoMSwgc2l6ZS5oZWlnaHQoKSkpOworICAgIFhSZXNp
emVXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgc3RkOjptYXgoMSwgc2l6ZS53aWR0
aCgpKSwgc3RkOjptYXgoMSwgc2l6ZS5oZWlnaHQoKSkpOwogICAgIFhGbHVzaChtX2Rpc3BsYXkp
OwogCiAgICAgbV9zaXplID0gc2l6ZTsKQEAgLTIzMiw5ICsyMjgsOCBAQCB2b2lkIFJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93OjpjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgpCiAgICAg
aWYgKCFtX3BpeG1hcCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgWEZyZWVQaXhtYXAobV9kaXNw
bGF5LCBtX3BpeG1hcCk7Ci0gICAgbV9waXhtYXAgPSAwOwogICAgIG1fc3VyZmFjZSA9IG51bGxw
dHI7CisgICAgbV9waXhtYXAucmVzZXQoKTsKIH0KIAogY2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdzo6c3VyZmFjZSgpCkBAIC0yNDcsMjAgKzI0MiwxOSBAQCBjYWly
b19zdXJmYWNlX3QqIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpzdXJmYWNlKCkKIAogICAg
IG1fbmVlZHNOZXdQaXhtYXBBZnRlclJlc2l6ZSA9IGZhbHNlOwogCi0gICAgUGl4bWFwIG5ld1Bp
eG1hcCA9IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKG1fZGlzcGxheSwgbV93aW5kb3cpOwor
ICAgIFhVbmlxdWVQaXhtYXAgbmV3UGl4bWFwKFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKG1f
ZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkpKTsKICAgICBpZiAoIW5ld1BpeG1hcCkgewogICAgICAg
ICBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKICAgICBYV2luZG93QXR0cmlidXRlcyB3aW5kb3dBdHRyaWJ1dGVzOwotICAg
IGlmICghWEdldFdpbmRvd0F0dHJpYnV0ZXMobV9kaXNwbGF5LCBtX3dpbmRvdywgJndpbmRvd0F0
dHJpYnV0ZXMpKSB7CisgICAgaWYgKCFYR2V0V2luZG93QXR0cmlidXRlcyhtX2Rpc3BsYXksIG1f
d2luZG93LmdldCgpLCAmd2luZG93QXR0cmlidXRlcykpIHsKICAgICAgICAgY2xlYW51cFBpeG1h
cEFuZFBpeG1hcFN1cmZhY2UoKTsKLSAgICAgICAgWEZyZWVQaXhtYXAobV9kaXNwbGF5LCBuZXdQ
aXhtYXApOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBuZXdTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9feGxpYl9zdXJmYWNlX2Ny
ZWF0ZShtX2Rpc3BsYXksIG5ld1BpeG1hcCwgd2luZG93QXR0cmlidXRlcy52aXN1YWwsIG1fc2l6
ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBuZXdTdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9feGxpYl9zdXJmYWNlX2NyZWF0ZShtX2Rpc3Bs
YXksIG5ld1BpeG1hcC5nZXQoKSwgd2luZG93QXR0cmlidXRlcy52aXN1YWwsIG1fc2l6ZS53aWR0
aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKIAogICAgIC8vIE52aWRpYSBkcml2ZXJzIHNlZW0gdG8g
cHJlcGFyZSB0aGVpciByZWRpcmVjdGVkIHdpbmRvdyBwaXhtYXAgYXN5bmNocm9ub3VzbHksIHNv
IGZvciBhIGZldyBmcmFjdGlvbnMKICAgICAvLyBvZiBhIHNlY29uZCBhZnRlciBlYWNoIHJlc2l6
ZSwgd2hpbGUgZG9pbmcgY29udGludW91cyByZXNpemluZyAod2hpY2ggY29uc3RhbnRseSBkZXN0
cm95cyBhbmQgY3JlYXRlcwpAQCAtMjc1LDcgKzI2OSw3IEBAIGNhaXJvX3N1cmZhY2VfdCogUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnN1cmZhY2UoKQogICAgIH0KIAogICAgIGNsZWFudXBQ
aXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7Ci0gICAgbV9waXhtYXAgPSBuZXdQaXhtYXA7CisgICAg
bV9waXhtYXAgPSBXVEY6Om1vdmUobmV3UGl4bWFwKTsKICAgICBtX3N1cmZhY2UgPSBuZXdTdXJm
YWNlOwogICAgIHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKaW5k
ZXggM2FhNGZmNS4uODhhN2UwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaApAQCAtMzEsMTEgKzMxLDEy
IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
ZlB0ckNhaXJvLmg+Ci0jaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1hV
bmlxdWVSZXNvdXJjZS5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAKIHR5cGVkZWYgc3RydWN0
IF9HZGtXaW5kb3cgR2RrV2luZG93OwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIERhbWFnZTsKK3R5
cGVkZWYgc3RydWN0IF9YRGlzcGxheSBEaXNwbGF5OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIFdp
bmRvdzsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ0LDcgKzQ1LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IGNy
ZWF0ZShHZGtXaW5kb3cqLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZGFtYWdlTm90aWZ5KTsKICAg
ICB+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coKTsKIAotICAgIFdpbmRvdyB3aW5kb3dJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2luZG93OyB9CisgICAgV2luZG93IHdpbmRvd0lEKCkgY29uc3Qg
eyByZXR1cm4gbV93aW5kb3cuZ2V0KCk7IH0KICAgICB2b2lkIHJlc2l6ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJik7CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKCk7CiAKQEAgLTU0LDEw
ICs1NSwxMCBAQCBwcml2YXRlOgogCiAgICAgRGlzcGxheSogbV9kaXNwbGF5OwogICAgIFdlYkNv
cmU6OkludFNpemUgbV9zaXplOwotICAgIFdpbmRvdyBtX3dpbmRvdzsKLSAgICBXaW5kb3cgbV9w
YXJlbnRXaW5kb3c7Ci0gICAgUGl4bWFwIG1fcGl4bWFwOwotICAgIERhbWFnZSBtX2RhbWFnZTsK
KyAgICBXZWJDb3JlOjpYVW5pcXVlV2luZG93IG1fd2luZG93OworICAgIFdlYkNvcmU6OlhVbmlx
dWVXaW5kb3cgbV9wYXJlbnRXaW5kb3c7CisgICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX3Bp
eG1hcDsKKyAgICBXZWJDb3JlOjpYVW5pcXVlRGFtYWdlIG1fZGFtYWdlOwogICAgIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKICAgICBib29sIG1fbmVlZHNOZXdQaXhtYXBBZnRl
clJlc2l6ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGJlMTFhZGQuLjJjNjM3MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUgIldl
YkhpdFRlc3RSZXN1bHQuaCIKICNlbmRpZgogCisjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEp
CisjaW5jbHVkZSA8V2ViQ29yZS9YVW5pcXVlUmVzb3VyY2UuaD4KKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogY2xhc3MgSFRUUEhlYWRlck1hcDsK
QEAgLTM4OCw3ICszOTIsNyBAQCBwcml2YXRlOgogICAgIE5QX0NHQ29udGV4dCBtX25wQ0dDb250
ZXh0OwogI2VuZGlmCiAjZWxpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKLSAgICBQaXhtYXAg
bV9kcmF3YWJsZTsKKyAgICBXZWJDb3JlOjpYVW5pcXVlUGl4bWFwIG1fZHJhd2FibGU7CiAgICAg
RGlzcGxheSogbV9wbHVnaW5EaXNwbGF5OwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBHdGtXaWRn
ZXQqIG1fcGxhdGZvcm1QbHVnaW5XaWRnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVn
aW5YMTEuY3BwCmluZGV4IDM3ZjQ3OTMuLjhhZGNhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0
c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlYMTEuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1hVbmlxdWVQdHIuaD4KIAogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxndGsvZ3RrLmg+
CkBAIC0xNzUsMTIgKzE3NiwxMCBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBvc3RJ
bml0aWFsaXplV2luZG93bGVzcygpCiAgICAgdmlzdWFsVGVtcGxhdGUuZGVwdGggPSBkZXB0aDsK
ICAgICB2aXN1YWxUZW1wbGF0ZS5jX2NsYXNzID0gVHJ1ZUNvbG9yOwogICAgIGludCBudW1NYXRj
aGluZzsKLSAgICBYVmlzdWFsSW5mbyogdmlzdWFsSW5mbyA9IFhHZXRWaXN1YWxJbmZvKGRpc3Bs
YXksIFZpc3VhbFNjcmVlbk1hc2sgfCBWaXN1YWxEZXB0aE1hc2sgfCBWaXN1YWxDbGFzc01hc2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmlzdWFsVGVt
cGxhdGUsICZudW1NYXRjaGluZyk7CisgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFs
SW5mbyhYR2V0VmlzdWFsSW5mbyhkaXNwbGF5LCBWaXN1YWxTY3JlZW5NYXNrIHwgVmlzdWFsRGVw
dGhNYXNrIHwgVmlzdWFsQ2xhc3NNYXNrLCAmdmlzdWFsVGVtcGxhdGUsICZudW1NYXRjaGluZykp
OwogICAgIEFTU0VSVCh2aXN1YWxJbmZvKTsKLSAgICBWaXN1YWwqIHZpc3VhbCA9IHZpc3VhbElu
Zm9bMF0udmlzdWFsOworICAgIFZpc3VhbCogdmlzdWFsID0gdmlzdWFsSW5mby5nZXQoKVswXS52
aXN1YWw7CiAgICAgQVNTRVJUKHZpc3VhbCk7Ci0gICAgWEZyZWUodmlzdWFsSW5mbyk7CiAKICAg
ICBjYWxsYmFja1N0cnVjdC0+dmlzdWFsID0gdmlzdWFsOwogICAgIGNhbGxiYWNrU3RydWN0LT5j
b2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5LCByb290V2luZG93SUQoKSwgdmlzdWFs
LCBBbGxvY05vbmUpOwpAQCAtMjMyLDEwICsyMzEsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpw
bGF0Zm9ybURlc3Ryb3koKQogICAgIFhGcmVlQ29sb3JtYXAoaG9zdERpc3BsYXksIGNhbGxiYWNr
U3RydWN0LT5jb2xvcm1hcCk7CiAgICAgZGVsZXRlIGNhbGxiYWNrU3RydWN0OwogCi0gICAgaWYg
KG1fZHJhd2FibGUpIHsKLSAgICAgICAgWEZyZWVQaXhtYXAoaG9zdERpc3BsYXksIG1fZHJhd2Fi
bGUpOwotICAgICAgICBtX2RyYXdhYmxlID0gMDsKLSAgICB9CisgICAgbV9kcmF3YWJsZS5yZXNl
dCgpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlmIChtX3BsYXRmb3JtUGx1Z2luV2lkZ2V0
KSB7CkBAIC0yNjIsMTggKzI1OCwxMiBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUdl
b21ldHJ5RGlkQ2hhbmdlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIERpc3BsYXkq
IGRpc3BsYXkgPSB4MTFIb3N0RGlzcGxheSgpOwotICAgIGlmIChtX2RyYXdhYmxlKQotICAgICAg
ICBYRnJlZVBpeG1hcChkaXNwbGF5LCBtX2RyYXdhYmxlKTsKLQotICAgIGlmIChtX3BsdWdpblNp
emUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fZHJhd2FibGUgPSAwOworICAgIG1fZHJhd2FibGUu
cmVzZXQoKTsKKyAgICBpZiAobV9wbHVnaW5TaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIG1fZHJhd2FibGUgPSBYQ3JlYXRlUGl4bWFwKGRpc3BsYXksIHJvb3RX
aW5kb3dJRCgpLCBtX3BsdWdpblNpemUud2lkdGgoKSwgbV9wbHVnaW5TaXplLmhlaWdodCgpLCBk
aXNwbGF5RGVwdGgoKSk7CiAKLSAgICBYU3luYyhkaXNwbGF5LCBmYWxzZSk7IC8vIE1ha2Ugc3Vy
ZSB0aGF0IHRoZSBzZXJ2ZXIga25vd3MgYWJvdXQgdGhlIERyYXdhYmxlLgorICAgIG1fZHJhd2Fi
bGUgPSBYQ3JlYXRlUGl4bWFwKHgxMUhvc3REaXNwbGF5KCksIHJvb3RXaW5kb3dJRCgpLCBtX3Bs
dWdpblNpemUud2lkdGgoKSwgbV9wbHVnaW5TaXplLmhlaWdodCgpLCBkaXNwbGF5RGVwdGgoKSk7
CisgICAgWFN5bmMoeDExSG9zdERpc3BsYXkoKSwgZmFsc2UpOyAvLyBNYWtlIHN1cmUgdGhhdCB0
aGUgc2VydmVyIGtub3dzIGFib3V0IHRoZSBEcmF3YWJsZS4KIH0KIAogdm9pZCBOZXRzY2FwZVBs
dWdpbjo6cGxhdGZvcm1WaXNpYmlsaXR5RGlkQ2hhbmdlKCkKQEAgLTMwNyw3ICsyOTcsNyBAQCB2
b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGlydAogICAgIFhHcmFwaGljc0V4cG9zZUV2ZW50JiBleHBvc2VF
dmVudCA9IHhldmVudC54Z3JhcGhpY3NleHBvc2U7CiAgICAgZXhwb3NlRXZlbnQudHlwZSA9IEdy
YXBoaWNzRXhwb3NlOwogICAgIGV4cG9zZUV2ZW50LmRpc3BsYXkgPSB4MTFIb3N0RGlzcGxheSgp
OwotICAgIGV4cG9zZUV2ZW50LmRyYXdhYmxlID0gbV9kcmF3YWJsZTsKKyAgICBleHBvc2VFdmVu
dC5kcmF3YWJsZSA9IG1fZHJhd2FibGUuZ2V0KCk7CiAKICAgICBJbnRSZWN0IGV4cG9zZWRSZWN0
KGRpcnR5UmVjdCk7CiAgICAgZXhwb3NlRXZlbnQueCA9IGV4cG9zZWRSZWN0LngoKTsKQEAgLTMy
NCwxMSArMzE0LDggQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnQKICAgICAgICAgWFN5bmMobV9w
bHVnaW5EaXNwbGF5LCBmYWxzZSk7CiAKICNpZiBQTEFURk9STShHVEspIHx8IChQTEFURk9STShF
RkwpICYmIFVTRShDQUlSTykpCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gZHJhd2FibGVT
dXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9feGxpYl9zdXJmYWNlX2NyZWF0ZShtX3BsdWdpbkRpc3Bs
YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RyYXdhYmxlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8TlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCo+KG1fbnBXaW5k
b3cud3NfaW5mbyktPnZpc3VhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGx1Z2luU2l6
ZS53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wbHVnaW5TaXplLmhlaWdodCgp
KSk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gZHJhd2FibGVTdXJmYWNlID0gYWRvcHRS
ZWYoY2Fpcm9feGxpYl9zdXJmYWNlX2NyZWF0ZShtX3BsdWdpbkRpc3BsYXksIG1fZHJhd2FibGUu
Z2V0KCksCisgICAgICAgIHN0YXRpY19jYXN0PE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPiht
X25wV2luZG93LndzX2luZm8pLT52aXN1YWwsIG1fcGx1Z2luU2l6ZS53aWR0aCgpLCBtX3BsdWdp
blNpemUuaGVpZ2h0KCkpKTsKICAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogCg==
</data>
<flag name="review"
          id="277549"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252809</attachid>
            <date>2015-05-10 02:56:54 -0700</date>
            <delta_ts>2015-05-10 02:56:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk-xunique.diff</filename>
            <type>text/plain</type>
            <size>56915</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0OGZiN2Q2Li4wYWQ4YWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQg
QEAKKzIwMTUtMDUtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtYMTFdIEFkZCBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVzb3VyY2UgdG8g
YXV0b21hdGljYWxseSBmcmVlIFggcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICBBZGQgWFVuaXF1ZVB0ciBhcyBhIHRlbXBsYXRlIGFsaWFzIG9m
IHN0ZDp1bmlxdWVfcHRyIHRvIGhhbmRsZSBYCisgICAgICAgIHJlc291cmNlcyB1c2luZyBwb2lu
dGVycyBhbmQgWFVuaXF1ZVJlc291cmNlIGFzIGEgbmV3IGNsYXNzIHRvCisgICAgICAgIGhhbmRs
ZSBYIHJlc291cmNlcyB1c2luZyBhIGxvbmcgdW5zaWduZWQgaWRlbnRpZmllci4gVGhpcworICAg
ICAgICBzaW1wbGlmaWVzIHRoZSBjb2RlIGFuZCBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdCB0byBs
ZWFrIFggcmVzb3VyY2VzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEFkZCBuZXcg
ZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyb1gxMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9Y
MTE6OkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMSk6CisgICAgICAgIFJlbW92ZSB0aGUgZGlz
cGxheSBtZW1iZXIsIGFuZCB1c2UgWFVuaXF1ZSBmb3IgUGl4bWFwIGFuZCBHQy4KKyAgICAgICAg
KFdlYkNvcmU6OkJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6fkJhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb1gxMSk6CisgICAgICAgIFJlbW92ZSBjb2RlIHRvIGV4cGxpY2l0bHkgZnJlZSBQaXht
YXAgYW5kIEdDLgorICAgICAgICAoV2ViQ29yZTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDEx
OjpzY3JvbGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9y
ZUJhY2tlbmRDYWlyb1gxMS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENv
bnRleHRHTFguY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVXaW5k
b3dDb250ZXh0KTogVXNlIFhVbmlxdWUgYW5kIHRoZQorICAgICAgICBuZXcgY29uc3RydWN0b3Ig
dGhhdCByZWNlaXZlcyBhIFhJRCwgc2luY2UgdGhlcmUncyBubyBsb25nZXIKKyAgICAgICAgY29u
ZmxpY3Qgd2l0aCB0aGUgb25lIHJlY2VpdmluZyBhIFBidWZmZXIuCisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZmZXJDb250ZXh0KTogVXNlIFhVbmlxdWUgYW5kIHRo
ZQorICAgICAgICBuZXcgY29uc3RydWN0b3IgdGhhdCByZWNlaXZlcyBhIFhVbmlxdWVHTFhQYnVm
ZmVyJiYuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKToKKyAgICAgICAgKFdl
YkNvcmU6OkdMQ29udGV4dEdMWDo6fkdMQ29udGV4dEdMWCk6IFJlbW92ZSBjb2RlIHRvIGV4cGxp
Y2l0bHkKKyAgICAgICAgZnJlZSBYIHJlc291cmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29u
dGV4dEdMWDo6bWFrZUNvbnRleHRDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4
dEdMWDo6Y2Fpcm9EZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpwbGF0
Zm9ybUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRH
TFguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZh
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6OkVH
TFhUcmFuc3BvcnRTdXJmYWNlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTFhUcmFuc3Bv
cnRTdXJmYWNlQ2xpZW50OjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTFhUcmFuc3Bv
cnRTdXJmYWNlQ2xpZW50OjpwcmVwYXJlVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhTdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpHTFhDb25maWdTZWxlY3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnKTogVXNlIFhVbmlxdWUKKyAg
ICAgICAgaW5zdGVhZCBvZiB0aGUgY3VzdG9tIHN0ZDo6dW5pcXVlIFgxMURlbGV0ZXIuCisgICAg
ICAgIChXZWJDb3JlOjpHTFhDb25maWdTZWxlY3Rvcjo6ZmluZE1hdGNoaW5nQ29uZmlnV2l0aFZp
c3VhbElkKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L0dMWFN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0U3VyZmFjZTo6
R0xYVHJhbnNwb3J0U3VyZmFjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R0xYT2ZmU2Ny
ZWVuU3VyZmFjZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYMTFIZWxwZXI6OmNy
ZWF0ZU9mZlNjcmVlbldpbmRvdyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6WDExSGVscGVy
OjpjcmVhdGVQaXhtYXApOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9nbHgvWDExSGVscGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hV
bmlxdWVQdHIuaDogUmVtb3ZlIFgxMURlbGV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpYUHRyRGVs
ZXRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlx
dWVSZXNvdXJjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNl
PFhSZXNvdXJjZTo6Q29sb3JtYXA+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6WFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6RGFtYWdlPjo6ZGVsZXRlWFJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlhVbmlxdWVSZXNvdXJjZTxYUmVzb3VyY2U6OlBpeG1hcD46OmRl
bGV0ZVhSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8WFJlc291
cmNlOjpXaW5kb3c+OjpkZWxldGVYUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1
ZVJlc291cmNlPFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj46OmRlbGV0ZVhSZXNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpHTFhQaXhtYXA+OjpkZWxl
dGVYUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlUmVz
b3VyY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U6OlhVbmlx
dWVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U6Om9wZXJhdG9y
PSk6CisgICAgICAgIChXZWJDb3JlOjpYVW5pcXVlUmVzb3VyY2U6On5YVW5pcXVlUmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6WFVuaXF1ZVJlc291cmNlOjpyZWxlYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlhVbmlx
dWVSZXNvdXJjZTo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpv
cGVyYXRvciEpOgorICAgICAgICAoV2ViQ29yZTo6WFVuaXF1ZVJlc291cmNlOjpvcGVyYXRvciBV
bnNwZWNpZmllZEJvb2xUeXBlKik6CisKIDIwMTUtMDUtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBOZXR3b3JrIENhY2hlOiBJ
bXBsZW1lbnQgU2hhcmVhYmxlUmVzb3VyY2UgZm9yIFNvdXAgYW5kIGVuYWJsZSBpdCBmb3IgR1RL
IHBsYXRmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDc2NGIzMzYuLmIwNTIwZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xOTcsNiArMTk3LDcgQEAgbGlzdChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL1VwZGF0ZUF0bGFzLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3Jt
RGlzcGxheVgxMS5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZVJlc291cmNl
LmNwcAogCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGI1ZDA5YjcuLjFmOWYzYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC0xMjYsNiArMTI2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERh
dGEuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNw
cAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlUmVzb3VyY2UuY3BwCiAKICAgICBw
bGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9FdmVudExvb3BHdGsu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9C
YWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcAppbmRleCA0YzA4
NzJmLi43Yjg2MzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMS5j
cHAKQEAgLTI2LDE3ICsyNiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUJhY2tpbmdT
dG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkq
IGRpc3BsYXksIHVuc2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lELCBWaXN1YWwqIHZpc3VhbCwgaW50
IGRlcHRoLCBjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK0Jh
Y2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMTo6QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKHVu
c2lnbmVkIGxvbmcgcm9vdFdpbmRvd0lELCBWaXN1YWwqIHZpc3VhbCwgaW50IGRlcHRoLCBjb25z
dCBJbnRTaXplJiBzaXplLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKICAgICA6IEJhY2tpbmdT
dG9yZUJhY2tlbmRDYWlybyhzaXplKQotICAgICwgbV9kaXNwbGF5KGRpc3BsYXkpCiB7CiAgICAg
SW50U2l6ZSBzY2FsZWRTaXplID0gc2l6ZTsKICAgICBzY2FsZWRTaXplLnNjYWxlKGRldmljZVNj
YWxlRmFjdG9yKTsKIAotICAgIG1fcGl4bWFwID0gWENyZWF0ZVBpeG1hcChtX2Rpc3BsYXksIHJv
b3RXaW5kb3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhlaWdodCgpLCBkZXB0
aCk7Ci0gICAgbV9nYyA9IFhDcmVhdGVHQyhtX2Rpc3BsYXksIG1fcGl4bWFwLCAwLCBudWxscHRy
KTsKKyAgICBhdXRvKiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0
Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CisgICAgbV9waXhtYXAgPSBY
Q3JlYXRlUGl4bWFwKGRpc3BsYXksIHJvb3RXaW5kb3dJRCwgc2NhbGVkU2l6ZS53aWR0aCgpLCBz
Y2FsZWRTaXplLmhlaWdodCgpLCBkZXB0aCk7CisgICAgbV9nYy5yZXNldChYQ3JlYXRlR0MoZGlz
cGxheSwgbV9waXhtYXAuZ2V0KCksIDAsIG51bGxwdHIpKTsKIAotICAgIG1fc3VyZmFjZSA9IGFk
b3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9kaXNwbGF5LCBtX3BpeG1hcCwgdmlz
dWFsLCBzY2FsZWRTaXplLndpZHRoKCksIHNjYWxlZFNpemUuaGVpZ2h0KCkpKTsKKyAgICBtX3N1
cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKGRpc3BsYXksIG1fcGl4
bWFwLmdldCgpLCB2aXN1YWwsIHNjYWxlZFNpemUud2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWlnaHQo
KSkpOwogICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKG1fc3VyZmFjZS5nZXQoKSwgZGV2
aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKTsKIH0KIApAQCAtNDQsOCArNDQsNiBA
QCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE6On5CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9Y
MTEoKQogewogICAgIC8vIFRoZSBwaXhtYXAgbmVlZHMgdG8gZXhpc3Qgd2hlbiB0aGUgc3VyZmFj
ZSBpcyBkZXN0cm95ZWQsIHNvIGJlZ2luIGJ5IGNsZWFyaW5nIGl0LgogICAgIG1fc3VyZmFjZS5j
bGVhcigpOwotICAgIFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbV9waXhtYXApOwotICAgIFhGcmVl
R0MobV9kaXNwbGF5LCBtX2djKTsKIH0KIAogdm9pZCBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9Y
MTE6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3Jv
bGxPZmZzZXQpCkBAIC02NSw3ICs2Myw3IEBAIHZvaWQgQmFja2luZ1N0b3JlQmFja2VuZENhaXJv
WDExOjpzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6CiAgICAg
c2NhbGVkU2Nyb2xsT2Zmc2V0LnNjYWxlKHhTY2FsZSwgeVNjYWxlKTsKIAogICAgIGNhaXJvX3N1
cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsKLSAgICBYQ29weUFyZWEobV9kaXNwbGF5LCBt
X3BpeG1hcCwgbV9waXhtYXAsIG1fZ2MsCisgICAgWENvcHlBcmVhKGRvd25jYXN0PFBsYXRmb3Jt
RGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBt
X3BpeG1hcC5nZXQoKSwgbV9waXhtYXAuZ2V0KCksIG1fZ2MuZ2V0KCksCiAgICAgICAgIHRhcmdl
dFJlY3QueCgpIC0gc2NhbGVkU2Nyb2xsT2Zmc2V0LndpZHRoKCksIHRhcmdldFJlY3QueSgpIC0g
c2NhbGVkU2Nyb2xsT2Zmc2V0LmhlaWdodCgpLAogICAgICAgICB0YXJnZXRSZWN0LndpZHRoKCks
IHRhcmdldFJlY3QuaGVpZ2h0KCksIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSk7CiAg
ICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIHRh
cmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRS
ZWN0LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmgKaW5k
ZXggMWRlMGQ4NC4uMzQ0MTgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJv
WDExLmgKQEAgLTIyLDIxICsyMiwyMSBAQAogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyby5oIgogCiAjaWYgVVNFKENBSVJPKSAmJiBQTEFURk9STShYMTEpCi0jaW5jbHVkZSA8WDEx
L1hsaWIuaD4KKyNpbmNsdWRlICJYVW5pcXVlUHRyLmgiCisjaW5jbHVkZSAiWFVuaXF1ZVJlc291
cmNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmFja2luZ1N0b3JlQmFja2Vu
ZENhaXJvWDExIGZpbmFsIDogcHVibGljIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybyB7CiBwdWJs
aWM6Ci0gICAgQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExKERpc3BsYXkqLCB1bnNpZ25lZCBs
b25nIHJvb3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRTaXplJiwgZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMSh1
bnNpZ25lZCBsb25nIHJvb3RXaW5kb3dJRCwgVmlzdWFsKiwgaW50IGRlcHRoLCBjb25zdCBJbnRT
aXplJiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIHZpcnR1YWwgfkJhY2tpbmdTdG9y
ZUJhY2tlbmRDYWlyb1gxMSgpOwogCiAgICAgdm9pZCBzY3JvbGwoY29uc3QgSW50UmVjdCYgc2Ny
b2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKLSAgICBEaXNwbGF5KiBtX2Rpc3BsYXk7Ci0gICAgUGl4bWFwIG1fcGl4bWFwOwotICAgIEdD
IG1fZ2M7CisgICAgWFVuaXF1ZVBpeG1hcCBtX3BpeG1hcDsKKyAgICBYVW5pcXVlR0MgbV9nYzsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggZjc0NjdhNy4uZjA1
YjZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dM
Q29udGV4dEdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4
L0dMQ29udGV4dEdMWC5jcHAKQEAgLTQzLDI1ICs0MywxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywg
R0xDbwogICAgIHZpc3VhbEluZm8udmlzdWFsaWQgPSBYVmlzdWFsSURGcm9tVmlzdWFsKGF0dHJp
YnV0ZXMudmlzdWFsKTsKIAogICAgIGludCBudW1SZXR1cm5lZCA9IDA7Ci0gICAgWFZpc3VhbElu
Zm8qIHZpc3VhbEluZm9MaXN0ID0gWEdldFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsSURNYXNr
LCAmdmlzdWFsSW5mbywgJm51bVJldHVybmVkKTsKLQotICAgIEdMWENvbnRleHQgZ2x4U2hhcmlu
Z0NvbnRleHQgPSBzaGFyaW5nQ29udGV4dCA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEdMWCo+KHNo
YXJpbmdDb250ZXh0KS0+bV9jb250ZXh0IDogMDsKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBn
bFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9MaXN0LCBnbHhTaGFyaW5nQ29udGV4
dCwgVHJ1ZSk7Ci0gICAgWEZyZWUodmlzdWFsSW5mb0xpc3QpOworICAgIFhVbmlxdWVQdHI8WFZp
c3VhbEluZm8+IHZpc3VhbEluZm9MaXN0KFhHZXRWaXN1YWxJbmZvKGRpc3BsYXksIFZpc3VhbElE
TWFzaywgJnZpc3VhbEluZm8sICZudW1SZXR1cm5lZCkpOwogCisgICAgR0xYQ29udGV4dCBnbHhT
aGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xY
Kj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQuZ2V0KCkgOiBudWxscHRyOworICAgIFhVbmlx
dWVHTFhDb250ZXh0IGNvbnRleHQoZ2xYQ3JlYXRlQ29udGV4dChkaXNwbGF5LCB2aXN1YWxJbmZv
TGlzdC5nZXQoKSwgZ2x4U2hhcmluZ0NvbnRleHQsIFRydWUpKTsKICAgICBpZiAoIWNvbnRleHQp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gR0xYUGJ1ZmZlciBhbmQgWElEIGFy
ZSBib3RoIHRoZSBzYW1lIHR5cGVzIHVuZGVybmVhdGgsIHNvIHdlIGhhdmUgdG8gc2hhcmUKLSAg
ICAvLyBhIGNvbnN0cnVjdG9yIGhlcmUgd2l0aCB0aGUgd2luZG93IHBhdGguCi0gICAgYXV0byBj
b250ZXh0V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihjb250ZXh0KTsK
LSAgICBjb250ZXh0V3JhcHBlci0+bV93aW5kb3cgPSB3aW5kb3c7Ci0gICAgcmV0dXJuIFdURjo6
bW92ZShjb250ZXh0V3JhcHBlcik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250
ZXh0R0xYPihXVEY6Om1vdmUoY29udGV4dCksIHdpbmRvdyk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCkKIHsKLSAgICBpbnQgZmJDb25maWdBdHRyaWJ1dGVzW10gPSB7
CisgICAgc3RhdGljIGNvbnN0IGludCBmYkNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHsKICAgICAgICAg
R0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9QQlVGRkVSX0JJVCwKICAgICAgICAgR0xYX1JFTkRFUl9U
WVBFLCBHTFhfUkdCQV9CSVQsCiAgICAgICAgIEdMWF9SRURfU0laRSwgMSwKQEAgLTc0LDMyICs2
OCwyMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0
ZVBidWZmZXJDb250ZXh0KEdMWENvbnRleHQgc2hhcgogCiAgICAgaW50IHJldHVybmVkRWxlbWVu
dHM7CiAgICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4o
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwotICAgIEdMWEZCQ29u
ZmlnKiBjb25maWdzID0gZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRy
aWJ1dGVzLCAmcmV0dXJuZWRFbGVtZW50cyk7Ci0gICAgaWYgKCFyZXR1cm5lZEVsZW1lbnRzKSB7
Ci0gICAgICAgIFhGcmVlKGNvbmZpZ3MpOworICAgIFhVbmlxdWVQdHI8R0xYRkJDb25maWc+IGNv
bmZpZ3MoZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgMCwgZmJDb25maWdBdHRyaWJ1dGVzLCAm
cmV0dXJuZWRFbGVtZW50cykpOworICAgIGlmICghcmV0dXJuZWRFbGVtZW50cykKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQogCiAgICAgLy8gV2Ugd2lsbCBiZSByZW5kZXJpbmcgdG8g
YSB0ZXh0dXJlLCBzbyBvdXIgcGJ1ZmZlciBkb2VzIG5vdCBuZWVkIHRvIGJlIGxhcmdlLgogICAg
IHN0YXRpYyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgR0xYX1BCVUZGRVJfV0lE
VEgsIDEsIEdMWF9QQlVGRkVSX0hFSUdIVCwgMSwgMCB9OwotICAgIEdMWFBidWZmZXIgcGJ1ZmZl
ciA9IGdsWENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmlnc1swXSwgcGJ1ZmZlckF0dHJpYnV0
ZXMpOwotICAgIGlmICghcGJ1ZmZlcikgewotICAgICAgICBYRnJlZShjb25maWdzKTsKKyAgICBY
VW5pcXVlR0xYUGJ1ZmZlciBwYnVmZmVyKGdsWENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmln
cy5nZXQoKVswXSwgcGJ1ZmZlckF0dHJpYnV0ZXMpKTsKKyAgICBpZiAoIXBidWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWENvbnRleHQgY29udGV4dCA9IGds
WENyZWF0ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmlnc1swXSwgR0xYX1JHQkFfVFlQRSwgc2hh
cmluZ0NvbnRleHQsIEdMX1RSVUUpOwotICAgIFhGcmVlKGNvbmZpZ3MpOwotICAgIGlmICghY29u
dGV4dCkgewotICAgICAgICBnbFhEZXN0cm95UGJ1ZmZlcihkaXNwbGF5LCBwYnVmZmVyKTsKKyAg
ICBYVW5pcXVlR0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZU5ld0NvbnRleHQoZGlzcGxheSwg
Y29uZmlncy5nZXQoKVswXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0NvbnRleHQsIEdMX1RSVUUp
KTsKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAot
ICAgIC8vIEdMWFBidWZmZXIgYW5kIFhJRCBhcmUgYm90aCB0aGUgc2FtZSB0eXBlcyB1bmRlcm5l
YXRoLCBzbyB3ZSBoYXZlIHRvIHNoYXJlCi0gICAgLy8gYSBjb25zdHJ1Y3RvciBoZXJlIHdpdGgg
dGhlIHdpbmRvdyBwYXRoLgotICAgIGF1dG8gY29udGV4dFdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEdMQ29udGV4dEdMWD4oY29udGV4dCk7Ci0gICAgY29udGV4dFdyYXBwZXItPm1fcGJ1ZmZl
ciA9IHBidWZmZXI7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0V3JhcHBlcik7CisgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEY6Om1vdmUoY29udGV4dCks
IFdURjo6bW92ZShwYnVmZmVyKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+
IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGl4bWFwQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250
ZXh0KQpAQCAtMTE0LDMxICs5NywyMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBH
TENvbnRleHRHTFg6OmNyZWF0ZVBpeG1hcENvbnRleHQoR0xYQ29udGV4dCBzaGFyaQogICAgIH07
CiAKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7Ci0gICAgWFZpc3VhbElu
Zm8qIHZpc3VhbEluZm8gPSBnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihk
aXNwbGF5KSwgdmlzdWFsQXR0cmlidXRlcyk7CisgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4g
dmlzdWFsSW5mbyhnbFhDaG9vc2VWaXN1YWwoZGlzcGxheSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5
KSwgdmlzdWFsQXR0cmlidXRlcykpOwogICAgIGlmICghdmlzdWFsSW5mbykKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBnbFhDcmVhdGVDb250ZXh0
KGRpc3BsYXksIHZpc3VhbEluZm8sIHNoYXJpbmdDb250ZXh0LCBHTF9UUlVFKTsKLSAgICBpZiAo
IWNvbnRleHQpIHsKLSAgICAgICAgWEZyZWUodmlzdWFsSW5mbyk7CisgICAgWFVuaXF1ZUdMWENv
bnRleHQgY29udGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm8uZ2V0KCks
IHNoYXJpbmdDb250ZXh0LCBHTF9UUlVFKSk7CisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9CiAKLSAgICBQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1h
cChkaXNwbGF5LCBEZWZhdWx0Um9vdFdpbmRvdyhkaXNwbGF5KSwgMSwgMSwgdmlzdWFsSW5mby0+
ZGVwdGgpOwotICAgIGlmICghcGl4bWFwKSB7Ci0gICAgICAgIFhGcmVlKHZpc3VhbEluZm8pOwor
ICAgIFhVbmlxdWVQaXhtYXAgcGl4bWFwKFhDcmVhdGVQaXhtYXAoZGlzcGxheSwgRGVmYXVsdFJv
b3RXaW5kb3coZGlzcGxheSksIDEsIDEsIHZpc3VhbEluZm8tPmRlcHRoKSk7CisgICAgaWYgKCFw
aXhtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIAotICAgIEdMWFBpeG1hcCBn
bHhQaXhtYXAgPSBnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mbywgcGl4bWFw
KTsKLSAgICBpZiAoIWdseFBpeG1hcCkgewotICAgICAgICBYRnJlZVBpeG1hcChkaXNwbGF5LCBw
aXhtYXApOwotICAgICAgICBYRnJlZSh2aXN1YWxJbmZvKTsKKyAgICBYVW5pcXVlR0xYUGl4bWFw
IGdseFBpeG1hcChnbFhDcmVhdGVHTFhQaXhtYXAoZGlzcGxheSwgdmlzdWFsSW5mby5nZXQoKSwg
cGl4bWFwLmdldCgpKSk7CisgICAgaWYgKCFnbHhQaXhtYXApCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIH0KIAotICAgIFhGcmVlKHZpc3VhbEluZm8pOwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEdMQ29udGV4dEdMWD4oY29udGV4dCwgcGl4bWFwLCBnbHhQaXhtYXApOworICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEdMWD4oV1RGOjptb3ZlKGNvbnRleHQp
LCBXVEY6Om1vdmUocGl4bWFwKSwgV1RGOjptb3ZlKGdseFBpeG1hcCkpOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElEIHdp
bmRvdywgR0xDb250ZXh0KiBzaGFyaW5nQ29udGV4dCkKQEAgLTE1Miw3ICsxMjcsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQoWElE
IHdpbmRvdywgR0xDb250ZXh0KgogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0gc2hhcmluZ0NvbnRl
eHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRHTFgqPihzaGFyaW5nQ29udGV4dCktPm1fY29udGV4
dCA6IDA7CisgICAgR0xYQ29udGV4dCBnbHhTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0
ID8gc3RhdGljX2Nhc3Q8R0xDb250ZXh0R0xYKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQu
Z2V0KCkgOiBudWxscHRyOwogICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRv
d0NvbnRleHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBudWxscHRyOwogICAgIGlmICghY29u
dGV4dCkKICAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGdseFNoYXJpbmdD
b250ZXh0KTsKQEAgLTE2NCwyMyArMTM5LDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRH
TFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBHTENvbnRleHQqCiAg
ICAgcmV0dXJuIFdURjo6bW92ZShjb250ZXh0KTsKIH0KIAotR0xDb250ZXh0R0xYOjpHTENvbnRl
eHRHTFgoR0xYQ29udGV4dCBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAg
LCBtX3dpbmRvdygwKQotICAgICwgbV9wYnVmZmVyKDApCi0gICAgLCBtX3BpeG1hcCgwKQotICAg
ICwgbV9nbHhQaXhtYXAoMCkKLSAgICAsIG1fY2Fpcm9EZXZpY2UoMCkKK0dMQ29udGV4dEdMWDo6
R0xDb250ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYgY29udGV4dCwgWElEIHdpbmRvdykKKyAg
ICA6IG1fY29udGV4dChXVEY6Om1vdmUoY29udGV4dCkpCisgICAgLCBtX3dpbmRvdyh3aW5kb3cp
CiB7CiB9CiAKLUdMQ29udGV4dEdMWDo6R0xDb250ZXh0R0xYKEdMWENvbnRleHQgY29udGV4dCwg
UGl4bWFwIHBpeG1hcCwgR0xYUGl4bWFwIGdseFBpeG1hcCkKLSAgICA6IG1fY29udGV4dChjb250
ZXh0KQotICAgICwgbV93aW5kb3coMCkKLSAgICAsIG1fcGJ1ZmZlcigwKQotICAgICwgbV9waXht
YXAocGl4bWFwKQotICAgICwgbV9nbHhQaXhtYXAoZ2x4UGl4bWFwKQotICAgICwgbV9jYWlyb0Rl
dmljZSgwKQorR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBj
b250ZXh0LCBYVW5pcXVlR0xYUGJ1ZmZlciYmIHBidWZmZXIpCisgICAgOiBtX2NvbnRleHQoV1RG
Ojptb3ZlKGNvbnRleHQpKQorICAgICwgbV9wYnVmZmVyKFdURjo6bW92ZShwYnVmZmVyKSkKK3sK
K30KKworR0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiBjb250
ZXh0LCBYVW5pcXVlUGl4bWFwJiYgcGl4bWFwLCBYVW5pcXVlR0xYUGl4bWFwJiYgZ2x4UGl4bWFw
KQorICAgIDogbV9jb250ZXh0KFdURjo6bW92ZShjb250ZXh0KSkKKyAgICAsIG1fcGl4bWFwKFdU
Rjo6bW92ZShwaXhtYXApKQorICAgICwgbV9nbHhQaXhtYXAoV1RGOjptb3ZlKGdseFBpeG1hcCkp
CiB7CiB9CiAKQEAgLTE4OSwyNiArMTYzLDEyIEBAIEdMQ29udGV4dEdMWDo6fkdMQ29udGV4dEdM
WCgpCiAgICAgaWYgKG1fY2Fpcm9EZXZpY2UpCiAgICAgICAgIGNhaXJvX2RldmljZV9kZXN0cm95
KG1fY2Fpcm9EZXZpY2UpOwogCi0gICAgRGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRm
b3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgp
OwogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgLy8gVGhpcyBtYXkgYmUgbmVjZXNzYXJ5
IHRvIHByZXZlbnQgY3Jhc2hlcyB3aXRoIE5WaWRpYSdzIGNsb3NlZCBzb3VyY2UgZHJpdmVycy4g
T3JpZ2luYWxseQogICAgICAgICAvLyBmcm9tIE1vemlsbGEncyAzRCBjYW52YXMgaW1wbGVtZW50
YXRpb24gYXQ6IGh0dHA6Ly9iaXRidWNrZXQub3JnL2lsbWFyaS9jYW52YXMzZC8KKyAgICAgICAg
RGlzcGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpOwogICAgICAgICBnbEJpbmRGcmFtZWJ1
ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIDApOwogICAgICAgICBnbFhNYWtlQ3VycmVudChk
aXNwbGF5LCBOb25lLCBOb25lKTsKLSAgICAgICAgZ2xYRGVzdHJveUNvbnRleHQoZGlzcGxheSwg
bV9jb250ZXh0KTsKLSAgICB9Ci0KLSAgICBpZiAobV9wYnVmZmVyKSB7Ci0gICAgICAgIGdsWERl
c3Ryb3lQYnVmZmVyKGRpc3BsYXksIG1fcGJ1ZmZlcik7Ci0gICAgICAgIG1fcGJ1ZmZlciA9IDA7
Ci0gICAgfQotICAgIGlmIChtX2dseFBpeG1hcCkgewotICAgICAgICBnbFhEZXN0cm95R0xYUGl4
bWFwKGRpc3BsYXksIG1fZ2x4UGl4bWFwKTsKLSAgICAgICAgbV9nbHhQaXhtYXAgPSAwOwotICAg
IH0KLSAgICBpZiAobV9waXhtYXApIHsKLSAgICAgICAgWEZyZWVQaXhtYXAoZGlzcGxheSwgbV9w
aXhtYXApOwotICAgICAgICBtX3BpeG1hcCA9IDA7CiAgICAgfQogfQogCkBAIC0yMzcsMTcgKzE5
NywxNyBAQCBib29sIEdMQ29udGV4dEdMWDo6bWFrZUNvbnRleHRDdXJyZW50KCkKICAgICBBU1NF
UlQobV9jb250ZXh0ICYmIChtX3dpbmRvdyB8fCBtX3BidWZmZXIgfHwgbV9nbHhQaXhtYXApKTsK
IAogICAgIEdMQ29udGV4dDo6bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgaWYgKGdsWEdldEN1
cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0KQorICAgIGlmIChnbFhHZXRDdXJyZW50Q29udGV4
dCgpID09IG1fY29udGV4dC5nZXQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBEaXNw
bGF5KiBkaXNwbGF5ID0gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3Bs
YXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7CiAgICAgaWYgKG1fd2luZG93KQotICAgICAg
ICByZXR1cm4gZ2xYTWFrZUN1cnJlbnQoZGlzcGxheSwgbV93aW5kb3csIG1fY29udGV4dCk7Cisg
ICAgICAgIHJldHVybiBnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX3dpbmRvdywgbV9jb250ZXh0
LmdldCgpKTsKIAogICAgIGlmIChtX3BidWZmZXIpCi0gICAgICAgIHJldHVybiBnbFhNYWtlQ3Vy
cmVudChkaXNwbGF5LCBtX3BidWZmZXIsIG1fY29udGV4dCk7CisgICAgICAgIHJldHVybiBnbFhN
YWtlQ3VycmVudChkaXNwbGF5LCBtX3BidWZmZXIuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiAK
LSAgICByZXR1cm4gOjpnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX2dseFBpeG1hcCwgbV9jb250
ZXh0KTsKKyAgICByZXR1cm4gOjpnbFhNYWtlQ3VycmVudChkaXNwbGF5LCBtX2dseFBpeG1hcC5n
ZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKIH0KIAogdm9pZCBHTENvbnRleHRHTFg6OnN3YXBCdWZm
ZXJzKCkKQEAgLTI2Nyw3ICsyMjcsNyBAQCBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0R0xYOjpj
YWlyb0RldmljZSgpCiAgICAgICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOwogCiAjaWYgRU5BQkxF
KEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBtX2NhaXJvRGV2aWNlID0gY2Fpcm9fZ2x4X2Rl
dmljZV9jcmVhdGUoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6
OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCksIG1fY29udGV4dCk7CisgICAgbV9jYWlyb0Rldmlj
ZSA9IGNhaXJvX2dseF9kZXZpY2VfY3JlYXRlKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4o
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLm5hdGl2ZSgpLCBtX2NvbnRleHQuZ2V0
KCkpOwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9jYWlyb0RldmljZTsKQEAgLTI3Niw3ICsyMzYs
NyBAQCBjYWlyb19kZXZpY2VfdCogR0xDb250ZXh0R0xYOjpjYWlyb0RldmljZSgpCiAjaWYgRU5B
QkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdMQ29u
dGV4dEdMWDo6cGxhdGZvcm1Db250ZXh0KCkKIHsKLSAgICByZXR1cm4gbV9jb250ZXh0OworICAg
IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5oCmluZGV4IDY5MzRmMjQu
LjY0N2Y5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ds
eC9HTENvbnRleHRHTFguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
bHgvR0xDb250ZXh0R0xYLmgKQEAgLTIzLDEyICsyMywxMCBAQAogI2lmIFVTRShHTFgpCiAKICNp
bmNsdWRlICJHTENvbnRleHQuaCIKKyNpbmNsdWRlICJYVW5pcXVlUHRyLmgiCisjaW5jbHVkZSAi
WFVuaXF1ZVJlc291cmNlLmgiCiAKLXR5cGVkZWYgc3RydWN0IF9fR0xYY29udGV4dFJlYyogR0xY
Q29udGV4dDsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBHTFhQYnVmZmVyOwotdHlwZWRlZiB1bnNp
Z25lZCBsb25nIEdMWFBpeG1hcDsKIHR5cGVkZWYgdW5zaWduZWQgY2hhciBHTHVieXRlOwotdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIFBpeG1hcDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBYSUQ7CiB0
eXBlZGVmIHZvaWQqIENvbnRleHRLZXlUeXBlOwogCkBAIC00MCw4ICszOCw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlQ29udGV4dChY
SUQgd2luZG93LCBHTENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlV2luZG93Q29udGV4dChYSUQgd2luZG93LCBH
TENvbnRleHQqIHNoYXJpbmdDb250ZXh0KTsKIAotICAgIEdMQ29udGV4dEdMWChHTFhDb250ZXh0
KTsKLSAgICBHTENvbnRleHRHTFgoR0xYQ29udGV4dCwgUGl4bWFwLCBHTFhQaXhtYXApOworICAg
IEdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmLCBYSUQpOworICAgIEdMQ29udGV4dEdM
WChYVW5pcXVlR0xYQ29udGV4dCYmLCBYVW5pcXVlR0xYUGJ1ZmZlciYmKTsKKyAgICBHTENvbnRl
eHRHTFgoWFVuaXF1ZUdMWENvbnRleHQmJiwgWFVuaXF1ZVBpeG1hcCYmLCBYVW5pcXVlR0xYUGl4
bWFwJiYpOwogICAgIHZpcnR1YWwgfkdMQ29udGV4dEdMWCgpOwogICAgIHZpcnR1YWwgYm9vbCBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKTsKQEAg
LTU5LDEyICs1OCwxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0R0xYPiBjcmVhdGVQYnVmZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0
KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlUGl4bWFw
Q29udGV4dChHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KTsKIAotICAgIEdMWENvbnRleHQgbV9j
b250ZXh0OwotICAgIFhJRCBtX3dpbmRvdzsKLSAgICBHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKLSAg
ICBQaXhtYXAgbV9waXhtYXA7Ci0gICAgR0xYUGl4bWFwIG1fZ2x4UGl4bWFwOwotICAgIGNhaXJv
X2RldmljZV90KiBtX2NhaXJvRGV2aWNlOworICAgIFhVbmlxdWVHTFhDb250ZXh0IG1fY29udGV4
dDsKKyAgICBYSUQgbV93aW5kb3cgeyAwIH07CisgICAgWFVuaXF1ZUdMWFBidWZmZXIgbV9wYnVm
ZmVyOworICAgIFhVbmlxdWVQaXhtYXAgbV9waXhtYXA7CisgICAgWFVuaXF1ZUdMWFBpeG1hcCBt
X2dseFBpeG1hcDsKKyAgICBjYWlyb19kZXZpY2VfdCogbV9jYWlyb0RldmljZSB7IG51bGxwdHIg
fTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuY3Bw
CmluZGV4IDYxOGZkYzMuLmNiNzc1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhTdXJmYWNlLmNwcApAQCAt
MTQxLDcgKzE0MSw2IEBAIHZvaWQgRUdMUGl4bWFwU3VyZmFjZTo6ZGVzdHJveSgpCiAKIEVHTFhU
cmFuc3BvcnRTdXJmYWNlQ2xpZW50OjpFR0xYVHJhbnNwb3J0U3VyZmFjZUNsaWVudChjb25zdCBQ
bGF0Zm9ybUJ1ZmZlckhhbmRsZSBoYW5kbGUsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaGFz
QWxwaGEpCiAgICAgOiBHTFRyYW5zcG9ydFN1cmZhY2VDbGllbnQoKQotICAgICwgbV9pbWFnZSgw
KQogICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX3RvdGFsQnl0ZXMoMCkKIHsKQEAgLTE5Nywx
MSArMTk2LDcgQEAgdm9pZCBFR0xYVHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6ZGVzdHJveSgpCiAg
ICAgfQogCiAgICAgZWdsV2FpdEdMKCk7Ci0KLSAgICBpZiAobV9pbWFnZSkgewotICAgICAgICBY
RGVzdHJveUltYWdlKG1faW1hZ2UpOwotICAgICAgICBtX2ltYWdlID0gMDsKLSAgICB9CisgICAg
bV9pbWFnZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgRUdMWFRyYW5zcG9ydFN1cmZhY2VDbGllbnQ6
OnByZXBhcmVUZXh0dXJlKCkKQEAgLTIxNCw3ICsyMDksNyBAQCB2b2lkIEVHTFhUcmFuc3BvcnRT
dXJmYWNlQ2xpZW50OjpwcmVwYXJlVGV4dHVyZSgpCiAgICAgfQogCiAgICAgLy8gRmFsbGJhY2sg
dG8gdXNlIFhJbWFnZSBpbiBjYXNlIEVHTEltYWdlIGFuZCBUZXh0dXJlVG9QaXhtYXAgYXJlIG5v
dCBzdXBwb3J0ZWQuCi0gICAgbV9pbWFnZSA9IFhHZXRJbWFnZShOYXRpdmVXcmFwcGVyOjpuYXRp
dmVEaXNwbGF5KCksIG1faGFuZGxlLCAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdo
dCgpLCBBbGxQbGFuZXMsIFpQaXhtYXApOworICAgIG1faW1hZ2UucmVzZXQoWEdldEltYWdlKE5h
dGl2ZVdyYXBwZXI6Om5hdGl2ZURpc3BsYXkoKSwgbV9oYW5kbGUsIDAsIDAsIG1fc2l6ZS53aWR0
aCgpLCBtX3NpemUuaGVpZ2h0KCksIEFsbFBsYW5lcywgWlBpeG1hcCkpOwogCiAjaWYgVVNFKE9Q
RU5HTF9FU18yKQogICAgIGlmIChtX2Zvcm1hdCAhPSBHcmFwaGljc0NvbnRleHQzRDo6QkdSQSkg
ewpAQCAtMjI1LDEwICsyMjAsNyBAQCB2b2lkIEVHTFhUcmFuc3BvcnRTdXJmYWNlQ2xpZW50Ojpw
cmVwYXJlVGV4dHVyZSgpCiAKICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgbV9m
b3JtYXQsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDAsIG1fZm9ybWF0LCBHTF9V
TlNJR05FRF9CWVRFLCBtX2ltYWdlLT5kYXRhKTsKIAotICAgIGlmIChtX2ltYWdlKSB7Ci0gICAg
ICAgIFhEZXN0cm95SW1hZ2UobV9pbWFnZSk7Ci0gICAgICAgIG1faW1hZ2UgPSAwOwotICAgIH0K
KyAgICBtX2ltYWdlID0gbnVsbHB0cjsKIH0KIAogRUdMVGV4dHVyZUZyb21QaXhtYXA6OkVHTFRl
eHR1cmVGcm9tUGl4bWFwKGNvbnN0IE5hdGl2ZVBpeG1hcCBoYW5kbGUsIGJvb2wgaGFzQWxwaGEs
IEVHTENvbmZpZyBjb25maWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCmluZGV4IDk2YzhhNjYuLmI0
MjFlMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL2VnbC9FR0xYU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2VnbC9FR0xYU3VyZmFjZS5oCkBAIC0yOSwxMSArMjksMTEgQEAKICNpZiBQ
TEFURk9STShYMTEpICYmIFVTRShFR0wpICYmIFVTRShHUkFQSElDU19TVVJGQUNFKQogCiAjaW5j
bHVkZSAiRUdMU3VyZmFjZS5oIgorI2luY2x1ZGUgIlhVbmlxdWVQdHIuaCIKICNpbmNsdWRlIDxn
bHgvWDExSGVscGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBYMTFIZWxw
ZXIgTmF0aXZlV3JhcHBlcjsKIHR5cGVkZWYgUGl4bWFwIE5hdGl2ZVBpeG1hcDsKIAogLy8gQ29u
dGVudHMgb2YgdGhlIHN1cmZhY2UgYXJlIGJhY2tlZCBieSBuYXRpdmUgd2luZG93LgpAQCAtNzQs
NyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLSAgICBYSW1hZ2UqIG1faW1hZ2U7CisgICAgWFVuaXF1ZVB0cjxYSW1hZ2U+
IG1faW1hZ2U7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUGxhdGZvcm1CdWZmZXJIYW5kbGUg
bV9oYW5kbGU7CiAgICAgR0x1aW50IG1fZm9ybWF0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2Vs
ZWN0b3IuaAppbmRleCA1Y2RlZGU1Li4xNDU4MzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmln
U2VsZWN0b3IuaApAQCAtMjksNiArMjksNyBAQAogI2lmIFVTRShHTFgpCiAKICNpbmNsdWRlICJY
MTFIZWxwZXIuaCIKKyNpbmNsdWRlICJYVW5pcXVlUHRyLmgiCiAjaW5jbHVkZSA8b3BlbmdsL0dM
RGVmcy5oPgogI2luY2x1ZGUgPG9wZW5nbC9HTFBsYXRmb3JtU3VyZmFjZS5oPgogCkBAIC0xNDAs
MTMgKzE0MSwxMyBAQCBwcml2YXRlOgogICAgIEdMWEZCQ29uZmlnIGZpbmRNYXRjaGluZ0NvbmZp
Zyhjb25zdCBpbnQgYXR0cmlidXRlc1tdLCBpbnQgZGVwdGggPSAzMikKICAgICB7CiAgICAgICAg
IGludCBudW1BdmFpbGFibGVDb25maWdzOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xYRkJD
b25maWdbXSwgWDExRGVsZXRlcj4gdGVtcChnbFhDaG9vc2VGQkNvbmZpZyhYMTFIZWxwZXI6Om5h
dGl2ZURpc3BsYXkoKSwgRGVmYXVsdFNjcmVlbihYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSks
IGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVDb25maWdzKSk7CisgICAgICAgIFhVbmlxdWVQdHI8
R0xYRkJDb25maWc+IHRlbXAoZ2xYQ2hvb3NlRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNw
bGF5KCksIERlZmF1bHRTY3JlZW4oWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCkpLCBhdHRyaWJ1
dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncykpOwogCiAgICAgICAgIGlmICghbnVtQXZhaWxhYmxl
Q29uZmlncyB8fCAhdGVtcC5nZXQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXZhaWxhYmxlQ29uZmlnczsgKytpKSB7Ci0gICAgICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8WFZpc3VhbEluZm8sIFgxMURlbGV0ZXI+IHNjb3BlZFZpc3Vh
bEluZm8geyBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5
KCksIHRlbXBbaV0pIH07CisgICAgICAgICAgICBYVW5pcXVlUHRyPFhWaXN1YWxJbmZvPiBzY29w
ZWRWaXN1YWxJbmZvIHsgZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKFgxMUhlbHBlcjo6bmF0aXZl
RGlzcGxheSgpLCB0ZW1wLmdldCgpW2ldKSB9OwogICAgICAgICAgICAgaWYgKCFzY29wZWRWaXN1
YWxJbmZvLmdldCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0xNTcsNDAgKzE1
OCw0MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChmb3JtYXQpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fYXR0cmlidXRlcyAmIEdMUGxhdGZvcm1TdXJmYWNlOjpTdXBwb3J0
QWxwaGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZWRWaXN1YWxJbmZvLT5k
ZXB0aCA9PSBkZXB0aCAmJiBmb3JtYXQtPmRpcmVjdC5hbHBoYU1hc2sgPiAwKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wW2ldOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0ZW1wLmdldCgpW2ldOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKCFmb3JtYXQtPmRpcmVjdC5hbHBoYU1hc2spCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGVtcFtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wLmdldCgp
W2ldOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICAg
ICAgaWYgKHNjb3BlZFZpc3VhbEluZm8tPmRlcHRoID09IGRlcHRoKQotICAgICAgICAgICAgICAg
IHJldHVybiB0ZW1wW2ldOworICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wLmdldCgpW2ldOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIGFueSB2aXN1YWwgc3VwcG9ydGlu
ZyBhbHBoYSwgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUgY29uZmlnLgotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8WFZpc3VhbEluZm8sIFgxMURlbGV0ZXI+IHNjb3BlZFZpc3VhbEluZm8geyBn
bFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRlbXBb
MF0pIH07CisgICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHNjb3BlZFZpc3VhbEluZm8g
eyBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVyOjpuYXRpdmVEaXNwbGF5KCksIHRl
bXAuZ2V0KClbMF0pIH07CiAKICAgICAgICAgaWYgKChtX2F0dHJpYnV0ZXMgJiBHTFBsYXRmb3Jt
U3VyZmFjZTo6U3VwcG9ydEFscGhhKSAmJiAoc2NvcGVkVmlzdWFsSW5mby0+ZGVwdGggIT0gMzIp
KQogICAgICAgICAgICAgbV9hdHRyaWJ1dGVzICY9IH5HTFBsYXRmb3JtU3VyZmFjZTo6U3VwcG9y
dEFscGhhOwogCi0gICAgICAgIHJldHVybiB0ZW1wWzBdOworICAgICAgICByZXR1cm4gdGVtcC5n
ZXQoKVswXTsKICAgICB9CiAKICAgICBHTFhGQkNvbmZpZyBmaW5kTWF0Y2hpbmdDb25maWdXaXRo
VmlzdWFsSWQoY29uc3QgaW50IGF0dHJpYnV0ZXNbXSwgaW50IGRlcHRoLCBWaXN1YWxJRCBpZCkK
ICAgICB7CiAgICAgICAgIGludCBudW1BdmFpbGFibGVDb25maWdzOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8R0xYRkJDb25maWdbXSwgWDExRGVsZXRlcj4gdGVtcChnbFhDaG9vc2VGQkNvbmZp
ZyhYMTFIZWxwZXI6Om5hdGl2ZURpc3BsYXkoKSwgRGVmYXVsdFNjcmVlbihYMTFIZWxwZXI6Om5h
dGl2ZURpc3BsYXkoKSksIGF0dHJpYnV0ZXMsICZudW1BdmFpbGFibGVDb25maWdzKSk7CisgICAg
ICAgIFhVbmlxdWVQdHI8R0xYRkJDb25maWc+IHRlbXAoZ2xYQ2hvb3NlRkJDb25maWcoWDExSGVs
cGVyOjpuYXRpdmVEaXNwbGF5KCksIERlZmF1bHRTY3JlZW4oWDExSGVscGVyOjpuYXRpdmVEaXNw
bGF5KCkpLCBhdHRyaWJ1dGVzLCAmbnVtQXZhaWxhYmxlQ29uZmlncykpOwogCiAgICAgICAgIGlm
ICghbnVtQXZhaWxhYmxlQ29uZmlncyB8fCAhdGVtcC5nZXQoKSkKICAgICAgICAgICAgIHJldHVy
biAwOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXZhaWxhYmxlQ29uZmlnczsg
KytpKSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8WFZpc3VhbEluZm8sIFgxMURlbGV0
ZXI+IHNjb3BlZFZpc3VhbEluZm8geyBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcoWDExSGVscGVy
OjpuYXRpdmVEaXNwbGF5KCksIHRlbXBbaV0pIH07CisgICAgICAgICAgICBYVW5pcXVlUHRyPFhW
aXN1YWxJbmZvPiBzY29wZWRWaXN1YWxJbmZvIHsgZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKFgx
MUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpLCB0ZW1wLmdldCgpW2ldKSB9OwogICAgICAgICAgICAg
aWYgKCFzY29wZWRWaXN1YWxJbmZvLmdldCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgICAgICBpZiAoaWQgJiYgc2NvcGVkVmlzdWFsSW5mby0+ZGVwdGggPT0gZGVwdGgg
JiYgc2NvcGVkVmlzdWFsSW5mby0+dmlzdWFsaWQgPT0gaWQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRlbXBbaV07CisgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXAuZ2V0KClbaV07CiAgICAg
ICAgIH0KIAogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcAppbmRleCBi
YTQ5M2IwLi41NDFlNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCkBAIC0yOCw2ICsyOCw4
IEBACiAKICNpZiBVU0UoR0xYKQogCisjaW5jbHVkZSAiWFVuaXF1ZVB0ci5oIgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBQRk5HTFhCSU5EVEVYSU1BR0VFWFRQUk9DIHBHbFhCaW5k
VGV4SW1hZ2VFWFQgPSAwOwpAQCAtNjYsNyArNjgsNyBAQCBHTFhUcmFuc3BvcnRTdXJmYWNlOjpH
TFhUcmFuc3BvcnRTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIFN1cmZhY2VBdHRyaWJ1dGVz
CiB7CiAgICAgYXR0cmlidXRlcyB8PSBHTFBsYXRmb3JtU3VyZmFjZTo6RG91YmxlQnVmZmVyZWQ7
CiAgICAgbV9jb25maWdTZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8R0xYQ29uZmlnU2VsZWN0
b3I+KGF0dHJpYnV0ZXMpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxYVmlzdWFsSW5mbywgWDExRGVs
ZXRlcj4gdmlzSW5mbyhtX2NvbmZpZ1NlbGVjdG9yLT52aXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0
b3ItPnN1cmZhY2VDb250ZXh0Q29uZmlnKCkpKTsKKyAgICBYVW5pcXVlUHRyPFhWaXN1YWxJbmZv
PiB2aXNJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rvci0+
c3VyZmFjZUNvbnRleHRDb25maWcoKSkpOwogCiAgICAgaWYgKCF2aXNJbmZvLmdldCgpKSB7CiAg
ICAgICAgIGRlc3Ryb3koKTsKQEAgLTE0Miw3ICsxNDQsNyBAQCB2b2lkIEdMWE9mZlNjcmVlblN1
cmZhY2U6OmluaXRpYWxpemUoU3VyZmFjZUF0dHJpYnV0ZXMgYXR0cmlidXRlcykKIHsKICAgICBt
X2NvbmZpZ1NlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxHTFhDb25maWdTZWxlY3Rvcj4oYXR0
cmlidXRlcyk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8WFZpc3VhbEluZm8sIFgxMURlbGV0ZXI+
IHZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rvci0+dmlzdWFsSW5mbyhtX2NvbmZpZ1NlbGVjdG9y
LT5waXhtYXBDb250ZXh0Q29uZmlnKCkpKTsKKyAgICBYVW5pcXVlUHRyPFhWaXN1YWxJbmZvPiB2
aXN1YWxJbmZvKG1fY29uZmlnU2VsZWN0b3ItPnZpc3VhbEluZm8obV9jb25maWdTZWxlY3Rvci0+
cGl4bWFwQ29udGV4dENvbmZpZygpKSk7CiAgICAgWDExSGVscGVyOjpjcmVhdGVQaXhtYXAoJm1f
cGl4bWFwLCAqdmlzdWFsSW5mby5nZXQoKSk7CiAKICAgICBpZiAoIW1fcGl4bWFwKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDEx
SGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9YMTFIZWxwZXIuY3BwCmluZGV4IDgwMTBiNTcuLmZhOGM0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFIZWxwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFIZWxw
ZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiWDExSGVscGVyLmgiCiAKICNpbmNs
dWRlICJQbGF0Zm9ybURpc3BsYXlYMTEuaCIKKyNpbmNsdWRlICJYVW5pcXVlUHRyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjIzLDcgKzIyNCw3IEBAIHZvaWQgWDExSGVscGVyOjpj
cmVhdGVPZmZTY3JlZW5XaW5kb3codWludDMyX3QqIGhhbmRsZUlkLCBjb25zdCBFR0xpbnQgaWQs
IGJvb2wKICAgICBtZW1zZXQoJnZpc3VhbEluZm9UZW1wbGF0ZSwgMCwgc2l6ZW9mKFhWaXN1YWxJ
bmZvKSk7CiAgICAgdmlzdWFsSW5mb1RlbXBsYXRlLnZpc3VhbGlkID0gdmlzdWFsSWQ7CiAgICAg
aW50IG1hdGNoaW5nQ291bnQgPSAwOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxYVmlzdWFsSW5mbywg
WDExRGVsZXRlcj4gbWF0Y2hpbmdWaXN1YWxzKFhHZXRWaXN1YWxJbmZvKG5hdGl2ZURpc3BsYXko
KSwgVmlzdWFsSURNYXNrLCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCkpOwor
ICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IG1hdGNoaW5nVmlzdWFscyhYR2V0VmlzdWFsSW5m
byhuYXRpdmVEaXNwbGF5KCksIFZpc3VhbElETWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1h
dGNoaW5nQ291bnQpKTsKICAgICBYVmlzdWFsSW5mbyogZm91bmRWaXN1YWwgPSAwOwogCiAgICAg
aWYgKG1hdGNoaW5nVmlzdWFscykgewpAQCAtMjYwLDcgKzI2MSw3IEBAIHZvaWQgWDExSGVscGVy
OjpjcmVhdGVQaXhtYXAoUGl4bWFwKiBoYW5kbGVJZCwgY29uc3QgRUdMaW50IGlkLCBib29sIGhh
c0FscGhhLCBjCiAgICAgbWVtc2V0KCZ2aXN1YWxJbmZvVGVtcGxhdGUsIDAsIHNpemVvZihYVmlz
dWFsSW5mbykpOwogICAgIHZpc3VhbEluZm9UZW1wbGF0ZS52aXN1YWxpZCA9IHZpc3VhbElkOwog
ICAgIGludCBtYXRjaGluZ0NvdW50ID0gMDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8WFZpc3VhbElu
Zm8sIFgxMURlbGV0ZXI+IG1hdGNoaW5nVmlzdWFscyhYR2V0VmlzdWFsSW5mbyhuYXRpdmVEaXNw
bGF5KCksIFZpc3VhbElETWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQp
KTsKKyAgICBYVW5pcXVlUHRyPFhWaXN1YWxJbmZvPiBtYXRjaGluZ1Zpc3VhbHMoWEdldFZpc3Vh
bEluZm8obmF0aXZlRGlzcGxheSgpLCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZvVGVtcGxhdGUs
ICZtYXRjaGluZ0NvdW50KSk7CiAgICAgWFZpc3VhbEluZm8qIGZvdW5kVmlzdWFsID0gMDsKICAg
ICBpbnQgcmVxdWlyZWREZXB0aCA9IGhhc0FscGhhID8gMzIgOiAyNDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBl
ci5oCmluZGV4IDEwM2YwMDEuLjdmNWU0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmgKQEAgLTQyLDE1
ICs0Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgWDExRGVsZXRlciB7Ci1w
dWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBvcGVyYXRvcigpKFQqIHJlc291
cmNlKQotICAgIHsKLSAgICAgICAgaWYgKHJlc291cmNlKQotICAgICAgICAgICAgWEZyZWUocmVz
b3VyY2UpOwotICAgIH0KLX07Ci0KIGNsYXNzIFgxMUhlbHBlciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgY3JlYXRlUGl4bWFwKFBpeG1hcCosIGNvbnN0IFhWaXN1YWxJbmZvJiwgY29uc3Qg
SW50U2l6ZSYgPSBJbnRTaXplKDEsIDEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3gxMS9YVW5pcXVlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy94MTEvWFVuaXF1ZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjI0NTA5NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy94MTEvWFVuaXF1ZVB0ci5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgWFVuaXF1ZVB0cl9oCisjZGVm
aW5lIFhVbmlxdWVQdHJfaAorCisjaWYgUExBVEZPUk0oWDExKQorI2luY2x1ZGUgIlBsYXRmb3Jt
RGlzcGxheVgxMS5oIgorI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgorCisjaWYgVVNFKEdMWCkKK3R5
cGVkZWYgc3RydWN0IF9fR0xYY29udGV4dFJlYyogR0xYQ29udGV4dDsKK2V4dGVybiAiQyIgdm9p
ZCBnbFhEZXN0cm95Q29udGV4dChEaXNwbGF5KiwgR0xYQ29udGV4dCk7CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFhQdHJEZWxl
dGVyIHsKKyAgICB2b2lkIG9wZXJhdG9yKCkoVCogcHRyKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKHB0cikKKyAgICAgICAgICAgIFhGcmVlKHB0cik7CisgICAgfQorfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK3VzaW5nIFhVbmlxdWVQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VCwgWFB0ckRl
bGV0ZXI8VD4+OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBYUHRyRGVsZXRlcjxYSW1hZ2U+IHsKKyAg
ICB2b2lkIG9wZXJhdG9yKCkgKFhJbWFnZSogcHRyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KHB0cikKKyAgICAgICAgICAgIFhEZXN0cm95SW1hZ2UocHRyKTsKKyAgICB9Cit9OworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBYUHRyRGVsZXRlcjxfWEdDPiB7CisgICAgdm9pZCBvcGVyYXRvcigpIChf
WEdDKiBwdHIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAocHRyKQorICAgICAgICAgICAgWEZy
ZWVHQyhkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheSgpKS5uYXRpdmUoKSwgcHRyKTsKKyAgICB9Cit9OworLy8gR2l2ZSBhIG5hbWUgdG8g
dGhpcyB0byBhdm9pZCBoYXZpbmcgdG8gdXNlIHRoZSBpbnRlcm5hbCBzdHJ1Y3QgbmFtZS4KK3Vz
aW5nIFhVbmlxdWVHQyA9IFhVbmlxdWVQdHI8X1hHQz47CisKKyNpZiBVU0UoR0xYKQordGVtcGxh
dGU8PiBzdHJ1Y3QgWFB0ckRlbGV0ZXI8X19HTFhjb250ZXh0UmVjPiB7CisgICAgdm9pZCBvcGVy
YXRvcigpIChfX0dMWGNvbnRleHRSZWMqIHB0cikKKyAgICB7CisgICAgICAgIGlmIChwdHIpCisg
ICAgICAgICAgICBnbFhEZXN0cm95Q29udGV4dChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+
KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSwgcHRyKTsKKyAgICB9
Cit9OworLy8gR2l2ZSBhIG5hbWUgdG8gdGhpcyB0byBhdm9pZCBoYXZpbmcgdG8gdXNlIHRoZSBp
bnRlcm5hbCBzdHJ1Y3QgbmFtZS4KK3VzaW5nIFhVbmlxdWVHTFhDb250ZXh0ID0gWFVuaXF1ZVB0
cjxfX0dMWGNvbnRleHRSZWM+OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKKworI2VuZGlmIC8vIFhVbmlxdWVQdHJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWVSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZVJlc291
cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzAwZWU0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlx
dWVSZXNvdXJjZS5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBJZ2FsaWEgUy5MCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhVbmlxdWVS
ZXNvdXJjZS5oIgorCisjaWYgUExBVEZPUk0oWDExKQorI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxh
eVgxMS5oIgorI2luY2x1ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVkZSA8WDExL1h1dGlsLmg+CisK
KyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGRhbWFnZS5oPgor
I2VuZGlmCisKKyNpZiBVU0UoR0xYKQorI2luY2x1ZGUgPEdML2dseC5oPgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBEaXNwbGF5KiBzaGFyZWREaXNwbGF5
KCkKK3sKKyAgICByZXR1cm4gZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURp
c3BsYXk6OnNoYXJlZERpc3BsYXkoKSkubmF0aXZlKCk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBY
VW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpDb2xvcm1hcD46OmRlbGV0ZVhSZXNvdXJjZSh1bnNp
Z25lZCBsb25nIHJlc291cmNlKQoreworICAgIGlmIChyZXNvdXJjZSkKKyAgICAgICAgWEZyZWVD
b2xvcm1hcChzaGFyZWREaXNwbGF5KCksIHJlc291cmNlKTsKK30KKworI2lmIFBMQVRGT1JNKEdU
SykKK3RlbXBsYXRlPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpEYW1hZ2U+Ojpk
ZWxldGVYUmVzb3VyY2UodW5zaWduZWQgbG9uZyByZXNvdXJjZSkKK3sKKyAgICBpZiAocmVzb3Vy
Y2UpCisgICAgICAgIFhEYW1hZ2VEZXN0cm95KHNoYXJlZERpc3BsYXkoKSwgcmVzb3VyY2UpOwor
fQorI2VuZGlmCisKK3RlbXBsYXRlPD4gdm9pZCBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpQ
aXhtYXA+OjpkZWxldGVYUmVzb3VyY2UodW5zaWduZWQgbG9uZyByZXNvdXJjZSkKK3sKKyAgICBp
ZiAocmVzb3VyY2UpCisgICAgICAgIFhGcmVlUGl4bWFwKHNoYXJlZERpc3BsYXkoKSwgcmVzb3Vy
Y2UpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6V2lu
ZG93Pjo6ZGVsZXRlWFJlc291cmNlKHVuc2lnbmVkIGxvbmcgcmVzb3VyY2UpCit7CisgICAgaWYg
KHJlc291cmNlKQorICAgICAgICBYRGVzdHJveVdpbmRvdyhzaGFyZWREaXNwbGF5KCksIHJlc291
cmNlKTsKK30KKworI2lmIFVTRShHTFgpCit0ZW1wbGF0ZTw+IHZvaWQgWFVuaXF1ZVJlc291cmNl
PFhSZXNvdXJjZTo6R0xYUGJ1ZmZlcj46OmRlbGV0ZVhSZXNvdXJjZSh1bnNpZ25lZCBsb25nIHJl
c291cmNlKQoreworICAgIGlmIChyZXNvdXJjZSkKKyAgICAgICAgZ2xYRGVzdHJveVBidWZmZXIo
c2hhcmVkRGlzcGxheSgpLCByZXNvdXJjZSk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBYVW5pcXVl
UmVzb3VyY2U8WFJlc291cmNlOjpHTFhQaXhtYXA+OjpkZWxldGVYUmVzb3VyY2UodW5zaWduZWQg
bG9uZyByZXNvdXJjZSkKK3sKKyAgICBpZiAocmVzb3VyY2UpCisgICAgICAgIGdsWERlc3Ryb3lH
TFhQaXhtYXAoc2hhcmVkRGlzcGxheSgpLCByZXNvdXJjZSk7Cit9CisjZW5kaWYgLy8gVVNFKEdM
WCkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUExBVEZPUk0oWDExKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWVS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1hVbmlxdWVS
ZXNvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkYThiMGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVu
aXF1ZVJlc291cmNlLmgKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgSWdhbGlhIFMuTAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgWFVuaXF1ZVJlc291cmNlX2gKKyNkZWZpbmUgWFVu
aXF1ZVJlc291cmNlX2gKKworI2lmIFBMQVRGT1JNKFgxMSkKKworI2lmIFVTRShHTFgpCit0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgR0xYUGJ1ZmZlcjsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBHTFhQ
aXhtYXA7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFhSZXNv
dXJjZSB7CisgICAgQ29sb3JtYXAsCisjaWYgUExBVEZPUk0oR1RLKQorICAgIERhbWFnZSwKKyNl
bmRpZgorICAgIFBpeG1hcCwKKyAgICBXaW5kb3csCisjaWYgVVNFKEdMWCkKKyAgICBHTFhQYnVm
ZmVyLAorICAgIEdMWFBpeG1hcCwKKyNlbmRpZgorfTsKKwordGVtcGxhdGUgPFhSZXNvdXJjZSBU
PiBjbGFzcyBYVW5pcXVlUmVzb3VyY2UgeworcHVibGljOgorICAgIFhVbmlxdWVSZXNvdXJjZSgp
CisgICAgeworICAgIH0KKworICAgIFhVbmlxdWVSZXNvdXJjZSh1bnNpZ25lZCBsb25nIHJlc291
cmNlKQorICAgICAgICA6IG1fcmVzb3VyY2UocmVzb3VyY2UpCisgICAgeworICAgIH0KKworICAg
IFhVbmlxdWVSZXNvdXJjZShYVW5pcXVlUmVzb3VyY2UmJiB1bmlxdWVSZXNvdXJjZSkKKyAgICAg
ICAgOiBtX3Jlc291cmNlKHVuaXF1ZVJlc291cmNlLnJlbGVhc2UoKSkKKyAgICB7CisgICAgfQor
CisgICAgWFVuaXF1ZVJlc291cmNlJiBvcGVyYXRvcj0oWFVuaXF1ZVJlc291cmNlJiYgdW5pcXVl
UmVzb3VyY2UpCisgICAgeworICAgICAgICByZXNldCh1bmlxdWVSZXNvdXJjZS5yZWxlYXNlKCkp
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgflhVbmlxdWVSZXNvdXJjZSgp
CisgICAgeworICAgICAgICByZXNldCgpOworICAgIH0KKworICAgIHVuc2lnbmVkIGxvbmcgZ2V0
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZTsgfQorICAgIHVuc2lnbmVkIGxvbmcgcmVsZWFz
ZSgpIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9yZXNvdXJjZSwgMCk7IH0KKworICAgIHZvaWQg
cmVzZXQodW5zaWduZWQgbG9uZyByZXNvdXJjZSA9IDApCisgICAgeworICAgICAgICBzdGQ6OnN3
YXAobV9yZXNvdXJjZSwgcmVzb3VyY2UpOworICAgICAgICBkZWxldGVYUmVzb3VyY2UocmVzb3Vy
Y2UpOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlOyB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgZGVsZXRlWFJlc291
cmNlKHVuc2lnbmVkIGxvbmcgcmVzb3VyY2UpOworCisgICAgdW5zaWduZWQgbG9uZyBtX3Jlc291
cmNlIHsgMCB9OworfTsKKwordXNpbmcgWFVuaXF1ZUNvbG9ybWFwID0gWFVuaXF1ZVJlc291cmNl
PFhSZXNvdXJjZTo6Q29sb3JtYXA+OworI2lmIFBMQVRGT1JNKEdUSykKK3VzaW5nIFhVbmlxdWVE
YW1hZ2UgPSBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpEYW1hZ2U+OworI2VuZGlmCit1c2lu
ZyBYVW5pcXVlUGl4bWFwID0gWFVuaXF1ZVJlc291cmNlPFhSZXNvdXJjZTo6UGl4bWFwPjsKK3Vz
aW5nIFhVbmlxdWVXaW5kb3cgPSBYVW5pcXVlUmVzb3VyY2U8WFJlc291cmNlOjpXaW5kb3c+Owor
I2lmIFVTRShHTFgpCit1c2luZyBYVW5pcXVlR0xYUGJ1ZmZlciA9IFhVbmlxdWVSZXNvdXJjZTxY
UmVzb3VyY2U6OkdMWFBidWZmZXI+OwordXNpbmcgWFVuaXF1ZUdMWFBpeG1hcCA9IFhVbmlxdWVS
ZXNvdXJjZTxYUmVzb3VyY2U6OkdMWFBpeG1hcD47CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gUExBVEZPUk0oWDExKQorCisjZW5kaWYgLy8gWFVuaXF1ZVJl
c291cmNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5OTVhMjgxLi45ZGRhM2NkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzMgQEAKKzIwMTUtMDUtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtYMTFdIEFkZCBYVW5pcXVlUHRyIGFuZCBYVW5pcXVlUmVz
b3VyY2UgdG8gYXV0b21hdGljYWxseSBmcmVlIFggcmVzb3VyY2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ1MjEKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2UgWFVuaXF1ZVB0ciBhbmQgWFVuaXF1ZVJl
c291cmNlIHRvIGZyZWUgWCByZXNvdXJjZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZTogQWRkIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMSBkaXIKKyAgICAgICAg
dG8gdGhlIGluY2x1ZGUgZGlyIGxpc3QuCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IERp
dHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCk6IERvIG5vdCBwYXNz
IHRoZSBkaXNwbGF5IHRvCisgICAgICAgIHRoZSBCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEg
Y29uc3RydWN0b3IuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cpOgorICAgICAg
ICAoV2ViS2l0OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVzaXplKToKKyAgICAgICAg
KFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNsZWFudXBQaXhtYXBBbmRQaXht
YXBTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6
OnN1cmZhY2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3cuaDoKKyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6Ondp
bmRvd0lEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRm
b3JtUG9zdEluaXRpYWxpemVXaW5kb3dsZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQ
bHVnaW46OnBsYXRmb3JtRGVzdHJveSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjpwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQ
bHVnaW46OnBsYXRmb3JtUGFpbnQpOgorCiAyMDE1LTA1LTA1ICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gTmV0d29yayBDYWNoZTog
SW1wbGVtZW50IFNoYXJlYWJsZVJlc291cmNlIGZvciBTb3VwIGFuZCBlbmFibGUgaXQgZm9yIEdU
SyBwbGF0Zm9ybQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA1YTAyZWEyLi5lZmVmZWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMjI2LDYgKzIyNiw3IEBAIGxpc3QoQVBQ
RU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlybyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhp
Y3MvZWZsIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZSIK
KyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MveDExIgogICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL3RleHQvZW5jaGFudCIKICAgICAiJHtXRUJLSVQyX0RJUn0vTmV0d29ya1Byb2Nlc3MvZWZs
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBmN2JiNjM3Li44OWQ0NzAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNDU2LDYgKzQ1Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktp
dDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ndGsi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvIgogICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZSIKKyAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vZ3JhcGhpY3MveDExIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvZW5jaGFudCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vRGF0YWJhc2VQcm9jZXNzL3VuaXgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCBi
ZDgwYjM3Li4yZmIzMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Fp
cm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9j
YWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybz4gQmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5k
KCkKICAgICAgICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBndGtfd2lkZ2V0X2dldF92aXN1YWwobV93
ZWJQYWdlUHJveHkudmlld1dpZGdldCgpKTsKICAgICAgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBn
ZGtfdmlzdWFsX2dldF9zY3JlZW4odmlzdWFsKTsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oc2hhcmVkRGlzcGxheSkubmF0aXZlKCkgPT0gR0RLX1NDUkVFTl9Y
RElTUExBWShzY3JlZW4pKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2lu
Z1N0b3JlQmFja2VuZENhaXJvWDExPihkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHNoYXJl
ZERpc3BsYXkpLm5hdGl2ZSgpLCBHREtfV0lORE9XX1hJRChnZGtfc2NyZWVuX2dldF9yb290X3dp
bmRvdyhzY3JlZW4pKSwKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0
b3JlQmFja2VuZENhaXJvWDExPihHREtfV0lORE9XX1hJRChnZGtfc2NyZWVuX2dldF9yb290X3dp
bmRvdyhzY3JlZW4pKSwKICAgICAgICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBn
ZGtfdmlzdWFsX2dldF9kZXB0aCh2aXN1YWwpLCBtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3Ip
OwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcAppbmRleCA0NDRmODY0Li42MzA5
MmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1Jl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaWYgVVNF
KFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCiAKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgog
I2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4KICNpbmNsdWRlIDxYMTEvZXh0
ZW5zaW9ucy9YZGFtYWdlLmg+CiAjaW5jbHVkZSA8Y2Fpcm8teGxpYi5oPgpAQCAtMTM1LDIxICsx
MzYsMTggQEAgc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKEcKIAogUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KEdka1dpbmRvdyogcGFyZW50V2luZG93
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZGFtYWdlTm90aWZ5KQogICAgIDogbV9kaXNwbGF5KEdE
S19ESVNQTEFZX1hESVNQTEFZKGdka193aW5kb3dfZ2V0X2Rpc3BsYXkocGFyZW50V2luZG93KSkp
Ci0gICAgLCBtX3dpbmRvdygwKQotICAgICwgbV9wYXJlbnRXaW5kb3coMCkKLSAgICAsIG1fcGl4
bWFwKDApCi0gICAgLCBtX2RhbWFnZSgwKQogICAgICwgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVz
aXplKGZhbHNlKQogeworICAgIEFTU0VSVChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpKS5uYXRpdmUoKSA9PSBtX2Rpc3BsYXkpOwog
ICAgIFNjcmVlbiogc2NyZWVuID0gRGVmYXVsdFNjcmVlbk9mRGlzcGxheShtX2Rpc3BsYXkpOwog
CiAgICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBnZGtfd2luZG93X2dldF92aXN1YWwocGFyZW50V2lu
ZG93KTsKLSAgICBDb2xvcm1hcCBjb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChtX2Rpc3BsYXks
IFJvb3RXaW5kb3dPZlNjcmVlbihzY3JlZW4pLCBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwg
QWxsb2NOb25lKTsKKyAgICBYVW5pcXVlQ29sb3JtYXAgY29sb3JtYXAoWENyZWF0ZUNvbG9ybWFw
KG1fZGlzcGxheSwgUm9vdFdpbmRvd09mU2NyZWVuKHNjcmVlbiksIEdES19WSVNVQUxfWFZJU1VB
TCh2aXN1YWwpLCBBbGxvY05vbmUpKTsKIAogICAgIC8vIFRoaXMgaXMgYmFzZWQgb24gY29kZSBm
cm9tIENocm9taXVtOiBzcmMvY29udGVudC9jb21tb24vZ3B1L2ltYWdlX3RyYW5zcG9ydF9zdXJm
YWNlX2xpbnV4LmNjCiAgICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMgd2luZG93QXR0cmlidXRlczsK
ICAgICB3aW5kb3dBdHRyaWJ1dGVzLm92ZXJyaWRlX3JlZGlyZWN0ID0gVHJ1ZTsKLSAgICB3aW5k
b3dBdHRyaWJ1dGVzLmNvbG9ybWFwID0gY29sb3JtYXA7CisgICAgd2luZG93QXR0cmlidXRlcy5j
b2xvcm1hcCA9IGNvbG9ybWFwLmdldCgpOwogCiAgICAgLy8gQ1dCb3JkZXJQaXhlbCBtdXN0IGJl
IHByZXNlbnQgd2hlbiB0aGUgZGVwdGggZG9lc24ndCBtYXRjaCB0aGUgcGFyZW50J3Mgb25lLgog
ICAgIC8vIFNlZSBodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL3RyZWUv
ZGl4L3dpbmRvdy5jP2lkPXhvcmctc2VydmVyLTEuMTYuMCNuNzAzLgpAQCAtMTY0LDEzICsxNjIs
MTMgQEAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93KEdka1dpbmRvdyogcGFyZW50V2luZG93LAogICAgICAgICBHREtfVklTVUFMX1hWSVNVQUwo
dmlzdWFsKSwKICAgICAgICAgQ1dPdmVycmlkZVJlZGlyZWN0IHwgQ1dDb2xvcm1hcCB8IENXQm9y
ZGVyUGl4ZWwsCiAgICAgICAgICZ3aW5kb3dBdHRyaWJ1dGVzKTsKLSAgICBYTWFwV2luZG93KG1f
ZGlzcGxheSwgbV9wYXJlbnRXaW5kb3cpOworICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3Bh
cmVudFdpbmRvdy5nZXQoKSk7CiAKICAgICB3aW5kb3dBdHRyaWJ1dGVzLmV2ZW50X21hc2sgPSBT
dHJ1Y3R1cmVOb3RpZnlNYXNrOwogICAgIHdpbmRvd0F0dHJpYnV0ZXMub3ZlcnJpZGVfcmVkaXJl
Y3QgPSBGYWxzZTsKICAgICAvLyBDcmVhdGUgdGhlIHdpbmRvdyBvZiBhdCBsYXN0IDF4MSBzaW5j
ZSBYIGRvZXNuJ3QgYWxsb3cgdG8gY3JlYXRlIGVtcHR5IHdpbmRvd3MuCiAgICAgbV93aW5kb3cg
PSBYQ3JlYXRlV2luZG93KG1fZGlzcGxheSwKLSAgICAgICAgbV9wYXJlbnRXaW5kb3csCisgICAg
ICAgIG1fcGFyZW50V2luZG93LmdldCgpLAogICAgICAgICAwLCAwLAogICAgICAgICBzdGQ6Om1h
eCgxLCBtX3NpemUud2lkdGgoKSksCiAgICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQo
KSksCkBAIC0xODAsMjEgKzE3OCwxOSBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3coR2RrV2luZG93KiBwYXJlbnRXaW5kb3csCiAgICAgICAg
IENvcHlGcm9tUGFyZW50LAogICAgICAgICBDV0V2ZW50TWFzaywKICAgICAgICAgJndpbmRvd0F0
dHJpYnV0ZXMpOwotICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdyk7CisgICAgWE1h
cFdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93LmdldCgpKTsKIAotICAgIFhGcmVlQ29sb3JtYXAo
bV9kaXNwbGF5LCBjb2xvcm1hcCk7Ci0KLSAgICB4RGFtYWdlTm90aWZpZXIoKS5hZGQobV93aW5k
b3csIFdURjo6bW92ZShkYW1hZ2VOb3RpZnkpKTsKKyAgICB4RGFtYWdlTm90aWZpZXIoKS5hZGQo
bV93aW5kb3cuZ2V0KCksIFdURjo6bW92ZShkYW1hZ2VOb3RpZnkpKTsKIAogICAgIHdoaWxlICgx
KSB7CiAgICAgICAgIFhFdmVudCBldmVudDsKLSAgICAgICAgWFdpbmRvd0V2ZW50KG1fZGlzcGxh
eSwgbV93aW5kb3csIFN0cnVjdHVyZU5vdGlmeU1hc2ssICZldmVudCk7Ci0gICAgICAgIGlmIChl
dmVudC50eXBlID09IE1hcE5vdGlmeSAmJiBldmVudC54bWFwLndpbmRvdyA9PSBtX3dpbmRvdykK
KyAgICAgICAgWFdpbmRvd0V2ZW50KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIFN0cnVjdHVy
ZU5vdGlmeU1hc2ssICZldmVudCk7CisgICAgICAgIGlmIChldmVudC50eXBlID09IE1hcE5vdGlm
eSAmJiBldmVudC54bWFwLndpbmRvdyA9PSBtX3dpbmRvdy5nZXQoKSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBYU2VsZWN0SW5wdXQobV9kaXNwbGF5LCBtX3dpbmRvdywgTm9FdmVu
dE1hc2spOwotICAgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93
LCBDb21wb3NpdGVSZWRpcmVjdE1hbnVhbCk7Ci0gICAgbV9kYW1hZ2UgPSBYRGFtYWdlQ3JlYXRl
KG1fZGlzcGxheSwgbV93aW5kb3csIFhEYW1hZ2VSZXBvcnROb25FbXB0eSk7CisgICAgWFNlbGVj
dElucHV0KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIE5vRXZlbnRNYXNrKTsKKyAgICBYQ29t
cG9zaXRlUmVkaXJlY3RXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdy5nZXQoKSwgQ29tcG9zaXRl
UmVkaXJlY3RNYW51YWwpOworICAgIG1fZGFtYWdlID0gWERhbWFnZUNyZWF0ZShtX2Rpc3BsYXks
IG1fd2luZG93LmdldCgpLCBYRGFtYWdlUmVwb3J0Tm9uRW1wdHkpOwogfQogCiBSZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKQEAgLTIwNCwx
MiArMjAwLDEyIEBAIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3coKQogICAgIEFTU0VSVChtX3dpbmRvdyk7CiAgICAgQVNTRVJUKG1fcGFyZW50
V2luZG93KTsKIAotICAgIHhEYW1hZ2VOb3RpZmllcigpLnJlbW92ZShtX3dpbmRvdyk7CisgICAg
eERhbWFnZU5vdGlmaWVyKCkucmVtb3ZlKG1fd2luZG93LmdldCgpKTsKIAotICAgIFhEYW1hZ2VE
ZXN0cm95KG1fZGlzcGxheSwgbV9kYW1hZ2UpOwotICAgIFhEZXN0cm95V2luZG93KG1fZGlzcGxh
eSwgbV93aW5kb3cpOwotICAgIFhEZXN0cm95V2luZG93KG1fZGlzcGxheSwgbV9wYXJlbnRXaW5k
b3cpOwotICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7CisgICAgLy8gRXhwbGlj
aXRseSByZXNldCB0aGVzZSBiZWNhdXNlIHdlIG5lZWQgdG8gZW5zdXJlIGl0IGhhcHBlbnMgaW4g
dGhpcyBvcmRlci4KKyAgICBtX2RhbWFnZS5yZXNldCgpOworICAgIG1fd2luZG93LnJlc2V0KCk7
CisgICAgbV9wYXJlbnRXaW5kb3cucmVzZXQoKTsKIH0KIAogdm9pZCBSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdzo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0yMTgsNyArMjE0LDcg
QEAgdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVzaXplKGNvbnN0IEludFNpemUm
IHNpemUpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFJlc2l6ZSB0aGUgd2luZG93IHRvIGF0
IGxhc3QgMXgxIHNpbmNlIFggZG9lc24ndCBhbGxvdyB0byBjcmVhdGUgZW1wdHkgd2luZG93cy4K
LSAgICBYUmVzaXplV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3csIHN0ZDo6bWF4KDEsIHNpemUu
d2lkdGgoKSksIHN0ZDo6bWF4KDEsIHNpemUuaGVpZ2h0KCkpKTsKKyAgICBYUmVzaXplV2luZG93
KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCksIHN0ZDo6bWF4KDEsIHNpemUud2lkdGgoKSksIHN0
ZDo6bWF4KDEsIHNpemUuaGVpZ2h0KCkpKTsKICAgICBYRmx1c2gobV9kaXNwbGF5KTsKIAogICAg
IG1fc2l6ZSA9IHNpemU7CkBAIC0yMzIsOSArMjI4LDggQEAgdm9pZCBSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdzo6Y2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UoKQogICAgIGlmICghbV9w
aXhtYXApCiAgICAgICAgIHJldHVybjsKIAotICAgIFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbV9w
aXhtYXApOwotICAgIG1fcGl4bWFwID0gMDsKICAgICBtX3N1cmZhY2UgPSBudWxscHRyOworICAg
IG1fcGl4bWFwLnJlc2V0KCk7CiB9CiAKIGNhaXJvX3N1cmZhY2VfdCogUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3c6OnN1cmZhY2UoKQpAQCAtMjQ3LDIwICsyNDIsMTkgQEAgY2Fpcm9fc3VyZmFj
ZV90KiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6c3VyZmFjZSgpCiAKICAgICBtX25lZWRz
TmV3UGl4bWFwQWZ0ZXJSZXNpemUgPSBmYWxzZTsKIAotICAgIFBpeG1hcCBuZXdQaXhtYXAgPSBY
Q29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIG1fd2luZG93KTsKKyAgICBYVW5p
cXVlUGl4bWFwIG5ld1BpeG1hcChYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXks
IG1fd2luZG93LmdldCgpKSk7CiAgICAgaWYgKCFuZXdQaXhtYXApIHsKICAgICAgICAgY2xlYW51
cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCiAgICAgWFdpbmRvd0F0dHJpYnV0ZXMgd2luZG93QXR0cmlidXRlczsKLSAgICBpZiAoIVhH
ZXRXaW5kb3dBdHRyaWJ1dGVzKG1fZGlzcGxheSwgbV93aW5kb3csICZ3aW5kb3dBdHRyaWJ1dGVz
KSkgeworICAgIGlmICghWEdldFdpbmRvd0F0dHJpYnV0ZXMobV9kaXNwbGF5LCBtX3dpbmRvdy5n
ZXQoKSwgJndpbmRvd0F0dHJpYnV0ZXMpKSB7CiAgICAgICAgIGNsZWFudXBQaXhtYXBBbmRQaXht
YXBTdXJmYWNlKCk7Ci0gICAgICAgIFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbmV3UGl4bWFwKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gbmV3U3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9k
aXNwbGF5LCBuZXdQaXhtYXAsIHdpbmRvd0F0dHJpYnV0ZXMudmlzdWFsLCBtX3NpemUud2lkdGgo
KSwgbV9zaXplLmhlaWdodCgpKSk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmV3U3Vy
ZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9kaXNwbGF5LCBuZXdQ
aXhtYXAuZ2V0KCksIHdpbmRvd0F0dHJpYnV0ZXMudmlzdWFsLCBtX3NpemUud2lkdGgoKSwgbV9z
aXplLmhlaWdodCgpKSk7CiAKICAgICAvLyBOdmlkaWEgZHJpdmVycyBzZWVtIHRvIHByZXBhcmUg
dGhlaXIgcmVkaXJlY3RlZCB3aW5kb3cgcGl4bWFwIGFzeW5jaHJvbm91c2x5LCBzbyBmb3IgYSBm
ZXcgZnJhY3Rpb25zCiAgICAgLy8gb2YgYSBzZWNvbmQgYWZ0ZXIgZWFjaCByZXNpemUsIHdoaWxl
IGRvaW5nIGNvbnRpbnVvdXMgcmVzaXppbmcgKHdoaWNoIGNvbnN0YW50bHkgZGVzdHJveXMgYW5k
IGNyZWF0ZXMKQEAgLTI3NSw3ICsyNjksNyBAQCBjYWlyb19zdXJmYWNlX3QqIFJlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93OjpzdXJmYWNlKCkKICAgICB9CiAKICAgICBjbGVhbnVwUGl4bWFwQW5k
UGl4bWFwU3VyZmFjZSgpOwotICAgIG1fcGl4bWFwID0gbmV3UGl4bWFwOworICAgIG1fcGl4bWFw
ID0gV1RGOjptb3ZlKG5ld1BpeG1hcCk7CiAgICAgbV9zdXJmYWNlID0gbmV3U3VyZmFjZTsKICAg
ICByZXR1cm4gbV9zdXJmYWNlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCmluZGV4IDNhYTRm
ZjUuLjg4YTdlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKQEAgLTMxLDExICszMSwxMiBAQAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWly
by5oPgotI2luY2x1ZGUgPFgxMS9YbGliLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9YVW5pcXVlUmVz
b3VyY2UuaD4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogCiB0eXBlZGVmIHN0cnVjdCBfR2RrV2lu
ZG93IEdka1dpbmRvdzsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBEYW1hZ2U7Cit0eXBlZGVmIHN0
cnVjdCBfWERpc3BsYXkgRGlzcGxheTsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBXaW5kb3c7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00NCw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBjcmVhdGUoR2Rr
V2luZG93Kiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRhbWFnZU5vdGlmeSk7CiAgICAgflJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93KCk7CiAKLSAgICBXaW5kb3cgd2luZG93SUQoKSBjb25zdCB7
IHJldHVybiBtX3dpbmRvdzsgfQorICAgIFdpbmRvdyB3aW5kb3dJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2luZG93LmdldCgpOyB9CiAgICAgdm9pZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpOwogICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSgpOwogCkBAIC01NCwxMCArNTUsMTAg
QEAgcHJpdmF0ZToKIAogICAgIERpc3BsYXkqIG1fZGlzcGxheTsKICAgICBXZWJDb3JlOjpJbnRT
aXplIG1fc2l6ZTsKLSAgICBXaW5kb3cgbV93aW5kb3c7Ci0gICAgV2luZG93IG1fcGFyZW50V2lu
ZG93OwotICAgIFBpeG1hcCBtX3BpeG1hcDsKLSAgICBEYW1hZ2UgbV9kYW1hZ2U7CisgICAgV2Vi
Q29yZTo6WFVuaXF1ZVdpbmRvdyBtX3dpbmRvdzsKKyAgICBXZWJDb3JlOjpYVW5pcXVlV2luZG93
IG1fcGFyZW50V2luZG93OworICAgIFdlYkNvcmU6OlhVbmlxdWVQaXhtYXAgbV9waXhtYXA7Cisg
ICAgV2ViQ29yZTo6WFVuaXF1ZURhbWFnZSBtX2RhbWFnZTsKICAgICBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBtX3N1cmZhY2U7CiAgICAgYm9vbCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCBiZTExYWRkLi4yYzYzNzIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uaApAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlICJXZWJIaXRUZXN0
UmVzdWx0LmgiCiAjZW5kaWYKIAorI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoWDExKQorI2luY2x1
ZGUgPFdlYkNvcmUvWFVuaXF1ZVJlc291cmNlLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7CkBAIC0zODgs
NyArMzkyLDcgQEAgcHJpdmF0ZToKICAgICBOUF9DR0NvbnRleHQgbV9ucENHQ29udGV4dDsKICNl
bmRpZgogI2VsaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCi0gICAgUGl4bWFwIG1fZHJhd2Fi
bGU7CisgICAgV2ViQ29yZTo6WFVuaXF1ZVBpeG1hcCBtX2RyYXdhYmxlOwogICAgIERpc3BsYXkq
IG1fcGx1Z2luRGlzcGxheTsKICNpZiBQTEFURk9STShHVEspCiAgICAgR3RrV2lkZ2V0KiBtX3Bs
YXRmb3JtUGx1Z2luV2lkZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNw
cAppbmRleCAzN2Y0NzkzLi44YWRjYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1
Z2luWDExLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5WDExLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9YVW5pcXVl
UHRyLmg+CiAKICNpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgpAQCAtMTc1
LDEyICsxNzYsMTAgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1Qb3N0SW5pdGlhbGl6
ZVdpbmRvd2xlc3MoKQogICAgIHZpc3VhbFRlbXBsYXRlLmRlcHRoID0gZGVwdGg7CiAgICAgdmlz
dWFsVGVtcGxhdGUuY19jbGFzcyA9IFRydWVDb2xvcjsKICAgICBpbnQgbnVtTWF0Y2hpbmc7Ci0g
ICAgWFZpc3VhbEluZm8qIHZpc3VhbEluZm8gPSBYR2V0VmlzdWFsSW5mbyhkaXNwbGF5LCBWaXN1
YWxTY3JlZW5NYXNrIHwgVmlzdWFsRGVwdGhNYXNrIHwgVmlzdWFsQ2xhc3NNYXNrLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZpc3VhbFRlbXBsYXRlLCAm
bnVtTWF0Y2hpbmcpOworICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHZpc3VhbEluZm8oWEdl
dFZpc3VhbEluZm8oZGlzcGxheSwgVmlzdWFsU2NyZWVuTWFzayB8IFZpc3VhbERlcHRoTWFzayB8
IFZpc3VhbENsYXNzTWFzaywgJnZpc3VhbFRlbXBsYXRlLCAmbnVtTWF0Y2hpbmcpKTsKICAgICBB
U1NFUlQodmlzdWFsSW5mbyk7Ci0gICAgVmlzdWFsKiB2aXN1YWwgPSB2aXN1YWxJbmZvWzBdLnZp
c3VhbDsKKyAgICBWaXN1YWwqIHZpc3VhbCA9IHZpc3VhbEluZm8uZ2V0KClbMF0udmlzdWFsOwog
ICAgIEFTU0VSVCh2aXN1YWwpOwotICAgIFhGcmVlKHZpc3VhbEluZm8pOwogCiAgICAgY2FsbGJh
Y2tTdHJ1Y3QtPnZpc3VhbCA9IHZpc3VhbDsKICAgICBjYWxsYmFja1N0cnVjdC0+Y29sb3JtYXAg
PSBYQ3JlYXRlQ29sb3JtYXAoZGlzcGxheSwgcm9vdFdpbmRvd0lEKCksIHZpc3VhbCwgQWxsb2NO
b25lKTsKQEAgLTIzMiwxMCArMjMxLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1E
ZXN0cm95KCkKICAgICBYRnJlZUNvbG9ybWFwKGhvc3REaXNwbGF5LCBjYWxsYmFja1N0cnVjdC0+
Y29sb3JtYXApOwogICAgIGRlbGV0ZSBjYWxsYmFja1N0cnVjdDsKIAotICAgIGlmIChtX2RyYXdh
YmxlKSB7Ci0gICAgICAgIFhGcmVlUGl4bWFwKGhvc3REaXNwbGF5LCBtX2RyYXdhYmxlKTsKLSAg
ICAgICAgbV9kcmF3YWJsZSA9IDA7Ci0gICAgfQorICAgIG1fZHJhd2FibGUucmVzZXQoKTsKIAog
I2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAobV9wbGF0Zm9ybVBsdWdpbldpZGdldCkgewpAQCAt
MjYyLDE4ICsyNTgsMTIgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1HZW9tZXRyeURp
ZENoYW5nZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBEaXNwbGF5KiBkaXNwbGF5
ID0geDExSG9zdERpc3BsYXkoKTsKLSAgICBpZiAobV9kcmF3YWJsZSkKLSAgICAgICAgWEZyZWVQ
aXhtYXAoZGlzcGxheSwgbV9kcmF3YWJsZSk7Ci0KLSAgICBpZiAobV9wbHVnaW5TaXplLmlzRW1w
dHkoKSkgewotICAgICAgICBtX2RyYXdhYmxlID0gMDsKKyAgICBtX2RyYXdhYmxlLnJlc2V0KCk7
CisgICAgaWYgKG1fcGx1Z2luU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBtX2RyYXdhYmxlID0gWENyZWF0ZVBpeG1hcChkaXNwbGF5LCByb290V2luZG93SUQo
KSwgbV9wbHVnaW5TaXplLndpZHRoKCksIG1fcGx1Z2luU2l6ZS5oZWlnaHQoKSwgZGlzcGxheURl
cHRoKCkpOwogCi0gICAgWFN5bmMoZGlzcGxheSwgZmFsc2UpOyAvLyBNYWtlIHN1cmUgdGhhdCB0
aGUgc2VydmVyIGtub3dzIGFib3V0IHRoZSBEcmF3YWJsZS4KKyAgICBtX2RyYXdhYmxlID0gWENy
ZWF0ZVBpeG1hcCh4MTFIb3N0RGlzcGxheSgpLCByb290V2luZG93SUQoKSwgbV9wbHVnaW5TaXpl
LndpZHRoKCksIG1fcGx1Z2luU2l6ZS5oZWlnaHQoKSwgZGlzcGxheURlcHRoKCkpOworICAgIFhT
eW5jKHgxMUhvc3REaXNwbGF5KCksIGZhbHNlKTsgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHNlcnZl
ciBrbm93cyBhYm91dCB0aGUgRHJhd2FibGUuCiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBs
YXRmb3JtVmlzaWJpbGl0eURpZENoYW5nZSgpCkBAIC0zMDcsNyArMjk3LDcgQEAgdm9pZCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRpcnQKICAgICBYR3JhcGhpY3NFeHBvc2VFdmVudCYgZXhwb3NlRXZlbnQgPSB4
ZXZlbnQueGdyYXBoaWNzZXhwb3NlOwogICAgIGV4cG9zZUV2ZW50LnR5cGUgPSBHcmFwaGljc0V4
cG9zZTsKICAgICBleHBvc2VFdmVudC5kaXNwbGF5ID0geDExSG9zdERpc3BsYXkoKTsKLSAgICBl
eHBvc2VFdmVudC5kcmF3YWJsZSA9IG1fZHJhd2FibGU7CisgICAgZXhwb3NlRXZlbnQuZHJhd2Fi
bGUgPSBtX2RyYXdhYmxlLmdldCgpOwogCiAgICAgSW50UmVjdCBleHBvc2VkUmVjdChkaXJ0eVJl
Y3QpOwogICAgIGV4cG9zZUV2ZW50LnggPSBleHBvc2VkUmVjdC54KCk7CkBAIC0zMjQsMTEgKzMx
NCw4IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0CiAgICAgICAgIFhTeW5jKG1fcGx1Z2luRGlz
cGxheSwgZmFsc2UpOwogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oRUZMKSAmJiBV
U0UoQ0FJUk8pKQotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGRyYXdhYmxlU3VyZmFjZSA9
IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobV9wbHVnaW5EaXNwbGF5LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9kcmF3YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqPihtX25wV2luZG93LndzX2lu
Zm8pLT52aXN1YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BsdWdpblNpemUud2lkdGgo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGx1Z2luU2l6ZS5oZWlnaHQoKSkpOworICAg
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGRyYXdhYmxlU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJv
X3hsaWJfc3VyZmFjZV9jcmVhdGUobV9wbHVnaW5EaXNwbGF5LCBtX2RyYXdhYmxlLmdldCgpLAor
ICAgICAgICBzdGF0aWNfY2FzdDxOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRv
dy53c19pbmZvKS0+dmlzdWFsLCBtX3BsdWdpblNpemUud2lkdGgoKSwgbV9wbHVnaW5TaXplLmhl
aWdodCgpKSk7CiAgICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+
Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>