<?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>61442</bug_id>
          
          <creation_ts>2011-05-25 09:08:06 -0700</creation_ts>
          <short_desc>[chromium] Red and Blue channels are swapped in images with accelerated drawing</short_desc>
          <delta_ts>2011-06-23 16:47:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alok Priyadarshi">alokp</reporter>
          <assigned_to name="Alok Priyadarshi">alokp</assigned_to>
          <cc>bsalomon</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>reed</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>409675</commentid>
    <comment_count>0</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-05-25 09:08:06 -0700</bug_when>
    <thetext>Red and Blue channels are swapped in images with --enable-accelerated-drawing flag in chromium. Image layers are fine. It only affects images in content and root layers that use skia to do accelerated drawing.

Test case: http://www.satine.org/research/webkit/snowleopard/snowstack.html

The images on top three rows are on content layers and have red and blue channels swapped. The bottom row (reflection) is a on image layer which is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421356</commentid>
    <comment_count>1</comment_count>
      <attachid>97308</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-06-15 09:14:47 -0700</bug_when>
    <thetext>Created attachment 97308
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421385</commentid>
    <comment_count>2</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-06-15 09:45:23 -0700</bug_when>
    <thetext>If we cleaned up chrome to not confuse SkColor and SkPMColor, I think this would all be unnecessary, since chrome could always define the byte-order for SkPMColor to be whatever it wants (i.e. matching GL&apos;s order).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421405</commentid>
    <comment_count>3</comment_count>
      <attachid>97316</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-06-15 10:07:53 -0700</bug_when>
    <thetext>Created attachment 97316
proposed patch

Fixed merge issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421408</commentid>
    <comment_count>4</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-06-15 10:10:12 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; If we cleaned up chrome to not confuse SkColor and SkPMColor, I think this would all be unnecessary, since chrome could always define the byte-order for SkPMColor to be whatever it wants (i.e. matching GL&apos;s order).

I have not looked at SkPMColor. But I think this patch is still relevant because it consolidates the decision about byte order into one place (PlatformColor) instead of using RGBA everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421413</commentid>
    <comment_count>5</comment_count>
      <attachid>97316</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-15 10:14:13 -0700</bug_when>
    <thetext>Comment on attachment 97316
proposed patch

Attachment 97316 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8866127</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421427</commentid>
    <comment_count>6</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-06-15 10:30:49 -0700</bug_when>
    <thetext>Sorry. Yes, still relevant, since I&apos;m not offering to fix chrome yet. I just intended to make an oh-that-reminds-me comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421429</commentid>
    <comment_count>7</comment_count>
      <attachid>97316</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-15 10:33:30 -0700</bug_when>
    <thetext>Comment on attachment 97316
proposed patch

Attachment 97316 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8866131</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421433</commentid>
    <comment_count>8</comment_count>
      <attachid>97320</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-06-15 10:38:24 -0700</bug_when>
    <thetext>Created attachment 97320
proposed patch

Fixed compile errors on linux and mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422149</commentid>
    <comment_count>9</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-16 12:45:47 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=97320) [details]
&gt; proposed patch
&gt; 
&gt; Fixed compile errors on linux and mac.

I&apos;m not that comfortable with the idea repacking pixels on the CPU for cards that don&apos;t support BGRA textures.  This is possibly because I don&apos;t have enough information about which cards/platforms support this extension, other than knowing that ANGLE always does.

I would much rather just see us continue to choose a different shader to use based on extension support rather than always uploading via BGRA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422159</commentid>
    <comment_count>10</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-06-16 13:22:59 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Created an attachment (id=97320) [details] [details]
&gt; &gt; proposed patch
&gt; &gt; 
&gt; &gt; Fixed compile errors on linux and mac.
&gt; 
&gt; I&apos;m not that comfortable with the idea repacking pixels on the CPU for cards that don&apos;t support BGRA textures.  This is possibly because I don&apos;t have enough information about which cards/platforms support this extension, other than knowing that ANGLE always does.
&gt; 
&gt; I would much rather just see us continue to choose a different shader to use based on extension support rather than always uploading via BGRA.

I thought of using a different shader if BGRA is not supported. But in the current LayerRendererChromium architecture, shader selection is done at compile time using a templated class. Refactoring it may be a big change.

AFAIK most GPUs on little-endian platform like BGRA. Using RGBA is in fact slower because the drivers may be unpacking in software. So the current implementation may already be incurring this cost. Could someone with driver experience comment? We could also look at gpu stats if we collect such information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422182</commentid>
    <comment_count>11</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-16 13:42:41 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; Created an attachment (id=97320) [details] [details] [details]
&gt; &gt; &gt; proposed patch
&gt; &gt; &gt; 
&gt; &gt; &gt; Fixed compile errors on linux and mac.
&gt; &gt; 
&gt; &gt; I&apos;m not that comfortable with the idea repacking pixels on the CPU for cards that don&apos;t support BGRA textures.  This is possibly because I don&apos;t have enough information about which cards/platforms support this extension, other than knowing that ANGLE always does.
&gt; &gt; 
&gt; &gt; I would much rather just see us continue to choose a different shader to use based on extension support rather than always uploading via BGRA.
&gt; 
&gt; I thought of using a different shader if BGRA is not supported. But in the current LayerRendererChromium architecture, shader selection is done at compile time using a templated class. Refactoring it may be a big change.

There&apos;s no refactoring needed.  The templatization of ProgramBinding is just glue to remove duplicated uniform code.  There&apos;s nothing really special about it.

One option would be to just add your own small ProgramBindingBase-derived class that took an extra texture format parameter during initialization and picked between two fragment shaders.  LayerRendererChromium could just own that instead of its current tiling shader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422263</commentid>
    <comment_count>12</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-06-16 14:58:44 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Created an attachment (id=97320) [details] [details]
&gt; &gt; proposed patch
&gt; &gt; 
&gt; &gt; Fixed compile errors on linux and mac.
&gt; 
&gt; I&apos;m not that comfortable with the idea repacking pixels on the CPU for cards that don&apos;t support BGRA textures.  This is possibly because I don&apos;t have enough information about which cards/platforms support this extension, other than knowing that ANGLE always does.
&gt; 
&gt; I would much rather just see us continue to choose a different shader to use based on extension support rather than always uploading via BGRA.

BTW ANGLE always supports BGRA and it is the only format that does not require swizzling. It swizzles RGBA.
RGBA: http://code.google.com/p/angleproject/source/browse/trunk/src/libGLESv2/Texture.cpp#667
BGRA: http://code.google.com/p/angleproject/source/browse/trunk/src/libGLESv2/Texture.cpp#755

BGRA is the optimal data format on MAC. In fact RGBA is not recommended.
http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_texturedata/opengl_texturedata.html#//apple_ref/doc/uid/TP40001987-CH407-SW22

So I think the only question here is linux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422848</commentid>
    <comment_count>13</comment_count>
      <attachid>97643</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-06-17 13:13:23 -0700</bug_when>
    <thetext>Created attachment 97643
proposed patch

Eliminated software swizzling by choosing the shader at run time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424190</commentid>
    <comment_count>14</comment_count>
      <attachid>97643</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-20 19:29:10 -0700</bug_when>
    <thetext>Comment on attachment 97643
proposed patch

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

I don&apos;t understand the extra indirection added to LayerTilerChromium.h.  Why can&apos;t you just typedef two different ProgramBinding&lt;&gt;s to ProgramRGBA and ProgramBGRA?  Otherwise this seems fairly reasonable.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:164
&gt; +    if (!m_skiaContext &amp;&amp; m_contextSupportsTextureFormatBGRA &amp;&amp; m_contextSupportsReadFormatBGRA) {

so what happens if these extensions are not available?  we always return NULL from this function?

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.h:99
&gt; -    typedef ProgramBinding&lt;VertexShaderPosTexTransform, FragmentShaderTexAlpha&gt; Program;
&gt; +    class Program {
&gt; +    public:
&gt; +        virtual unsigned program() const = 0;
&gt; +        virtual int vertexMatrixLocation() const = 0;
&gt; +        virtual int vertexTexTransformLocation() const = 0;
&gt; +        virtual int fragmentAlphaLocation() const = 0;
&gt; +        virtual int fragmentSamplerLocation() const = 0;
&gt; +    };
&gt; +
&gt; +    template&lt;class VertexShader, class FragmentShader&gt;
&gt; +    class ProgramT : public Program {
&gt; +    public:
&gt; +      explicit ProgramT(GraphicsContext3D* context) : m_binding(context) { }
&gt; +
&gt; +      bool initialized() const { return m_binding.initialized(); }
&gt; +      void initialize() { m_binding.initialize(); }
&gt; +
&gt; +      virtual unsigned program() const { return m_binding.program(); }
&gt; +      virtual int vertexMatrixLocation() const { return m_binding.vertexShader().matrixLocation(); }
&gt; +      virtual int vertexTexTransformLocation() const { return m_binding.vertexShader().texTransformLocation(); }
&gt; +      virtual int fragmentAlphaLocation() const { return m_binding.fragmentShader().alphaLocation(); }
&gt; +      virtual int fragmentSamplerLocation() const { return m_binding.fragmentShader().samplerLocation(); }
&gt; +
&gt; +    private:
&gt; +        typedef ProgramBinding&lt;VertexShader, FragmentShader&gt; Binding;
&gt; +        Binding m_binding;
&gt; +    };

I&apos;m confused - why do these two types exist?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424504</commentid>
    <comment_count>15</comment_count>
      <attachid>97643</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-06-21 09:48:13 -0700</bug_when>
    <thetext>Comment on attachment 97643
proposed patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:164
&gt;&gt; +    if (!m_skiaContext &amp;&amp; m_contextSupportsTextureFormatBGRA &amp;&amp; m_contextSupportsReadFormatBGRA) {
&gt; 
&gt; so what happens if these extensions are not available?  we always return NULL from this function?

Yes in that case this function always returns NULL and we fall back to non-accelerated path.

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.h:99
&gt;&gt; +    };
&gt; 
&gt; I&apos;m confused - why do these two types exist?

Because LayerTilerChromium::drawTexturedQuad takes LayerTilerChromium::Program argument and I was trying to avoid making it a template function. In hindsight making it a template function is better. I will upload an updated patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424510</commentid>
    <comment_count>16</comment_count>
      <attachid>98004</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-06-21 10:00:01 -0700</bug_when>
    <thetext>Created attachment 98004
proposed patch

Added template functions drawTiles and drawTexturedQuad to avoid the indirection pointed out by jamesr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425584</commentid>
    <comment_count>17</comment_count>
      <attachid>98004</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-22 14:21:15 -0700</bug_when>
    <thetext>Comment on attachment 98004
proposed patch

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

I wonder if this would be a little clearer if we expressed things in terms of whether the pixel shader swizzled colors or not rather than comparing different texture formats.  Vangelis, Enne - any thoughts?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:140
&gt; +        extensions-&gt;ensureEnabled(&quot;GL_CHROMIUM_map_sub&quot;);
&gt; +    m_contextSupportsTextureFormatBGRA = extensions-&gt;supports(&quot;GL_EXT_texture_format_BGRA8888&quot;);
&gt; +    if (m_contextSupportsTextureFormatBGRA)
&gt; +        extensions-&gt;ensureEnabled(&quot;GL_EXT_texture_format_BGRA8888&quot;);
&gt; +    m_contextSupportsReadFormatBGRA = extensions-&gt;supports(&quot;GL_EXT_read_format_bgra&quot;);
&gt; +    if (m_contextSupportsReadFormatBGRA)
&gt; +        extensions-&gt;ensureEnabled(&quot;GL_EXT_read_format_bgra&quot;);

nitpick: I am pretty sure we don&apos;t need to call ensureEnabled() for anything with the compositor context, since that notion only exists for WebGL contexts.  I&apos;ll double check with Ken/Gregg on this.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1167
&gt; +    if (!m_tilerProgramBGRA)
&gt; +        m_tilerProgramBGRA = adoptPtr(new LayerTilerChromium::ProgramBGRA(m_context.get()));

nitpick: I think in practice we&apos;ll nearly always use the BGRA program, since BGRA_EXT is nearly always available, so it&apos;s probably better to eagerly create this program in initializeSharedObjects() instead of the tilerProgramRGBA.

&gt; Source/WebCore/platform/graphics/chromium/PlatformColor.h:39
&gt; +        return SK_B32_SHIFT ? GraphicsContext3D::SourceFormatRGBA8 : GraphicsContext3D::SourceFormatBGRA8;

what&apos;s SK_B32_SHIFT?  What header defines it (and should we explicitly be including that header in here)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425610</commentid>
    <comment_count>18</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-22 14:43:29 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 98004 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98004&amp;action=review
&gt; 
&gt; I wonder if this would be a little clearer if we expressed things in terms of whether the pixel shader swizzled colors or not rather than comparing different texture formats.  Vangelis, Enne - any thoughts?

I&apos;d find that much less confusing.  As I&apos;m reading it, BGRA pixels with a BGRA texture format use the RGBA shader, because it wouldn&apos;t need swizzling.  Anybody looking at this for the first time might be confused by that and think that mismatch was an error.

I know that the RGBA/BGRA shader names predate this patch by a good while, but it&apos;d be nice to see that confusion cleaned up a little.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425653</commentid>
    <comment_count>19</comment_count>
      <attachid>98004</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-06-22 15:14:41 -0700</bug_when>
    <thetext>Comment on attachment 98004
proposed patch

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

I could rename the shader programs to reflect swizzling. Should I rename the original classes as well?
http://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/chromium/ShaderChromium.h#L117

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:140
&gt;&gt; +        extensions-&gt;ensureEnabled(&quot;GL_EXT_read_format_bgra&quot;);
&gt; 
&gt; nitpick: I am pretty sure we don&apos;t need to call ensureEnabled() for anything with the compositor context, since that notion only exists for WebGL contexts.  I&apos;ll double check with Ken/Gregg on this.

I would be more than happy to remove this kludge if not required.

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1167
&gt;&gt; +        m_tilerProgramBGRA = adoptPtr(new LayerTilerChromium::ProgramBGRA(m_context.get()));
&gt; 
&gt; nitpick: I think in practice we&apos;ll nearly always use the BGRA program, since BGRA_EXT is nearly always available, so it&apos;s probably better to eagerly create this program in initializeSharedObjects() instead of the tilerProgramRGBA.

Actually that is backwards (due to confusing names). If BGRA_EXT is available, you would use the RGBA program because there is no need for swizzling.

&gt;&gt; Source/WebCore/platform/graphics/chromium/PlatformColor.h:39
&gt;&gt; +        return SK_B32_SHIFT ? GraphicsContext3D::SourceFormatRGBA8 : GraphicsContext3D::SourceFormatBGRA8;
&gt; 
&gt; what&apos;s SK_B32_SHIFT?  What header defines it (and should we explicitly be including that header in here)?

That is actually a compile-time flag that instructs skia to use bgra. I will include appropriate header here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425657</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-22 15:18:14 -0700</bug_when>
    <thetext>Yes, if you could rename the shaders in ShaderChromium.h I think that&apos;d be a big improvement.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425710</commentid>
    <comment_count>21</comment_count>
      <attachid>98260</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-06-22 16:14:33 -0700</bug_when>
    <thetext>Created attachment 98260
proposed patch

Addressed most of the comments.
- Renamed shader program.
- Included file where SK_B32_SHIFT is defined.
- Did not removed ensureEnabled() calls because I was not sure if they are necessary. If they are not necessary we should remove them in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426444</commentid>
    <comment_count>22</comment_count>
      <attachid>98260</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-23 14:08:02 -0700</bug_when>
    <thetext>Comment on attachment 98260
proposed patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426445</commentid>
    <comment_count>23</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-23 14:08:37 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; - Did not removed ensureEnabled() calls because I was not sure if they are necessary. If they are not necessary we should remove them in a separate patch.

I agree, I&apos;ll try to figure out wtf is up with these</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426504</commentid>
    <comment_count>24</comment_count>
      <attachid>98260</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-23 14:53:05 -0700</bug_when>
    <thetext>Comment on attachment 98260
proposed patch

Rejecting attachment 98260 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-02&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
60e16085ae5a2e413e0f3754fb1607935957f1d5
r89619 = a874ed9ac633d9541bc963a7e4ebe6a72062c53c
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.
Updating chromium port dependencies using gclient...

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/8933235</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426524</commentid>
    <comment_count>25</comment_count>
      <attachid>98414</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-06-23 15:05:25 -0700</bug_when>
    <thetext>Created attachment 98414
proposed patch

The last patch was missing ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426567</commentid>
    <comment_count>26</comment_count>
      <attachid>98414</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-23 15:55:00 -0700</bug_when>
    <thetext>Comment on attachment 98414
proposed patch

Rejecting attachment 98414 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-01&apos;, &apos;--port...&quot; exit_code: 1

Last 500 characters of output:
f/SkPDFGraphicState.h
U    /mnt/git/webkit-commit-queue/Source/WebKit/chromium/third_party/skia/include/views/SkWindow.h
U    /mnt/git/webkit-commit-queue/Source/WebKit/chromium/third_party/skia/include/views/SkOSWindow_Android.h
U    /mnt/git/webkit-commit-queue/Source/WebKit/chromium/third_party/skia/include/views/SkView.h
Updated to revision 1684.

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/8936205</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426570</commentid>
    <comment_count>27</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-23 15:57:31 -0700</bug_when>
    <thetext>You have to edit the &quot;Reviewed by ...&quot; line in the changelog by hand before updating to cq+ without waiting for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426621</commentid>
    <comment_count>28</comment_count>
      <attachid>98414</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-23 16:47:52 -0700</bug_when>
    <thetext>Comment on attachment 98414
proposed patch

Clearing flags on attachment: 98414

Committed r89634: &lt;http://trac.webkit.org/changeset/89634&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426622</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-23 16:47:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97308</attachid>
            <date>2011-06-15 09:14:47 -0700</date>
            <delta_ts>2011-06-15 10:07:53 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>bgra.patch</filename>
            <type>text/plain</type>
            <size>31432</size>
            <attacher name="Alok Priyadarshi">alokp</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTQwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDYtMTUgIEFsb2sgUHJp
eWFkYXJzaGkgIDxhbG9rcEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBSZWQgYW5kIEJsdWUgY2hhbm5lbHMg
YXJlIHN3YXBwZWQgaW4gaW1hZ2VzIHdpdGggYWNjZWxlcmF0ZWQgZHJhd2luZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE0NDIKKworICAgICAgICBX
ZSB3ZXJlIHVwbG9hZGluZyBCR1JBIHBpeGVscyBpbnRvIFJHQkEgdGV4dHVyZXMgYW5kIHN3YXBw
aW5nIHRoZSBjb21wb25lbnRzIGluIHRoZSBwaXhlbCBzaGFkZXIuCisgICAgICAgIFRoaXMgc3Ry
YXRlZ3kgZG9lcyBub3Qgd29yayB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcgYmVjYXVzZSB3ZSBh
cmUgZGlyZWN0bHkgcmVuZGVyaW5nIHRvIHRoZSB0ZXh0dXJlLCBub3QgdXBsb2FkaW5nIHBpeGVs
cy4KKyAgICAgICAgVGhlIGN1cnJlbnQgYXBwcm9hY2ggaXMgYWxzbyBjb25mdXNpbmcgYW5kIG1h
eSBiZSBpbmVmZmljaWVudCBvbiBzb21lIGRyaXZlcnMgdGhhdCBtYXkgYmUgc3dhcHBpbmcgdGhl
IGNvbXBvbmVudHMgaW4gc29mdHdhcmUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRo
ZSBzd2FwcGluZyBpbiBzaGFkZXIgYW5kIHVzZXMgQkdSQSB0ZXh0dXJlcyBpZiBhdmFpbGFibGUu
CisgICAgICAgIFRoZSB1bmFjY2VsZXJhdGVkIGRyYXdpbmcgcGF0aCBtYXkgZW5kIHVwIHN3YXBw
aW5nIGNvbXBvbmVudHMgaW4gc29mdHdhcmUgaWYgQkdSQSB0ZXh0dXJlIGlzIG5vdCBhdmFpbGFi
bGUsIGJ1dCB0aGF0IGNhc2Ugc2hvdWxkIGJlIHJhcmUuCisKKyAgICAgICAgVGVzdHM6IGNvbXBv
c2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNoaW5nLmh0bWwgKGV4aXN0aW5n
KQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2FtZURhdGFGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnBhY2tQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExh
eWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpza2lhQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
ZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OmZvcm1hdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGFja1BpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRleHR1cmVTdWJJbWFnZTo6dXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVy
ZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnVwZGF0
ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVt
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRp
bGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjp1cGRh
dGVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9y
bUNvbG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvcjo6Zm9ybWF0
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29sb3I6OmJlc3RUZXh0dXJlRm9ybWF0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oOgor
CiAyMDExLTA2LTE1ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlz
aW9uIDg4NjUxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzk5LDYgKzEzOTksMTMgQEAgc3RhdGlj
IHZvaWQgZG9GbG9hdGluZ1BvaW50UGFja2luZyhjb25zdAogICAgIH0KIH0KIAorLy8gUmV0dXJu
cyB0cnVlIGlmIHNvdXJjZURhdGFGb3JtYXQgaXMgc2FtZSBhcyB0aGUgR0wgZGVzdGluYXRpb25G
b3JtYXQuCitzdGF0aWMgYm9vbCBzYW1lRGF0YUZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6U291
cmNlRGF0YUZvcm1hdCBzb3VyY2VEYXRhRm9ybWF0LCB1bnNpZ25lZCBpbnQgZGVzdGluYXRpb25G
b3JtYXQpCit7CisgICAgcmV0dXJuIChzb3VyY2VEYXRhRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dDNEOjpTb3VyY2VGb3JtYXRSR0JBOCAmJiBkZXN0aW5hdGlvbkZvcm1hdCA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6UkdCQSkKKyAgICAgICAgfHwgKHNvdXJjZURhdGFGb3JtYXQgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6OlNvdXJjZUZvcm1hdEJHUkE4ICYmIGRlc3RpbmF0aW9uRm9ybWF0ID09IEV4dGVu
c2lvbnMzRDo6QkdSQV9FWFQpOworfQorCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrUGl4
ZWxzKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0IHNvdXJjZURhdGFG
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3
aWR0aCwKQEAgLTE0MTIsNyArMTQxOSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnBhY2tQ
aXhlbHMoY29uc3QKICAgICBzd2l0Y2ggKGRlc3RpbmF0aW9uVHlwZSkgewogICAgIGNhc2UgVU5T
SUdORURfQllURTogewogICAgICAgICB1aW50OF90KiBkZXN0aW5hdGlvbiA9IHN0YXRpY19jYXN0
PHVpbnQ4X3QqPihkZXN0aW5hdGlvbkRhdGEpOwotICAgICAgICBpZiAoc291cmNlRGF0YUZvcm1h
dCA9PSBTb3VyY2VGb3JtYXRSR0JBOCAmJiBkZXN0aW5hdGlvbkZvcm1hdCA9PSBSR0JBICYmIHNv
dXJjZVVucGFja0FsaWdubWVudCA8PSA0ICYmIGFscGhhT3AgPT0gQWxwaGFEb05vdGhpbmcpIHsK
KyAgICAgICAgaWYgKHNhbWVEYXRhRm9ybWF0KHNvdXJjZURhdGFGb3JtYXQsIGRlc3RpbmF0aW9u
Rm9ybWF0KSAmJiBzb3VyY2VVbnBhY2tBbGlnbm1lbnQgPD0gNCAmJiBhbHBoYU9wID09IEFscGhh
RG9Ob3RoaW5nKSB7CiAgICAgICAgICAgICAvLyBObyBjb252ZXJzaW9uIG5lY2Vzc2FyeS4KICAg
ICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbkRhdGEsIHNvdXJjZURhdGEsIHdpZHRoICogaGVp
Z2h0ICogNCk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gODg2
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MDgsNiArNjA4LDMwIEBAIHB1YmxpYzoKICAgICAgICAg
U291cmNlRm9ybWF0TnVtRm9ybWF0cwogICAgIH07CiAKKyAgICAvLyBQb3NzaWJsZSBhbHBoYSBv
cGVyYXRpb25zIHRoYXQgbWF5IG5lZWQgdG8gb2NjdXIgZHVyaW5nCisgICAgLy8gcGl4ZWwgcGFj
a2luZy4gRklYTUU6IGtBbHBoYURvVW5tdWx0aXBseSBpcyBsb3NzeSBhbmQgbXVzdAorICAgIC8v
IGJlIHJlbW92ZWQuCisgICAgZW51bSBBbHBoYU9wIHsKKyAgICAgICAgQWxwaGFEb05vdGhpbmcg
PSAwLAorICAgICAgICBBbHBoYURvUHJlbXVsdGlwbHkgPSAxLAorICAgICAgICBBbHBoYURvVW5t
dWx0aXBseSA9IDIKKyAgICB9OworCisgICAgLy8gSGVscGVyIGZvciBnZXRJbWFnZURhdGEgd2hp
Y2ggaW1wbGVtZW50cyBwYWNraW5nIG9mIHBpeGVsCisgICAgLy8gZGF0YSBpbnRvIHRoZSBzcGVj
aWZpZWQgT3BlbkdMIGRlc3RpbmF0aW9uIGZvcm1hdCBhbmQgdHlwZS4KKyAgICAvLyBBIHNvdXJj
ZVVucGFja0FsaWdubWVudCBvZiB6ZXJvIGluZGljYXRlcyB0aGF0IHRoZSBzb3VyY2UKKyAgICAv
LyBkYXRhIGlzIHRpZ2h0bHkgcGFja2VkLiBOb24temVybyB2YWx1ZXMgbWF5IHRha2UgYSBzbG93
IHBhdGguCisgICAgLy8gRGVzdGluYXRpb24gZGF0YSB3aWxsIGhhdmUgbm8gZ2FwcyBiZXR3ZWVu
IHJvd3MuCisgICAgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZURhdGEsCisg
ICAgICAgICAgICAgICAgICAgIFNvdXJjZURhdGFGb3JtYXQgc291cmNlRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzb3Vy
Y2VVbnBhY2tBbGlnbm1lbnQsCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkZXN0
aW5hdGlvbkZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RpbmF0
aW9uVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgQWxwaGFPcCwKKyAgICAgICAgICAgICAgICAg
ICAgdm9pZCogZGVzdGluYXRpb25EYXRhKTsKKwogICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIC8v
IEVudHJ5IHBvaW50cyBmb3IgV2ViR0wuCiAgICAgLy8KQEAgLTg1MSwzMCArODc1LDYgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2Zp
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3Ip
OwogCi0gICAgLy8gUG9zc2libGUgYWxwaGEgb3BlcmF0aW9ucyB0aGF0IG1heSBuZWVkIHRvIG9j
Y3VyIGR1cmluZwotICAgIC8vIHBpeGVsIHBhY2tpbmcuIEZJWE1FOiBrQWxwaGFEb1VubXVsdGlw
bHkgaXMgbG9zc3kgYW5kIG11c3QKLSAgICAvLyBiZSByZW1vdmVkLgotICAgIGVudW0gQWxwaGFP
cCB7Ci0gICAgICAgIEFscGhhRG9Ob3RoaW5nID0gMCwKLSAgICAgICAgQWxwaGFEb1ByZW11bHRp
cGx5ID0gMSwKLSAgICAgICAgQWxwaGFEb1VubXVsdGlwbHkgPSAyCi0gICAgfTsKLQotICAgIC8v
IEhlbHBlciBmb3IgZ2V0SW1hZ2VEYXRhIHdoaWNoIGltcGxlbWVudHMgcGFja2luZyBvZiBwaXhl
bAotICAgIC8vIGRhdGEgaW50byB0aGUgc3BlY2lmaWVkIE9wZW5HTCBkZXN0aW5hdGlvbiBmb3Jt
YXQgYW5kIHR5cGUuCi0gICAgLy8gQSBzb3VyY2VVbnBhY2tBbGlnbm1lbnQgb2YgemVybyBpbmRp
Y2F0ZXMgdGhhdCB0aGUgc291cmNlCi0gICAgLy8gZGF0YSBpcyB0aWdodGx5IHBhY2tlZC4gTm9u
LXplcm8gdmFsdWVzIG1heSB0YWtlIGEgc2xvdyBwYXRoLgotICAgIC8vIERlc3RpbmF0aW9uIGRh
dGEgd2lsbCBoYXZlIG5vIGdhcHMgYmV0d2VlbiByb3dzLgotICAgIGJvb2wgcGFja1BpeGVscyhj
b25zdCB1aW50OF90KiBzb3VyY2VEYXRhLAotICAgICAgICAgICAgICAgICAgICBTb3VyY2VEYXRh
Rm9ybWF0IHNvdXJjZURhdGFGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwKLSAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZVVucGFja0FsaWdubWVudCwKLSAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RpbmF0aW9uRm9ybWF0LAotICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGVzdGluYXRpb25UeXBlLAotICAgICAgICAgICAgICAg
ICAgICBBbHBoYU9wIGFscGhhT3AsCi0gICAgICAgICAgICAgICAgICAgIHZvaWQqIGRlc3RpbmF0
aW9uRGF0YSk7Ci0KICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykKICAgICAvLyBU
YWtlIGludG8gYWNjb3VudCB0aGUgdXNlcidzIHJlcXVlc3RlZCBjb250ZXh0IGNyZWF0aW9uIGF0
dHJpYnV0ZXMsCiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFu
ZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5jcHAJKHJldmlzaW9uIDg4NjUxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5o
IgogI2luY2x1ZGUgIkxheWVyVGlsZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQnJp
ZGdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVy
QmFja2luZy5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KQEAgLTIyOSw2ICsyMzAsNyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpj
cmVhdGVUaWxlcklmCiAgICAgbV90aWxlciA9IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKAog
ICAgICAgICBsYXllclJlbmRlcmVyKCksCiAgICAgICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVyKCks
CisgICAgICAgIFBsYXRmb3JtQ29sb3I6OmJlc3RUZXh0dXJlRm9ybWF0KGxheWVyUmVuZGVyZXJD
b250ZXh0KCkpLAogICAgICAgICBJbnRTaXplKGRlZmF1bHRUaWxlU2l6ZSwgZGVmYXVsdFRpbGVT
aXplKSwKICAgICAgICAgTGF5ZXJUaWxlckNocm9taXVtOjpIYXNCb3JkZXJUZXhlbHMpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXll
ckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA4ODY1MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJv
bWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJMYXll
clRleHR1cmUuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgogI2luY2x1ZGUg
IkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzMsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNs
aXBwZWREZXN0UmVjdC5tb3ZlKGNsaXBwZWRTb3VyY2VSZWN0LmxvY2F0aW9uKCkgLSBzb3VyY2VS
ZWN0LmxvY2F0aW9uKCkpOwogICAgICAgICBjbGlwcGVkRGVzdFJlY3Quc2V0U2l6ZShjbGlwcGVk
U291cmNlUmVjdC5zaXplKCkpOwogCi0gICAgICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKG1faW1h
Z2UucGl4ZWxzKCksIGltYWdlUmVjdCgpLCBjbGlwcGVkU291cmNlUmVjdCwgY2xpcHBlZERlc3RS
ZWN0LCBjb250ZXh0KCkpOworICAgICAgICBtX3RleFN1YkltYWdlLnVwbG9hZChtX2ltYWdlLnBp
eGVscygpLCBpbWFnZVJlY3QoKSwgUGxhdGZvcm1Db2xvcjo6Zm9ybWF0KCksIGNsaXBwZWRTb3Vy
Y2VSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY2xpcHBlZERlc3RSZWN0LCBjb250ZXh0KCkpOwog
ICAgIH0KIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcAkocmV2aXNpb24gODg2NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlLmgiCiAjaW5jbHVkZSAiTGF5ZXJU
ZXh0dXJlVXBkYXRlckNhbnZhcy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIlRyZWVTeW5jaHJvbml6ZXIuaCIKQEAgLTEy
MiwxNiArMTIzLDI2IEBAIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm8K
ICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9jaGlsZENvbnRleHRzV2VyZUNvcGll
ZChmYWxzZSkKICAgICAsIG1fY29udGV4dFN1cHBvcnRzTGF0Y2goZmFsc2UpCisgICAgLCBtX2Nv
bnRleHRTdXBwb3J0c1RleHR1cmVGb3JtYXRCR1JBKGZhbHNlKQorICAgICwgbV9jb250ZXh0U3Vw
cG9ydHNSZWFkRm9ybWF0QkdSQShmYWxzZSkKICAgICAsIG1fYW5pbWF0aW5nKGZhbHNlKQogICAg
ICwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSgwKQogewotICAgIG1fY29udGV4dFN1cHBvcnRzTGF0
Y2ggPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX2xh
dGNoIik7Ci0gICAgbV9jb250ZXh0U3VwcG9ydHNNYXBTdWIgPSBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX21hcF9zdWIiKTsKKyAgICBXZWJDb3JlOjpF
eHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKKyAg
ICBtX2NvbnRleHRTdXBwb3J0c0xhdGNoID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9N
SVVNX2xhdGNoIik7CisgICAgbV9jb250ZXh0U3VwcG9ydHNNYXBTdWIgPSBleHRlbnNpb25zLT5z
dXBwb3J0cygiR0xfQ0hST01JVU1fbWFwX3N1YiIpOwogICAgIGlmIChtX2NvbnRleHRTdXBwb3J0
c01hcFN1YikKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJs
ZWQoIkdMX0NIUk9NSVVNX21hcF9zdWIiKTsKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5h
YmxlZCgiR0xfQ0hST01JVU1fbWFwX3N1YiIpOworICAgIG1fY29udGV4dFN1cHBvcnRzVGV4dHVy
ZUZvcm1hdEJHUkEgPSBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZm9ybWF0
X0JHUkE4ODg4Iik7CisgICAgaWYgKG1fY29udGV4dFN1cHBvcnRzVGV4dHVyZUZvcm1hdEJHUkEp
CisgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2Zvcm1h
dF9CR1JBODg4OCIpOworICAgIG1fY29udGV4dFN1cHBvcnRzUmVhZEZvcm1hdEJHUkEgPSBleHRl
bnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEiKTsKKyAgICBpZiAobV9j
b250ZXh0U3VwcG9ydHNSZWFkRm9ybWF0QkdSQSkKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJl
RW5hYmxlZCgiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEiKTsKKwogICAgIG1faGFyZHdhcmVDb21w
b3NpdGluZyA9IGluaXRpYWxpemVTaGFyZWRPYmplY3RzKCk7CiAKLSAgICBtX3Jvb3RMYXllckNv
bnRlbnRUaWxlciA9IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIGNyZWF0ZVJvb3RM
YXllclRleHR1cmVVcGRhdGVyKGNvbnRlbnRQYWludCksIEludFNpemUoMjU2LCAyNTYpLCBMYXll
clRpbGVyQ2hyb21pdW06Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICBtX3Jvb3RMYXllckNvbnRlbnRU
aWxlciA9IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIGNyZWF0ZVJvb3RMYXllclRl
eHR1cmVVcGRhdGVyKGNvbnRlbnRQYWludCksIFBsYXRmb3JtQ29sb3I6OmJlc3RUZXh0dXJlRm9y
bWF0KG1fY29udGV4dC5nZXQoKSksIEludFNpemUoMjU2LCAyNTYpLCBMYXllclRpbGVyQ2hyb21p
dW06Ok5vQm9yZGVyVGV4ZWxzKTsKICAgICBBU1NFUlQobV9yb290TGF5ZXJDb250ZW50VGlsZXIp
OwogCiAgICAgbV9oZWFkc1VwRGlzcGxheSA9IENDSGVhZHNVcERpc3BsYXk6OmNyZWF0ZSh0aGlz
KTsKQEAgLTE1MSwxMSArMTYyLDcgQEAgR3JhcGhpY3NDb250ZXh0M0QqIExheWVyUmVuZGVyZXJD
aHJvbWl1bQogI2lmIFVTRShTS0lBKQogR3JDb250ZXh0KiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnNraWFDb250ZXh0KCkKIHsKLSAgICBpZiAoIW1fc2tpYUNvbnRleHQpIHsKLSAgICAgICAgV2Vi
Q29yZTo6RXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCk7Ci0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2Zv
cm1hdF9CR1JBODg4OCIpOwotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9F
WFRfcmVhZF9mb3JtYXRfYmdyYSIpOwotCisgICAgaWYgKCFtX3NraWFDb250ZXh0ICYmIG1fY29u
dGV4dFN1cHBvcnRzVGV4dHVyZUZvcm1hdEJHUkEgJiYgbV9jb250ZXh0U3VwcG9ydHNSZWFkRm9y
bWF0QkdSQSkgewogICAgICAgICBtX3NraWFDb250ZXh0ID0gYWRvcHRQdHIoR3JDb250ZXh0OjpD
cmVhdGVHTFNoYWRlckNvbnRleHQoKSk7CiAgICAgICAgIC8vIExpbWl0IHRoZSBudW1iZXIgb2Yg
dGV4dHVyZXMgd2UgaG9sZCBpbiB0aGUgYml0bWFwLT50ZXh0dXJlIGNhY2hlLgogICAgICAgICBz
dGF0aWMgY29uc3QgaW50IG1heFRleHR1cmVDYWNoZUNvdW50ID0gNTEyOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgJKHJldmlzaW9uIDg4NjUxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0Nyw2ICsyNDcsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBt
X2NvbnRleHRTdXBwb3J0c0xhdGNoOwogICAgIGJvb2wgbV9jb250ZXh0U3VwcG9ydHNNYXBTdWI7
CisgICAgYm9vbCBtX2NvbnRleHRTdXBwb3J0c1RleHR1cmVGb3JtYXRCR1JBOworICAgIGJvb2wg
bV9jb250ZXh0U3VwcG9ydHNSZWFkRm9ybWF0QkdSQTsKIAogICAgIGJvb2wgbV9hbmltYXRpbmc7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGV4dHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZS5oCShyZXZpc2lvbiA4ODY1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkxheWVyVGV4dHVyZSgp
OwogCisgICAgdW5zaWduZWQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KICAg
ICBib29sIGlzVmFsaWQoY29uc3QgSW50U2l6ZSYsIHVuc2lnbmVkIGZvcm1hdCk7CiAgICAgYm9v
bCByZXNlcnZlKGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBmb3JtYXQpOwogICAgIGJvb2wgaXNS
ZXNlcnZlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCShyZXZp
c2lvbiA4ODY1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDM0
IEBACiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKIAogI2luY2x1ZGUgIkV4dGVu
c2lvbnMzRENocm9taXVtLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCisvLyBDb3BpZXMgcGl4ZWwgZGF0YSBmcm9tIGltYWdlIGludG8g
ZGVzdC4KKy8vIFBlcmZvcm1zIGFwcHJvcHJpYXRlIHRyYW5zZm9ybWF0aW9uIGZyb20gc291cmNl
Rm9ybWF0IHRvIGRlc3RGb3JtYXQuCitzdGF0aWMgdm9pZCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4
X3QqIGltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBpbWFnZVJl
Y3QsCisgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRh
Rm9ybWF0IHNvdXJjZUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZGVzdEZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCogZGVzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCit7CisgICAgLy8gT2Zmc2V0IGZy
b20gaW1hZ2UtcmVjdCB0byBzb3VyY2UtcmVjdC4KKyAgICBJbnRQb2ludCBvZmZzZXQoc291cmNl
UmVjdC54KCkgLSBpbWFnZVJlY3QueCgpLCBzb3VyY2VSZWN0LnkoKSAtIGltYWdlUmVjdC55KCkp
OworICAgIGlmIChpbWFnZVJlY3Qud2lkdGgoKSA9PSBzb3VyY2VSZWN0LndpZHRoKCkgJiYgIW9m
ZnNldC54KCkpIHsKKyAgICAgICAgY29uc3QgdWludDhfdCogc3JjID0gJmltYWdlWzQgKiBvZmZz
ZXQueSgpICogaW1hZ2VSZWN0LndpZHRoKCldOworICAgICAgICBjb250ZXh0LT5wYWNrUGl4ZWxz
KHNyYywgc291cmNlRm9ybWF0LCBzb3VyY2VSZWN0LndpZHRoKCksIHNvdXJjZVJlY3QuaGVpZ2h0
KCksIDAsIGRlc3RGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBHcmFw
aGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsIGRlc3QpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIFN0cmlkZXMgbm90IGVxdWFsLCBzbyBkbyBhIHJvdy1ieS1yb3cgY29weSBmcm9tIHNv
dXJjZSB0byBkZXN0aW5hdGlvbi4KKyAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgc291
cmNlUmVjdC5oZWlnaHQoKTsgKytyb3cpIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHNy
YyA9ICZpbWFnZVs0ICogKG9mZnNldC54KCkgKyAob2Zmc2V0LnkoKSArIHJvdykgKiBpbWFnZVJl
Y3Qud2lkdGgoKSldOworICAgICAgICAgICAgdWludDhfdCogZHN0ID0gJmRlc3Rbc291cmNlUmVj
dC53aWR0aCgpICogNCAqIHJvd107CisgICAgICAgICAgICBjb250ZXh0LT5wYWNrUGl4ZWxzKHNy
Yywgc291cmNlRm9ybWF0LCBzb3VyY2VSZWN0LndpZHRoKCksIDEsIDAsIGRlc3RGb3JtYXQsIEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFE
b05vdGhpbmcsIGRzdCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIExheWVyVGV4dHVyZVN1Yklt
YWdlOjpMYXllclRleHR1cmVTdWJJbWFnZShib29sIHVzZU1hcFRleFN1YkltYWdlKQogICAgIDog
bV91c2VNYXBUZXhTdWJJbWFnZSh1c2VNYXBUZXhTdWJJbWFnZSkKIHsKQEAgLTUzLDY3ICs3Nyw0
NiBAQCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjpzZXRTdWJJbWFnZVNpCiB9CiAKIHZvaWQg
TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZChjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgaW1hZ2VSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRh
Rm9ybWF0IHNvdXJjZUZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBkZXN0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCkKIHsKKyAgICBBU1NFUlQoc291cmNlUmVjdC5zaXplKCkgPT0g
ZGVzdFJlY3Quc2l6ZSgpKTsKKyAgICBBU1NFUlQoKHNvdXJjZVJlY3Quc2l6ZSgpIC0gbV9zdWJJ
bWFnZVNpemUpLmlzRW1wdHkoKSk7CisKICAgICBpZiAobV91c2VNYXBUZXhTdWJJbWFnZSkKLSAg
ICAgICAgdXBsb2FkV2l0aE1hcFRleFN1YkltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0LCBjb250ZXh0KTsKKyAgICAgICAgdXBsb2FkV2l0aE1hcFRleFN1YkltYWdl
KGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZUZvcm1hdCwgc291cmNlUmVjdCwgZGVzdEZvcm1hdCwg
ZGVzdFJlY3QsIGNvbnRleHQpOwogICAgIGVsc2UKLSAgICAgICAgdXBsb2FkV2l0aFRleFN1Yklt
YWdlKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBjb250ZXh0KTsKKyAg
ICAgICAgdXBsb2FkV2l0aFRleFN1YkltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZUZvcm1h
dCwgc291cmNlUmVjdCwgZGVzdEZvcm1hdCwgZGVzdFJlY3QsIGNvbnRleHQpOwogfQogCiB2b2lk
IExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoY29uc3QgdWludDhf
dCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRGF0YUZvcm1hdCBzb3Vy
Y2VGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZGVzdEZvcm1hdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFtX3N1
YkltYWdlKQogICAgICAgICBtX3N1YkltYWdlID0gYWRvcHRBcnJheVB0cihuZXcgdWludDhfdFtt
X3N1YkltYWdlU2l6ZS53aWR0aCgpICogbV9zdWJJbWFnZVNpemUuaGVpZ2h0KCkgKiA0XSk7CiAK
LSAgICAvLyBPZmZzZXQgZnJvbSBpbWFnZS1yZWN0IHRvIHNvdXJjZS1yZWN0LgotICAgIEludFBv
aW50IG9mZnNldChzb3VyY2VSZWN0LngoKSAtIGltYWdlUmVjdC54KCksIHNvdXJjZVJlY3QueSgp
IC0gaW1hZ2VSZWN0LnkoKSk7Ci0KLSAgICBjb25zdCB1aW50OF90KiBwaXhlbFNvdXJjZTsKLSAg
ICBpZiAoaW1hZ2VSZWN0LndpZHRoKCkgPT0gc291cmNlUmVjdC53aWR0aCgpICYmICFvZmZzZXQu
eCgpKQotICAgICAgICBwaXhlbFNvdXJjZSA9ICZpbWFnZVs0ICogb2Zmc2V0LnkoKSAqIGltYWdl
UmVjdC53aWR0aCgpXTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gU3RyaWRlcyBub3QgZXF1YWws
IHNvIGRvIGEgcm93LWJ5LXJvdyBtZW1jcHkgZnJvbSB0aGUKLSAgICAgICAgLy8gcGFpbnQgcmVz
dWx0cyBpbnRvIGEgdGVtcCBidWZmZXIgZm9yIHVwbG9hZGluZy4KLSAgICAgICAgZm9yIChpbnQg
cm93ID0gMDsgcm93IDwgZGVzdFJlY3QuaGVpZ2h0KCk7ICsrcm93KQotICAgICAgICAgICAgbWVt
Y3B5KCZtX3N1YkltYWdlW2Rlc3RSZWN0LndpZHRoKCkgKiA0ICogcm93XSwKLSAgICAgICAgICAg
ICAgICAgICAmaW1hZ2VbNCAqIChvZmZzZXQueCgpICsgKG9mZnNldC55KCkgKyByb3cpICogaW1h
Z2VSZWN0LndpZHRoKCkpXSwKLSAgICAgICAgICAgICAgICAgICBkZXN0UmVjdC53aWR0aCgpICog
NCk7Ci0KLSAgICAgICAgcGl4ZWxTb3VyY2UgPSAmbV9zdWJJbWFnZVswXTsKLSAgICB9Ci0gICAg
Y29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwg
ZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0Lmhl
aWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lH
TkVEX0JZVEUsIHBpeGVsU291cmNlKTsKKyAgICBwYWNrUGl4ZWxzKGltYWdlLCBpbWFnZVJlY3Qs
IHNvdXJjZUZvcm1hdCwgc291cmNlUmVjdCwgZGVzdEZvcm1hdCwgbV9zdWJJbWFnZS5nZXQoKSwg
Y29udGV4dCk7CisgICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRo
KCksIGRlc3RSZWN0LmhlaWdodCgpLCBkZXN0Rm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5T
SUdORURfQllURSwgbV9zdWJJbWFnZS5nZXQoKSk7CiB9CiAKIHZvaWQgTGF5ZXJUZXh0dXJlU3Vi
SW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29u
c3QgSW50UmVjdCYgaW1hZ2VSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0IHNvdXJjZUZvcm1h
dCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBkZXN0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKLSAgICAvLyBPZmZzZXQg
ZnJvbSBpbWFnZS1yZWN0IHRvIHNvdXJjZS1yZWN0LgotICAgIEludFBvaW50IG9mZnNldChzb3Vy
Y2VSZWN0LngoKSAtIGltYWdlUmVjdC54KCksIHNvdXJjZVJlY3QueSgpIC0gaW1hZ2VSZWN0Lnko
KSk7Ci0KICAgICAvLyBVcGxvYWQgdGlsZSBkYXRhIHZpYSBhIG1hcHBlZCB0cmFuc2ZlciBidWZm
ZXIKICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4
dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKLSAgICB1aW50
OF90KiBwaXhlbERlc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4
U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0
UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0
KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURf
QllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKKyAgICB1aW50OF90KiBw
aXhlbERlc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1h
Z2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54
KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIGRl
c3RGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RD
aHJvbWl1bTo6V1JJVEVfT05MWSkpOwogCiAgICAgaWYgKCFwaXhlbERlc3QpIHsKLSAgICAgICAg
dXBsb2FkV2l0aFRleFN1YkltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RS
ZWN0LCBjb250ZXh0KTsKKyAgICAgICAgdXBsb2FkV2l0aFRleFN1YkltYWdlKGltYWdlLCBpbWFn
ZVJlY3QsIHNvdXJjZUZvcm1hdCwgc291cmNlUmVjdCwgZGVzdEZvcm1hdCwgZGVzdFJlY3QsIGNv
bnRleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGltYWdlUmVjdC53aWR0
aCgpID09IHNvdXJjZVJlY3Qud2lkdGgoKSAmJiAhb2Zmc2V0LngoKSkKLSAgICAgICAgbWVtY3B5
KHBpeGVsRGVzdCwgJmltYWdlWzQgKiBvZmZzZXQueSgpICogaW1hZ2VSZWN0LndpZHRoKCldLCBp
bWFnZVJlY3Qud2lkdGgoKSAqIGRlc3RSZWN0LmhlaWdodCgpICogNCk7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIC8vIFN0cmlkZXMgbm90IGVxdWFsLCBzbyBkbyBhIHJvdy1ieS1yb3cgbWVtY3B5IGZy
b20gdGhlCi0gICAgICAgIC8vIHBhaW50IHJlc3VsdHMgaW50byB0aGUgcGl4ZWxEZXN0Ci0gICAg
ICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGRlc3RSZWN0LmhlaWdodCgpOyArK3JvdykKLSAg
ICAgICAgICAgIG1lbWNweSgmcGl4ZWxEZXN0W2Rlc3RSZWN0LndpZHRoKCkgKiA0ICogcm93XSwK
LSAgICAgICAgICAgICAgICAgICAmaW1hZ2VbNCAqIChvZmZzZXQueCgpICsgKG9mZnNldC55KCkg
KyByb3cpICogaW1hZ2VSZWN0LndpZHRoKCkpXSwKLSAgICAgICAgICAgICAgICAgICBkZXN0UmVj
dC53aWR0aCgpICogNCk7Ci0gICAgfQorICAgIHBhY2tQaXhlbHMoaW1hZ2UsIGltYWdlUmVjdCwg
c291cmNlRm9ybWF0LCBzb3VyY2VSZWN0LCBkZXN0Rm9ybWF0LCBwaXhlbERlc3QsIGNvbnRleHQp
OwogICAgIGV4dGVuc2lvbnMtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKHBpeGVsRGVzdCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyVGV4dHVyZVN1YkltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaAkocmV2aXNpb24gODg2
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVTdWJJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
RC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVk
ZSA8d3RmL093bkFycmF5UHRyLmg+CkBAIC00NCwxNSArNDUsMTggQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRTdWJJbWFnZVNpemUoY29uc3QgSW50U2l6ZSYpOwogICAgIHZvaWQgdXBsb2FkKGNv
bnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCi0gICAgICAgICAg
ICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qs
CisgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZURhdGFGb3JtYXQgc291
cmNlRm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgIEdD
M0RlbnVtIGRlc3RGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAogICAgICAgICAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dDNEKik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGxvYWRXaXRo
VGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVj
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRGF0YUZvcm1hdCBzb3VyY2VGb3JtYXQsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0MzRGVudW0gZGVzdEZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lkIHVwbG9h
ZFdpdGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYg
aW1hZ2VSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0IHNv
dXJjZUZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQzNEZW51bSBkZXN0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQz
RCopOwogCiAgICAgYm9vbCBtX3VzZU1hcFRleFN1YkltYWdlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAJKHJldmlzaW9uIDg4NjUxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRl
ckNhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIkxheWVyVGV4dHVyZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKICNpbmNs
dWRlICJUcmFjZUV2ZW50LmgiCiAKICNpZiBVU0UoU0tJQSkKQEAgLTg3LDcgKzg4LDcgQEAgdm9p
ZCBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwOjp1cGRhdGVUZQogICAgIFBsYXRmb3JtQ2FudmFz
OjpBdXRvTG9ja2VyIGxvY2tlcigmbV9jYW52YXMpOwogCiAgICAgdGV4dHVyZS0+YmluZFRleHR1
cmUoKTsKLSAgICBtX3RleFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRS
ZWN0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBjb250ZXh0KCkpOworICAgIG1fdGV4U3ViSW1h
Z2UudXBsb2FkKGxvY2tlci5waXhlbHMoKSwgY29udGVudFJlY3QoKSwgUGxhdGZvcm1Db2xvcjo6
Zm9ybWF0KCksIHNvdXJjZVJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBkZXN0UmVjdCwgY29udGV4
dCgpKTsKIH0KIAogI2lmIFVTRShTS0lBKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21p
dW0uY3BwCShyZXZpc2lvbiA4ODY1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDE2ICs0MiwxNyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NPd25QdHI8TGF5ZXJUaWxlckNocm9taXVtPiBMYXllclRpbGVyQ2hyb21pdW06OmNy
ZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIFBhc3NPd25QdHI8TGF5
ZXJUZXh0dXJlVXBkYXRlcj4gdGV4dHVyZVVwZGF0ZXIsIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXIpCitQYXNzT3duUHRyPExheWVyVGlsZXJDaHJvbWl1
bT4gTGF5ZXJUaWxlckNocm9taXVtOjpjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXll
clJlbmRlcmVyLCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHRleHR1cmVVcGRhdGVy
LCBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9yZGVy
VGV4ZWxPcHRpb24gYm9yZGVyKQogewogICAgIGlmICghbGF5ZXJSZW5kZXJlciB8fCB0aWxlU2l6
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBMYXllclRpbGVyQ2hyb21pdW0obGF5ZXJSZW5kZXJlciwgdGV4dHVyZVVwZGF0ZXIs
IHRpbGVTaXplLCBib3JkZXIpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVyVGlsZXJD
aHJvbWl1bShsYXllclJlbmRlcmVyLCB0ZXh0dXJlVXBkYXRlciwgdGV4dHVyZUZvcm1hdCwgdGls
ZVNpemUsIGJvcmRlcikpOwogfQogCi1MYXllclRpbGVyQ2hyb21pdW06OkxheWVyVGlsZXJDaHJv
bWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIFBhc3NPd25QdHI8TGF5
ZXJUZXh0dXJlVXBkYXRlcj4gdGV4dHVyZVVwZGF0ZXIsIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXIpCi0gICAgOiBtX3NraXBzRHJhdyhmYWxzZSkKK0xh
eWVyVGlsZXJDaHJvbWl1bTo6TGF5ZXJUaWxlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1
bSogbGF5ZXJSZW5kZXJlciwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiB0ZXh0dXJl
VXBkYXRlciwgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUs
IEJvcmRlclRleGVsT3B0aW9uIGJvcmRlcikKKyAgICA6IG1fdGV4dHVyZUZvcm1hdCh0ZXh0dXJl
Rm9ybWF0KQorICAgICwgbV9za2lwc0RyYXcoZmFsc2UpCiAgICAgLCBtX3RpbGluZ0RhdGEobWF4
KHRpbGVTaXplLndpZHRoKCksIHRpbGVTaXplLmhlaWdodCgpKSwgMCwgMCwgYm9yZGVyID09IEhh
c0JvcmRlclRleGVscykKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiAg
ICAgLCBtX2xheWVyUmVuZGVyZXIobGF5ZXJSZW5kZXJlcikKQEAgLTI0MiwxMCArMjQzLDEwIEBA
IHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUKICAgICAgICAgICAgIFRp
bGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAg
ICAgICAgICAgdGlsZSA9IGNyZWF0ZVRpbGUoaSwgaik7Ci0gICAgICAgICAgICBpZiAoIXRpbGUt
PnRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkp
CisgICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVTaXplLCBt
X3RleHR1cmVGb3JtYXQpKQogICAgICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlMYXllclJlY3Qg
PSB0aWxlTGF5ZXJSZWN0KHRpbGUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHRpbGUtPnRleHR1cmUoKS0+cmVzZXJ2ZShtX3RpbGVTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSk7CisgICAgICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5yZXNlcnZlKG1fdGlsZVNp
emUsIG1fdGV4dHVyZUZvcm1hdCk7CiAgICAgICAgICAgICBkaXJ0eUxheWVyUmVjdC51bml0ZSh0
aWxlLT5tX2RpcnR5TGF5ZXJSZWN0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTI5MSw3ICsyOTIs
NyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6dXBkYXRlUmVjdCgpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5pc1Jlc2Vy
dmVkKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+cmVzZXJ2ZSht
X3RpbGVTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXRpbGUtPnRleHR1cmUoKS0+cmVzZXJ2ZShtX3RpbGVTaXplLCBtX3RleHR1cmVGb3JtYXQp
KSB7CiAgICAgICAgICAgICAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgcmVzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUaWxlckNocm9taXVtLmgJKHJldmlzaW9uIDg4NjUxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTGF5ZXJUaWxlckNocm9taXVtIHsKIHB1
YmxpYzoKICAgICBlbnVtIEJvcmRlclRleGVsT3B0aW9uIHsgSGFzQm9yZGVyVGV4ZWxzLCBOb0Jv
cmRlclRleGVscyB9OwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJUaWxlckNocm9taXVt
PiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgUGFzc093blB0cjxMYXllclRleHR1cmVV
cGRhdGVyPiwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9uKTsKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxMYXllclRpbGVyQ2hyb21pdW0+IGNyZWF0ZShMYXllclJlbmRl
cmVyQ2hyb21pdW0qLCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+LCBHQzNEZW51bSB0
ZXh0dXJlRm9ybWF0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9yZGVyVGV4ZWxPcHRpb24p
OwogCiAgICAgfkxheWVyVGlsZXJDaHJvbWl1bSgpOwogCkBAIC02OCwxMyArNjgsMTMgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBza2lwc0RyYXcoKSBjb25zdCB7IHJldHVybiBtX3NraXBzRHJhdzsg
fQogCi0gICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zv
cm0sIEZyYWdtZW50U2hhZGVyVGV4QWxwaGE+IFByb2dyYW07CisgICAgdHlwZWRlZiBQcm9ncmFt
QmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVyUkdCQVRl
eEFscGhhPiBQcm9ncmFtOwogCiAgICAgLy8gSWYgdGhpcyB0aWxlciBoYXMgZXhhY3RseSBvbmUg
dGlsZSwgcmV0dXJuIGl0cyB0ZXh0dXJlLiBPdGhlcndpc2UsIG51bGwuCiAgICAgTGF5ZXJUZXh0
dXJlKiBnZXRTaW5nbGVUZXh0dXJlKCk7CiAKIHByaXZhdGU6Ci0gICAgTGF5ZXJUaWxlckNocm9t
aXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRl
cj4sIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBCb3JkZXJUZXhlbE9wdGlvbik7CisgICAgTGF5
ZXJUaWxlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIFBhc3NPd25QdHI8TGF5ZXJU
ZXh0dXJlVXBkYXRlcj4sIEdDM0RlbnVtIHRleHR1cmVGb3JtYXQsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBCb3JkZXJUZXhlbE9wdGlvbik7CiAKICAgICBjbGFzcyBUaWxlIDogcHVibGljIFJl
ZkNvdW50ZWQ8VGlsZT4gewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaWxlKTsKQEAg
LTEyMSw2ICsxMjEsOCBAQCBwcml2YXRlOgogICAgIEludFJlY3QgdGlsZUNvbnRlbnRSZWN0KGNv
bnN0IFRpbGUqKSBjb25zdDsKICAgICBJbnRSZWN0IHRpbGVMYXllclJlY3QoY29uc3QgVGlsZSop
IGNvbnN0OwogCisgICAgR0MzRGVudW0gbV90ZXh0dXJlRm9ybWF0OworCiAgICAgSW50U2l6ZSBt
X3RpbGVTaXplOwogICAgIEludFBvaW50IG1fbGF5ZXJQb3NpdGlvbjsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRm
b3JtQ29sb3IuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1BsYXRmb3JtQ29sb3IuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1Db2xvcl9oCisjZGVmaW5lIFBsYXRmb3JtQ29sb3Jf
aAorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQbGF0Zm9ybUNvbG9yIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZURhdGFGb3JtYXQgZm9y
bWF0KCkKKyAgICB7CisjaWYgVVNFKFNLSUEpCisgICAgICAgIHJldHVybiBTS19CMzJfU0hJRlQg
PyBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCQTggOiBHcmFwaGljc0NvbnRleHQz
RDo6U291cmNlRm9ybWF0QkdSQTg7CisjZWxpZiBVU0UoQ0cpCisgICAgICAgIHJldHVybiBHcmFw
aGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QkdSQTg7CisjZW5kaWYKKyAgICB9CisKKyAgICAv
LyBSZXR1cm5zIHRoZSBtb3N0IGVmZmljaWVudCB0ZXh0dXJlIGZvcm1hdCBmb3IgdGhpcyBwbGF0
Zm9ybS4KKyAgICBzdGF0aWMgR0MzRGVudW0gYmVzdFRleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCisgICAgeworICAgICAgICBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0ID0g
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CisgICAgICAgIHN3aXRjaCAoZm9ybWF0KCkpIHsKKyAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCQTg6CisgICAgICAg
ICAgICB0ZXh0dXJlRm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QkdS
QTg6CisgICAgICAgICAgICB0ZXh0dXJlRm9ybWF0ID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IikgPyBFeHRlbnNpb25z
M0Q6OkJHUkFfRVhUIDogR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRleHR1cmVGb3Jt
YXQ7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1BsYXRmb3JtQ29sb3IuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYK
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJD
aHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgJKHJldmlzaW9uIDg4NjUxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQwLDEyICsxNDAsNiBAQCBwcml2YXRlOgogICAgIGludCBtX2FscGhhTG9j
YXRpb247CiB9OwogCi0jaWYgVVNFKFNLSUEpICYmIFNLX0IzMl9TSElGVAotdHlwZWRlZiBGcmFn
bWVudFNoYWRlclJHQkFUZXhBbHBoYSBGcmFnbWVudFNoYWRlclRleEFscGhhOwotI2Vsc2UKLXR5
cGVkZWYgRnJhZ21lbnRTaGFkZXJCR1JBVGV4QWxwaGEgRnJhZ21lbnRTaGFkZXJUZXhBbHBoYTsK
LSNlbmRpZgotCiBjbGFzcyBGcmFnbWVudFNoYWRlcllVVlZpZGVvIHsKIHB1YmxpYzoKICAgICBG
cmFnbWVudFNoYWRlcllVVlZpZGVvKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97316</attachid>
            <date>2011-06-15 10:07:53 -0700</date>
            <delta_ts>2011-06-15 10:38:24 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>bgra.patch</filename>
            <type>text/plain</type>
            <size>31604</size>
            <attacher name="Alok Priyadarshi">alokp</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTQ2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDYtMTUgIEFsb2sgUHJp
eWFkYXJzaGkgIDxhbG9rcEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBSZWQgYW5kIEJsdWUgY2hhbm5lbHMg
YXJlIHN3YXBwZWQgaW4gaW1hZ2VzIHdpdGggYWNjZWxlcmF0ZWQgZHJhd2luZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE0NDIKKworICAgICAgICBX
ZSB3ZXJlIHVwbG9hZGluZyBCR1JBIHBpeGVscyBpbnRvIFJHQkEgdGV4dHVyZXMgYW5kIHN3YXBw
aW5nIHRoZSBjb21wb25lbnRzIGluIHRoZSBwaXhlbCBzaGFkZXIuCisgICAgICAgIFRoaXMgc3Ry
YXRlZ3kgZG9lcyBub3Qgd29yayB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcgYmVjYXVzZSB3ZSBh
cmUgZGlyZWN0bHkgcmVuZGVyaW5nIHRvIHRoZSB0ZXh0dXJlLCBub3QgdXBsb2FkaW5nIHBpeGVs
cy4KKyAgICAgICAgVGhlIGN1cnJlbnQgYXBwcm9hY2ggaXMgYWxzbyBjb25mdXNpbmcgYW5kIG1h
eSBiZSBpbmVmZmljaWVudCBvbiBzb21lIGRyaXZlcnMgdGhhdCBtYXkgYmUgc3dhcHBpbmcgdGhl
IGNvbXBvbmVudHMgaW4gc29mdHdhcmUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRo
ZSBzd2FwcGluZyBpbiBzaGFkZXIgYW5kIHVzZXMgQkdSQSB0ZXh0dXJlcyBpZiBhdmFpbGFibGUu
CisgICAgICAgIFRoZSB1bmFjY2VsZXJhdGVkIGRyYXdpbmcgcGF0aCBtYXkgZW5kIHVwIHN3YXBw
aW5nIGNvbXBvbmVudHMgaW4gc29mdHdhcmUgaWYgQkdSQSB0ZXh0dXJlIGlzIG5vdCBhdmFpbGFi
bGUsIGJ1dCB0aGF0IGNhc2Ugc2hvdWxkIGJlIHJhcmUuCisKKyAgICAgICAgVGVzdHM6IGNvbXBv
c2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNoaW5nLmh0bWwgKGV4aXN0aW5n
KQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2FtZURhdGFGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnBhY2tQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExh
eWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpza2lhQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
ZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OmZvcm1hdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGFja1BpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRleHR1cmVTdWJJbWFnZTo6dXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVy
ZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnVwZGF0
ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVt
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRp
bGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjp1cGRh
dGVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9y
bUNvbG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvcjo6Zm9ybWF0
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29sb3I6OmJlc3RUZXh0dXJlRm9ybWF0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oOgor
CiAyMDExLTA2LTE0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDg4
OTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzk5LDYgKzEzOTksMTMgQEAgc3RhdGljIHZvaWQg
ZG9GbG9hdGluZ1BvaW50UGFja2luZyhjb25zdAogICAgIH0KIH0KIAorLy8gUmV0dXJucyB0cnVl
IGlmIHNvdXJjZURhdGFGb3JtYXQgaXMgc2FtZSBhcyB0aGUgR0wgZGVzdGluYXRpb25Gb3JtYXQu
CitzdGF0aWMgYm9vbCBzYW1lRGF0YUZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRGF0
YUZvcm1hdCBzb3VyY2VEYXRhRm9ybWF0LCB1bnNpZ25lZCBpbnQgZGVzdGluYXRpb25Gb3JtYXQp
Cit7CisgICAgcmV0dXJuIChzb3VyY2VEYXRhRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpT
b3VyY2VGb3JtYXRSR0JBOCAmJiBkZXN0aW5hdGlvbkZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6UkdCQSkKKyAgICAgICAgfHwgKHNvdXJjZURhdGFGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0
M0Q6OlNvdXJjZUZvcm1hdEJHUkE4ICYmIGRlc3RpbmF0aW9uRm9ybWF0ID09IEV4dGVuc2lvbnMz
RDo6QkdSQV9FWFQpOworfQorCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrUGl4ZWxzKGNv
bnN0IHVpbnQ4X3QqIHNvdXJjZURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0IHNvdXJjZURhdGFGb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3aWR0aCwK
QEAgLTE0MTIsNyArMTQxOSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnBhY2tQaXhlbHMo
Y29uc3QKICAgICBzd2l0Y2ggKGRlc3RpbmF0aW9uVHlwZSkgewogICAgIGNhc2UgVU5TSUdORURf
QllURTogewogICAgICAgICB1aW50OF90KiBkZXN0aW5hdGlvbiA9IHN0YXRpY19jYXN0PHVpbnQ4
X3QqPihkZXN0aW5hdGlvbkRhdGEpOwotICAgICAgICBpZiAoc291cmNlRGF0YUZvcm1hdCA9PSBT
b3VyY2VGb3JtYXRSR0JBOCAmJiBkZXN0aW5hdGlvbkZvcm1hdCA9PSBSR0JBICYmIHNvdXJjZVVu
cGFja0FsaWdubWVudCA8PSA0ICYmIGFscGhhT3AgPT0gQWxwaGFEb05vdGhpbmcpIHsKKyAgICAg
ICAgaWYgKHNhbWVEYXRhRm9ybWF0KHNvdXJjZURhdGFGb3JtYXQsIGRlc3RpbmF0aW9uRm9ybWF0
KSAmJiBzb3VyY2VVbnBhY2tBbGlnbm1lbnQgPD0gNCAmJiBhbHBoYU9wID09IEFscGhhRG9Ob3Ro
aW5nKSB7CiAgICAgICAgICAgICAvLyBObyBjb252ZXJzaW9uIG5lY2Vzc2FyeS4KICAgICAgICAg
ICAgIG1lbWNweShkZXN0aW5hdGlvbkRhdGEsIHNvdXJjZURhdGEsIHdpZHRoICogaGVpZ2h0ICog
NCk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gODg5NDYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MDgsNiArNjA4LDMwIEBAIHB1YmxpYzoKICAgICAgICAgU291cmNl
Rm9ybWF0TnVtRm9ybWF0cwogICAgIH07CiAKKyAgICAvLyBQb3NzaWJsZSBhbHBoYSBvcGVyYXRp
b25zIHRoYXQgbWF5IG5lZWQgdG8gb2NjdXIgZHVyaW5nCisgICAgLy8gcGl4ZWwgcGFja2luZy4g
RklYTUU6IGtBbHBoYURvVW5tdWx0aXBseSBpcyBsb3NzeSBhbmQgbXVzdAorICAgIC8vIGJlIHJl
bW92ZWQuCisgICAgZW51bSBBbHBoYU9wIHsKKyAgICAgICAgQWxwaGFEb05vdGhpbmcgPSAwLAor
ICAgICAgICBBbHBoYURvUHJlbXVsdGlwbHkgPSAxLAorICAgICAgICBBbHBoYURvVW5tdWx0aXBs
eSA9IDIKKyAgICB9OworCisgICAgLy8gSGVscGVyIGZvciBnZXRJbWFnZURhdGEgd2hpY2ggaW1w
bGVtZW50cyBwYWNraW5nIG9mIHBpeGVsCisgICAgLy8gZGF0YSBpbnRvIHRoZSBzcGVjaWZpZWQg
T3BlbkdMIGRlc3RpbmF0aW9uIGZvcm1hdCBhbmQgdHlwZS4KKyAgICAvLyBBIHNvdXJjZVVucGFj
a0FsaWdubWVudCBvZiB6ZXJvIGluZGljYXRlcyB0aGF0IHRoZSBzb3VyY2UKKyAgICAvLyBkYXRh
IGlzIHRpZ2h0bHkgcGFja2VkLiBOb24temVybyB2YWx1ZXMgbWF5IHRha2UgYSBzbG93IHBhdGgu
CisgICAgLy8gRGVzdGluYXRpb24gZGF0YSB3aWxsIGhhdmUgbm8gZ2FwcyBiZXR3ZWVuIHJvd3Mu
CisgICAgYm9vbCBwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZURhdGEsCisgICAgICAg
ICAgICAgICAgICAgIFNvdXJjZURhdGFGb3JtYXQgc291cmNlRm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VVbnBh
Y2tBbGlnbm1lbnQsCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkZXN0aW5hdGlv
bkZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RpbmF0aW9uVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgQWxwaGFPcCwKKyAgICAgICAgICAgICAgICAgICAgdm9p
ZCogZGVzdGluYXRpb25EYXRhKTsKKwogICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIC8vIEVudHJ5
IHBvaW50cyBmb3IgV2ViR0wuCiAgICAgLy8KQEAgLTg1MSwzMCArODc1LDYgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRwdXRWZWN0b3IpOwogCi0g
ICAgLy8gUG9zc2libGUgYWxwaGEgb3BlcmF0aW9ucyB0aGF0IG1heSBuZWVkIHRvIG9jY3VyIGR1
cmluZwotICAgIC8vIHBpeGVsIHBhY2tpbmcuIEZJWE1FOiBrQWxwaGFEb1VubXVsdGlwbHkgaXMg
bG9zc3kgYW5kIG11c3QKLSAgICAvLyBiZSByZW1vdmVkLgotICAgIGVudW0gQWxwaGFPcCB7Ci0g
ICAgICAgIEFscGhhRG9Ob3RoaW5nID0gMCwKLSAgICAgICAgQWxwaGFEb1ByZW11bHRpcGx5ID0g
MSwKLSAgICAgICAgQWxwaGFEb1VubXVsdGlwbHkgPSAyCi0gICAgfTsKLQotICAgIC8vIEhlbHBl
ciBmb3IgZ2V0SW1hZ2VEYXRhIHdoaWNoIGltcGxlbWVudHMgcGFja2luZyBvZiBwaXhlbAotICAg
IC8vIGRhdGEgaW50byB0aGUgc3BlY2lmaWVkIE9wZW5HTCBkZXN0aW5hdGlvbiBmb3JtYXQgYW5k
IHR5cGUuCi0gICAgLy8gQSBzb3VyY2VVbnBhY2tBbGlnbm1lbnQgb2YgemVybyBpbmRpY2F0ZXMg
dGhhdCB0aGUgc291cmNlCi0gICAgLy8gZGF0YSBpcyB0aWdodGx5IHBhY2tlZC4gTm9uLXplcm8g
dmFsdWVzIG1heSB0YWtlIGEgc2xvdyBwYXRoLgotICAgIC8vIERlc3RpbmF0aW9uIGRhdGEgd2ls
bCBoYXZlIG5vIGdhcHMgYmV0d2VlbiByb3dzLgotICAgIGJvb2wgcGFja1BpeGVscyhjb25zdCB1
aW50OF90KiBzb3VyY2VEYXRhLAotICAgICAgICAgICAgICAgICAgICBTb3VyY2VEYXRhRm9ybWF0
IHNvdXJjZURhdGFGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3aWR0
aCwKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwKLSAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZVVucGFja0FsaWdubWVudCwKLSAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RpbmF0aW9uRm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgZGVzdGluYXRpb25UeXBlLAotICAgICAgICAgICAgICAgICAgICBB
bHBoYU9wIGFscGhhT3AsCi0gICAgICAgICAgICAgICAgICAgIHZvaWQqIGRlc3RpbmF0aW9uRGF0
YSk7Ci0KICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykKICAgICAvLyBUYWtlIGlu
dG8gYWNjb3VudCB0aGUgdXNlcidzIHJlcXVlc3RlZCBjb250ZXh0IGNyZWF0aW9uIGF0dHJpYnV0
ZXMsCiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRl
cm1pbmUgd2hpY2ggY291bGQgb3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHAJKHJldmlzaW9uIDg4OTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oIgogI2lu
Y2x1ZGUgIkxheWVyVGlsZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQnJpZGdlLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2lu
Zy5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KQEAgLTI0MSw2ICsyNDIsNyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVU
aWxlcklmCiAgICAgbV90aWxlciA9IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKAogICAgICAg
ICBsYXllclJlbmRlcmVyKCksCiAgICAgICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVyKCksCisgICAg
ICAgIFBsYXRmb3JtQ29sb3I6OmJlc3RUZXh0dXJlRm9ybWF0KGxheWVyUmVuZGVyZXJDb250ZXh0
KCkpLAogICAgICAgICBJbnRTaXplKGRlZmF1bHRUaWxlU2l6ZSwgZGVmYXVsdFRpbGVTaXplKSwK
ICAgICAgICAgTGF5ZXJUaWxlckNocm9taXVtOjpIYXNCb3JkZXJUZXhlbHMpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9t
aXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA4ODk0NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJMYXllclRleHR1
cmUuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgogI2luY2x1ZGUgIkxheWVy
VGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNzMsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsaXBwZWRE
ZXN0UmVjdC5tb3ZlKGNsaXBwZWRTb3VyY2VSZWN0LmxvY2F0aW9uKCkgLSBzb3VyY2VSZWN0Lmxv
Y2F0aW9uKCkpOwogICAgICAgICBjbGlwcGVkRGVzdFJlY3Quc2V0U2l6ZShjbGlwcGVkU291cmNl
UmVjdC5zaXplKCkpOwogCi0gICAgICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKG1faW1hZ2UucGl4
ZWxzKCksIGltYWdlUmVjdCgpLCBjbGlwcGVkU291cmNlUmVjdCwgY2xpcHBlZERlc3RSZWN0LCBj
b250ZXh0KCkpOworICAgICAgICBtX3RleFN1YkltYWdlLnVwbG9hZChtX2ltYWdlLnBpeGVscygp
LCBpbWFnZVJlY3QoKSwgUGxhdGZvcm1Db2xvcjo6Zm9ybWF0KCksIGNsaXBwZWRTb3VyY2VSZWN0
LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY2xpcHBlZERlc3RSZWN0LCBjb250ZXh0KCkpOwogICAgIH0K
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAko
cmV2aXNpb24gODg5NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0
NCw3IEBACiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJl
VXBkYXRlckNhbnZhcy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJUZXh0
dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIlRyZWVTeW5jaHJvbml6ZXIuaCIKQEAgLTEyMiwxNiAr
MTIzLDI2IEBAIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm8KICAgICAs
IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9jaGlsZENvbnRleHRzV2VyZUNvcGllZChmYWxz
ZSkKICAgICAsIG1fY29udGV4dFN1cHBvcnRzTGF0Y2goZmFsc2UpCisgICAgLCBtX2NvbnRleHRT
dXBwb3J0c1RleHR1cmVGb3JtYXRCR1JBKGZhbHNlKQorICAgICwgbV9jb250ZXh0U3VwcG9ydHNS
ZWFkRm9ybWF0QkdSQShmYWxzZSkKICAgICAsIG1fYW5pbWF0aW5nKGZhbHNlKQogICAgICwgbV9k
ZWZhdWx0UmVuZGVyU3VyZmFjZSgwKQogewotICAgIG1fY29udGV4dFN1cHBvcnRzTGF0Y2ggPSBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX2xhdGNoIik7
Ci0gICAgbV9jb250ZXh0U3VwcG9ydHNNYXBTdWIgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX21hcF9zdWIiKTsKKyAgICBXZWJDb3JlOjpFeHRlbnNp
b25zM0QqIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKKyAgICBtX2Nv
bnRleHRTdXBwb3J0c0xhdGNoID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX2xh
dGNoIik7CisgICAgbV9jb250ZXh0U3VwcG9ydHNNYXBTdWIgPSBleHRlbnNpb25zLT5zdXBwb3J0
cygiR0xfQ0hST01JVU1fbWFwX3N1YiIpOwogICAgIGlmIChtX2NvbnRleHRTdXBwb3J0c01hcFN1
YikKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdM
X0NIUk9NSVVNX21hcF9zdWIiKTsKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgi
R0xfQ0hST01JVU1fbWFwX3N1YiIpOworICAgIG1fY29udGV4dFN1cHBvcnRzVGV4dHVyZUZvcm1h
dEJHUkEgPSBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4
ODg4Iik7CisgICAgaWYgKG1fY29udGV4dFN1cHBvcnRzVGV4dHVyZUZvcm1hdEJHUkEpCisgICAg
ICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JB
ODg4OCIpOworICAgIG1fY29udGV4dFN1cHBvcnRzUmVhZEZvcm1hdEJHUkEgPSBleHRlbnNpb25z
LT5zdXBwb3J0cygiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEiKTsKKyAgICBpZiAobV9jb250ZXh0
U3VwcG9ydHNSZWFkRm9ybWF0QkdSQSkKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEiKTsKKwogICAgIG1faGFyZHdhcmVDb21wb3NpdGlu
ZyA9IGluaXRpYWxpemVTaGFyZWRPYmplY3RzKCk7CiAKLSAgICBtX3Jvb3RMYXllckNvbnRlbnRU
aWxlciA9IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIGNyZWF0ZVJvb3RMYXllclRl
eHR1cmVVcGRhdGVyKGNvbnRlbnRQYWludCksIEludFNpemUoMjU2LCAyNTYpLCBMYXllclRpbGVy
Q2hyb21pdW06Ok5vQm9yZGVyVGV4ZWxzKTsKKyAgICBtX3Jvb3RMYXllckNvbnRlbnRUaWxlciA9
IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIGNyZWF0ZVJvb3RMYXllclRleHR1cmVV
cGRhdGVyKGNvbnRlbnRQYWludCksIFBsYXRmb3JtQ29sb3I6OmJlc3RUZXh0dXJlRm9ybWF0KG1f
Y29udGV4dC5nZXQoKSksIEludFNpemUoMjU2LCAyNTYpLCBMYXllclRpbGVyQ2hyb21pdW06Ok5v
Qm9yZGVyVGV4ZWxzKTsKICAgICBBU1NFUlQobV9yb290TGF5ZXJDb250ZW50VGlsZXIpOwogCiAg
ICAgbV9oZWFkc1VwRGlzcGxheSA9IENDSGVhZHNVcERpc3BsYXk6OmNyZWF0ZSh0aGlzKTsKQEAg
LTE1MSwxMSArMTYyLDcgQEAgR3JhcGhpY3NDb250ZXh0M0QqIExheWVyUmVuZGVyZXJDaHJvbWl1
bQogI2lmIFVTRShTS0lBKQogR3JDb250ZXh0KiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNraWFD
b250ZXh0KCkKIHsKLSAgICBpZiAoIW1fc2tpYUNvbnRleHQpIHsKLSAgICAgICAgV2ViQ29yZTo6
RXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7Ci0g
ICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9C
R1JBODg4OCIpOwotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfcmVh
ZF9mb3JtYXRfYmdyYSIpOwotCisgICAgaWYgKCFtX3NraWFDb250ZXh0ICYmIG1fY29udGV4dFN1
cHBvcnRzVGV4dHVyZUZvcm1hdEJHUkEgJiYgbV9jb250ZXh0U3VwcG9ydHNSZWFkRm9ybWF0QkdS
QSkgewogICAgICAgICBtX3NraWFDb250ZXh0ID0gYWRvcHRQdHIoR3JDb250ZXh0OjpDcmVhdGVH
TFNoYWRlckNvbnRleHQoKSk7CiAgICAgICAgIC8vIExpbWl0IHRoZSBudW1iZXIgb2YgdGV4dHVy
ZXMgd2UgaG9sZCBpbiB0aGUgYml0bWFwLT50ZXh0dXJlIGNhY2hlLgogICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IG1heFRleHR1cmVDYWNoZUNvdW50ID0gNTEyOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmgJKHJldmlzaW9uIDg4OTQ2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI0Nyw2ICsyNDcsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2NvbnRl
eHRTdXBwb3J0c0xhdGNoOwogICAgIGJvb2wgbV9jb250ZXh0U3VwcG9ydHNNYXBTdWI7CisgICAg
Ym9vbCBtX2NvbnRleHRTdXBwb3J0c1RleHR1cmVGb3JtYXRCR1JBOworICAgIGJvb2wgbV9jb250
ZXh0U3VwcG9ydHNSZWFkRm9ybWF0QkdSQTsKIAogICAgIGJvb2wgbV9hbmltYXRpbmc7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZS5oCShyZXZpc2lvbiA4ODk0NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkxheWVyVGV4dHVyZSgpOwogCisg
ICAgdW5zaWduZWQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KICAgICBib29s
IGlzVmFsaWQoY29uc3QgSW50U2l6ZSYsIHVuc2lnbmVkIGZvcm1hdCk7CiAgICAgYm9vbCByZXNl
cnZlKGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBmb3JtYXQpOwogICAgIGJvb2wgaXNSZXNlcnZl
ZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVTdWJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCShyZXZpc2lvbiA4
ODk0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGV4dHVyZVN1YkltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDM1IEBACiAj
aW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnMz
RENocm9taXVtLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJU
cmFjZUV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gQ29waWVzIHBpeGVsIGRh
dGEgZnJvbSBpbWFnZSBpbnRvIGRlc3QuCisvLyBQZXJmb3JtcyBhcHByb3ByaWF0ZSB0cmFuc2Zv
cm1hdGlvbiBmcm9tIHNvdXJjZUZvcm1hdCB0byBkZXN0Rm9ybWF0Lgorc3RhdGljIHZvaWQgcGFj
a1BpeGVscyhjb25zdCB1aW50OF90KiBpbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgSW50UmVjdCYgaW1hZ2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljc0Nv
bnRleHQzRDo6U291cmNlRGF0YUZvcm1hdCBzb3VyY2VGb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAg
IEdDM0RlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGRl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQor
eworICAgIC8vIE9mZnNldCBmcm9tIGltYWdlLXJlY3QgdG8gc291cmNlLXJlY3QuCisgICAgSW50
UG9pbnQgb2Zmc2V0KHNvdXJjZVJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSwgc291cmNlUmVjdC55
KCkgLSBpbWFnZVJlY3QueSgpKTsKKyAgICBpZiAoaW1hZ2VSZWN0LndpZHRoKCkgPT0gc291cmNl
UmVjdC53aWR0aCgpICYmICFvZmZzZXQueCgpKSB7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHNy
YyA9ICZpbWFnZVs0ICogb2Zmc2V0LnkoKSAqIGltYWdlUmVjdC53aWR0aCgpXTsKKyAgICAgICAg
Y29udGV4dC0+cGFja1BpeGVscyhzcmMsIHNvdXJjZUZvcm1hdCwgc291cmNlUmVjdC53aWR0aCgp
LCBzb3VyY2VSZWN0LmhlaWdodCgpLCAwLCBkZXN0Rm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfQllURSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCBkZXN0KTsK
KyAgICB9IGVsc2UgeworICAgICAgICAvLyBTdHJpZGVzIG5vdCBlcXVhbCwgc28gZG8gYSByb3ct
Ynktcm93IGNvcHkgZnJvbSBzb3VyY2UgdG8gZGVzdGluYXRpb24uCisgICAgICAgIGZvciAoaW50
IHJvdyA9IDA7IHJvdyA8IHNvdXJjZVJlY3QuaGVpZ2h0KCk7ICsrcm93KSB7CisgICAgICAgICAg
ICBjb25zdCB1aW50OF90KiBzcmMgPSAmaW1hZ2VbNCAqIChvZmZzZXQueCgpICsgKG9mZnNldC55
KCkgKyByb3cpICogaW1hZ2VSZWN0LndpZHRoKCkpXTsKKyAgICAgICAgICAgIHVpbnQ4X3QqIGRz
dCA9ICZkZXN0W3NvdXJjZVJlY3Qud2lkdGgoKSAqIDQgKiByb3ddOworICAgICAgICAgICAgY29u
dGV4dC0+cGFja1BpeGVscyhzcmMsIHNvdXJjZUZvcm1hdCwgc291cmNlUmVjdC53aWR0aCgpLCAx
LCAwLCBkZXN0Rm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLCBkc3QpOworICAgICAgICB9CisgICAgfQorfQor
CiBMYXllclRleHR1cmVTdWJJbWFnZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2UoYm9vbCB1c2VNYXBU
ZXhTdWJJbWFnZSkKICAgICA6IG1fdXNlTWFwVGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2Up
CiB7CkBAIC01NCw2OSArNzgsNDkgQEAgdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6c2V0U3Vi
SW1hZ2VTaQogfQogCiB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWQoY29uc3QgdWlu
dDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljc0Nv
bnRleHQzRDo6U291cmNlRGF0YUZvcm1hdCBzb3VyY2VGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZGVz
dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CisgICAgQVNTRVJUKHNv
dXJjZVJlY3Quc2l6ZSgpID09IGRlc3RSZWN0LnNpemUoKSk7CisgICAgQVNTRVJUKChzb3VyY2VS
ZWN0LnNpemUoKSAtIG1fc3ViSW1hZ2VTaXplKS5pc0VtcHR5KCkpOworCiAgICAgaWYgKG1fdXNl
TWFwVGV4U3ViSW1hZ2UpCi0gICAgICAgIHVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShpbWFnZSwg
aW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgY29udGV4dCk7CisgICAgICAgIHVwbG9h
ZFdpdGhNYXBUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VGb3JtYXQsIHNvdXJj
ZVJlY3QsIGRlc3RGb3JtYXQsIGRlc3RSZWN0LCBjb250ZXh0KTsKICAgICBlbHNlCi0gICAgICAg
IHVwbG9hZFdpdGhUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCwgY29udGV4dCk7CisgICAgICAgIHVwbG9hZFdpdGhUZXhTdWJJbWFnZShpbWFnZSwgaW1h
Z2VSZWN0LCBzb3VyY2VGb3JtYXQsIHNvdXJjZVJlY3QsIGRlc3RGb3JtYXQsIGRlc3RSZWN0LCBj
b250ZXh0KTsKIH0KIAogdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1
YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlNv
dXJjZURhdGFGb3JtYXQgc291cmNlRm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVt
IGRlc3RGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
KQogewogICAgIFRSQUNFX0VWRU5UKCJMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRl
eFN1YkltYWdlIiwgdGhpcywgMCk7CisKICAgICBpZiAoIW1fc3ViSW1hZ2UpCiAgICAgICAgIG1f
c3ViSW1hZ2UgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W21fc3ViSW1hZ2VTaXplLndpZHRo
KCkgKiBtX3N1YkltYWdlU2l6ZS5oZWlnaHQoKSAqIDRdKTsKIAotICAgIC8vIE9mZnNldCBmcm9t
IGltYWdlLXJlY3QgdG8gc291cmNlLXJlY3QuCi0gICAgSW50UG9pbnQgb2Zmc2V0KHNvdXJjZVJl
Y3QueCgpIC0gaW1hZ2VSZWN0LngoKSwgc291cmNlUmVjdC55KCkgLSBpbWFnZVJlY3QueSgpKTsK
LQotICAgIGNvbnN0IHVpbnQ4X3QqIHBpeGVsU291cmNlOwotICAgIGlmIChpbWFnZVJlY3Qud2lk
dGgoKSA9PSBzb3VyY2VSZWN0LndpZHRoKCkgJiYgIW9mZnNldC54KCkpCi0gICAgICAgIHBpeGVs
U291cmNlID0gJmltYWdlWzQgKiBvZmZzZXQueSgpICogaW1hZ2VSZWN0LndpZHRoKCldOwotICAg
IGVsc2UgewotICAgICAgICAvLyBTdHJpZGVzIG5vdCBlcXVhbCwgc28gZG8gYSByb3ctYnktcm93
IG1lbWNweSBmcm9tIHRoZQotICAgICAgICAvLyBwYWludCByZXN1bHRzIGludG8gYSB0ZW1wIGJ1
ZmZlciBmb3IgdXBsb2FkaW5nLgotICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBkZXN0
UmVjdC5oZWlnaHQoKTsgKytyb3cpCi0gICAgICAgICAgICBtZW1jcHkoJm1fc3ViSW1hZ2VbZGVz
dFJlY3Qud2lkdGgoKSAqIDQgKiByb3ddLAotICAgICAgICAgICAgICAgICAgICZpbWFnZVs0ICog
KG9mZnNldC54KCkgKyAob2Zmc2V0LnkoKSArIHJvdykgKiBpbWFnZVJlY3Qud2lkdGgoKSldLAot
ICAgICAgICAgICAgICAgICAgIGRlc3RSZWN0LndpZHRoKCkgKiA0KTsKLQotICAgICAgICBwaXhl
bFNvdXJjZSA9ICZtX3N1YkltYWdlWzBdOwotICAgIH0KLSAgICBjb250ZXh0LT50ZXhTdWJJbWFn
ZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RS
ZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgcGl4ZWxTb3Vy
Y2UpOworICAgIHBhY2tQaXhlbHMoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlRm9ybWF0LCBzb3Vy
Y2VSZWN0LCBkZXN0Rm9ybWF0LCBtX3N1YkltYWdlLmdldCgpLCBjb250ZXh0KTsKKyAgICBjb250
ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0
UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0
KCksIGRlc3RGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBtX3N1Yklt
YWdlLmdldCgpKTsKIH0KIAogdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1h
cFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJl
Y3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3ND
b250ZXh0M0Q6OlNvdXJjZURhdGFGb3JtYXQgc291cmNlRm9ybWF0LCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdDM0RlbnVtIGRlc3RGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0KQogewogICAgIFRSQUNFX0VWRU5UKCJMYXllclRleHR1cmVTdWJJ
bWFnZTo6dXBsb2FkV2l0aE1hcFRleFN1YkltYWdlIiwgdGhpcywgMCk7Ci0gICAgLy8gT2Zmc2V0
IGZyb20gaW1hZ2UtcmVjdCB0byBzb3VyY2UtcmVjdC4KLSAgICBJbnRQb2ludCBvZmZzZXQoc291
cmNlUmVjdC54KCkgLSBpbWFnZVJlY3QueCgpLCBzb3VyY2VSZWN0LnkoKSAtIGltYWdlUmVjdC55
KCkpOwogCiAgICAgLy8gVXBsb2FkIHRpbGUgZGF0YSB2aWEgYSBtYXBwZWQgdHJhbnNmZXIgYnVm
ZmVyCiAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxF
eHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7Ci0gICAgdWlu
dDhfdCogcGl4ZWxEZXN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGV4dGVuc2lvbnMtPm1hcFRl
eFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVz
dFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdo
dCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7Ci0KKyAgICB1aW50OF90
KiBwaXhlbERlc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3Vi
SW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVj
dC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCks
IGRlc3RGb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25z
M0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOwogICAgIGlmICghcGl4ZWxEZXN0KSB7Ci0gICAgICAg
IHVwbG9hZFdpdGhUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCwgY29udGV4dCk7CisgICAgICAgIHVwbG9hZFdpdGhUZXhTdWJJbWFnZShpbWFnZSwgaW1h
Z2VSZWN0LCBzb3VyY2VGb3JtYXQsIHNvdXJjZVJlY3QsIGRlc3RGb3JtYXQsIGRlc3RSZWN0LCBj
b250ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChpbWFnZVJlY3Qud2lk
dGgoKSA9PSBzb3VyY2VSZWN0LndpZHRoKCkgJiYgIW9mZnNldC54KCkpCi0gICAgICAgIG1lbWNw
eShwaXhlbERlc3QsICZpbWFnZVs0ICogb2Zmc2V0LnkoKSAqIGltYWdlUmVjdC53aWR0aCgpXSwg
aW1hZ2VSZWN0LndpZHRoKCkgKiBkZXN0UmVjdC5oZWlnaHQoKSAqIDQpOwotICAgIGVsc2Ugewot
ICAgICAgICAvLyBTdHJpZGVzIG5vdCBlcXVhbCwgc28gZG8gYSByb3ctYnktcm93IG1lbWNweSBm
cm9tIHRoZQotICAgICAgICAvLyBwYWludCByZXN1bHRzIGludG8gdGhlIHBpeGVsRGVzdAotICAg
ICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBkZXN0UmVjdC5oZWlnaHQoKTsgKytyb3cpCi0g
ICAgICAgICAgICBtZW1jcHkoJnBpeGVsRGVzdFtkZXN0UmVjdC53aWR0aCgpICogNCAqIHJvd10s
Ci0gICAgICAgICAgICAgICAgICAgJmltYWdlWzQgKiAob2Zmc2V0LngoKSArIChvZmZzZXQueSgp
ICsgcm93KSAqIGltYWdlUmVjdC53aWR0aCgpKV0sCi0gICAgICAgICAgICAgICAgICAgZGVzdFJl
Y3Qud2lkdGgoKSAqIDQpOwotICAgIH0KKyAgICBwYWNrUGl4ZWxzKGltYWdlLCBpbWFnZVJlY3Qs
IHNvdXJjZUZvcm1hdCwgc291cmNlUmVjdCwgZGVzdEZvcm1hdCwgcGl4ZWxEZXN0LCBjb250ZXh0
KTsKICAgICBleHRlbnNpb25zLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShwaXhlbERlc3Qp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRleHR1cmVTdWJJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmgJKHJldmlzaW9uIDg4
OTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
ZXh0dXJlU3ViSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1
ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgpAQCAtNDQsMTUgKzQ1LDE4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0U3ViSW1hZ2VTaXplKGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIHVwbG9hZChj
b25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAotICAgICAgICAg
ICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
LAorICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0IHNv
dXJjZUZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwKKyAgICAgICAgICAgICAgICBH
QzNEZW51bSBkZXN0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKICAgICAgICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHQzRCopOwogCiBwcml2YXRlOgogICAgIHZvaWQgdXBsb2FkV2l0
aFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJl
Y3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZURhdGFGb3JtYXQgc291cmNlRm9ybWF0LCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdDM0RlbnVtIGRlc3RGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgdm9pZCB1cGxv
YWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3Qm
IGltYWdlUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRGF0YUZvcm1hdCBz
b3VyY2VGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZGVzdEZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0
M0QqKTsKIAogICAgIGJvb2wgbV91c2VNYXBUZXhTdWJJbWFnZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwCShyZXZpc2lvbiA4ODk0NikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXJDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJMYXllclRleHR1cmUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5j
bHVkZSAiVHJhY2VFdmVudC5oIgogCiAjaWYgVVNFKFNLSUEpCkBAIC04Nyw3ICs4OCw3IEBAIHZv
aWQgTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6dXBkYXRlVGUKICAgICBQbGF0Zm9ybUNhbnZh
czo6QXV0b0xvY2tlciBsb2NrZXIoJm1fY2FudmFzKTsKIAogICAgIHRleHR1cmUtPmJpbmRUZXh0
dXJlKCk7Ci0gICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50
UmVjdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgY29udGV4dCgpKTsKKyAgICBtX3RleFN1Yklt
YWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIFBsYXRmb3JtQ29sb3I6
OmZvcm1hdCgpLCBzb3VyY2VSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgZGVzdFJlY3QsIGNvbnRl
eHQoKSk7CiB9CiAKICNpZiBVU0UoU0tJQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9t
aXVtLmNwcAkocmV2aXNpb24gODg5NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MiwxNiArNDIsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYXNzT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bT4gTGF5ZXJUaWxlckNocm9taXVtOjpj
cmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBQYXNzT3duUHRyPExh
eWVyVGV4dHVyZVVwZGF0ZXI+IHRleHR1cmVVcGRhdGVyLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwgQm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyKQorUGFzc093blB0cjxMYXllclRpbGVyQ2hyb21p
dW0+IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5
ZXJSZW5kZXJlciwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiB0ZXh0dXJlVXBkYXRl
ciwgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRl
clRleGVsT3B0aW9uIGJvcmRlcikKIHsKICAgICBpZiAoIWxheWVyUmVuZGVyZXIgfHwgdGlsZVNp
emUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9w
dFB0cihuZXcgTGF5ZXJUaWxlckNocm9taXVtKGxheWVyUmVuZGVyZXIsIHRleHR1cmVVcGRhdGVy
LCB0aWxlU2l6ZSwgYm9yZGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMYXllclRpbGVy
Q2hyb21pdW0obGF5ZXJSZW5kZXJlciwgdGV4dHVyZVVwZGF0ZXIsIHRleHR1cmVGb3JtYXQsIHRp
bGVTaXplLCBib3JkZXIpKTsKIH0KIAotTGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRpbGVyQ2hy
b21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBQYXNzT3duUHRyPExh
eWVyVGV4dHVyZVVwZGF0ZXI+IHRleHR1cmVVcGRhdGVyLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwgQm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyKQotICAgIDogbV9za2lwc0RyYXcoZmFsc2UpCitM
YXllclRpbGVyQ2hyb21pdW06OkxheWVyVGlsZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21p
dW0qIGxheWVyUmVuZGVyZXIsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gdGV4dHVy
ZVVwZGF0ZXIsIEdDM0RlbnVtIHRleHR1cmVGb3JtYXQsIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXIpCisgICAgOiBtX3RleHR1cmVGb3JtYXQodGV4dHVy
ZUZvcm1hdCkKKyAgICAsIG1fc2tpcHNEcmF3KGZhbHNlKQogICAgICwgbV90aWxpbmdEYXRhKG1h
eCh0aWxlU2l6ZS53aWR0aCgpLCB0aWxlU2l6ZS5oZWlnaHQoKSksIDAsIDAsIGJvcmRlciA9PSBI
YXNCb3JkZXJUZXhlbHMpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQog
ICAgICwgbV9sYXllclJlbmRlcmVyKGxheWVyUmVuZGVyZXIpCkBAIC0yNDUsMTAgKzI0NiwxMCBA
QCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlCiAgICAgICAgICAgICBU
aWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwogICAgICAgICAgICAgaWYgKCF0aWxlKQogICAgICAg
ICAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwotICAgICAgICAgICAgaWYgKCF0aWxl
LT50ZXh0dXJlKCktPmlzVmFsaWQobV90aWxlU2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEp
KQorICAgICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCktPmlzVmFsaWQobV90aWxlU2l6ZSwg
bV90ZXh0dXJlRm9ybWF0KSkKICAgICAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5TGF5ZXJSZWN0
ID0gdGlsZUxheWVyUmVjdCh0aWxlKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICB0aWxlLT50ZXh0dXJlKCktPnJlc2VydmUobV90aWxlU2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEpOworICAgICAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cmVzZXJ2ZShtX3RpbGVT
aXplLCBtX3RleHR1cmVGb3JtYXQpOwogICAgICAgICAgICAgZGlydHlMYXllclJlY3QudW5pdGUo
dGlsZS0+bV9kaXJ0eUxheWVyUmVjdCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTQsNyArMjk1
LDcgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZVJlY3QoKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+aXNSZXNl
cnZlZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCktPnJlc2VydmUo
bV90aWxlU2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKSB7CisgICAgICAgICAgICAgICAg
aWYgKCF0aWxlLT50ZXh0dXJlKCktPnJlc2VydmUobV90aWxlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0
KSkgewogICAgICAgICAgICAgICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA4ODk0NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIExheWVyVGlsZXJDaHJvbWl1bSB7CiBw
dWJsaWM6CiAgICAgZW51bSBCb3JkZXJUZXhlbE9wdGlvbiB7IEhhc0JvcmRlclRleGVscywgTm9C
b3JkZXJUZXhlbHMgfTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyVGlsZXJDaHJvbWl1
bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJl
VXBkYXRlcj4sIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBCb3JkZXJUZXhlbE9wdGlvbik7Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJUaWxlckNocm9taXVtPiBjcmVhdGUoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKiwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiwgR0MzRGVudW0g
dGV4dHVyZUZvcm1hdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9u
KTsKIAogICAgIH5MYXllclRpbGVyQ2hyb21pdW0oKTsKIApAQCAtNzAsMTMgKzcwLDEzIEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgc2tpcHNEcmF3KCkgY29uc3QgeyByZXR1cm4gbV9za2lwc0RyYXc7
IH0KIAotICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNm
b3JtLCBGcmFnbWVudFNoYWRlclRleEFscGhhPiBQcm9ncmFtOworICAgIHR5cGVkZWYgUHJvZ3Jh
bUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRlclJHQkFU
ZXhBbHBoYT4gUHJvZ3JhbTsKIAogICAgIC8vIElmIHRoaXMgdGlsZXIgaGFzIGV4YWN0bHkgb25l
IHRpbGUsIHJldHVybiBpdHMgdGV4dHVyZS4gT3RoZXJ3aXNlLCBudWxsLgogICAgIExheWVyVGV4
dHVyZSogZ2V0U2luZ2xlVGV4dHVyZSgpOwogCiBwcml2YXRlOgotICAgIExheWVyVGlsZXJDaHJv
bWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0
ZXI+LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9yZGVyVGV4ZWxPcHRpb24pOworICAgIExh
eWVyVGlsZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBQYXNzT3duUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXI+LCBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0LCBjb25zdCBJbnRTaXplJiB0
aWxlU2l6ZSwgQm9yZGVyVGV4ZWxPcHRpb24pOwogCiAgICAgY2xhc3MgVGlsZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFRpbGU+IHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGlsZSk7CkBA
IC0xMjMsNiArMTIzLDggQEAgcHJpdmF0ZToKICAgICBJbnRSZWN0IHRpbGVDb250ZW50UmVjdChj
b25zdCBUaWxlKikgY29uc3Q7CiAgICAgSW50UmVjdCB0aWxlTGF5ZXJSZWN0KGNvbnN0IFRpbGUq
KSBjb25zdDsKIAorICAgIEdDM0RlbnVtIG1fdGV4dHVyZUZvcm1hdDsKKwogICAgIEludFNpemUg
bV90aWxlU2l6ZTsKICAgICBJbnRQb2ludCBtX2xheWVyUG9zaXRpb247CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ29sb3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0
Zm9ybUNvbG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNvbG9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtQ29sb3JfaAorI2RlZmluZSBQbGF0Zm9ybUNvbG9y
X2gKKworI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1Db2xvciB7Citw
dWJsaWM6CisgICAgc3RhdGljIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0IGZv
cm1hdCgpCisgICAgeworI2lmIFVTRShTS0lBKQorICAgICAgICByZXR1cm4gU0tfQjMyX1NISUZU
ID8gR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJHQkE4IDogR3JhcGhpY3NDb250ZXh0
M0Q6OlNvdXJjZUZvcm1hdEJHUkE4OworI2VsaWYgVVNFKENHKQorICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEJHUkE4OworI2VuZGlmCisgICAgfQorCisgICAg
Ly8gUmV0dXJucyB0aGUgbW9zdCBlZmZpY2llbnQgdGV4dHVyZSBmb3JtYXQgZm9yIHRoaXMgcGxh
dGZvcm0uCisgICAgc3RhdGljIEdDM0RlbnVtIGJlc3RUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCA9
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOworICAgICAgICBzd2l0Y2ggKGZvcm1hdCgpKSB7Cisg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJHQkE4OgorICAgICAg
ICAgICAgdGV4dHVyZUZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEJH
UkE4OgorICAgICAgICAgICAgdGV4dHVyZUZvcm1hdCA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpID8gRXh0ZW5zaW9u
czNEOjpCR1JBX0VYVCA6IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0ZXh0dXJlRm9y
bWF0OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9QbGF0Zm9ybUNvbG9yLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExG
CgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVy
Q2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA4ODk0NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0MCwxMiArMTQwLDYgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9hbHBoYUxv
Y2F0aW9uOwogfTsKIAotI2lmIFVTRShTS0lBKSAmJiBTS19CMzJfU0hJRlQKLXR5cGVkZWYgRnJh
Z21lbnRTaGFkZXJSR0JBVGV4QWxwaGEgRnJhZ21lbnRTaGFkZXJUZXhBbHBoYTsKLSNlbHNlCi10
eXBlZGVmIEZyYWdtZW50U2hhZGVyQkdSQVRleEFscGhhIEZyYWdtZW50U2hhZGVyVGV4QWxwaGE7
Ci0jZW5kaWYKLQogY2xhc3MgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbyB7CiBwdWJsaWM6CiAgICAg
RnJhZ21lbnRTaGFkZXJZVVZWaWRlbygpOwo=
</data>
<flag name="commit-queue"
          id="91233"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97320</attachid>
            <date>2011-06-15 10:38:24 -0700</date>
            <delta_ts>2011-06-17 13:13:23 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>bgra.patch</filename>
            <type>text/plain</type>
            <size>32196</size>
            <attacher name="Alok Priyadarshi">alokp</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTQ2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDYtMTUgIEFsb2sgUHJp
eWFkYXJzaGkgIDxhbG9rcEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBSZWQgYW5kIEJsdWUgY2hhbm5lbHMg
YXJlIHN3YXBwZWQgaW4gaW1hZ2VzIHdpdGggYWNjZWxlcmF0ZWQgZHJhd2luZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE0NDIKKworICAgICAgICBX
ZSB3ZXJlIHVwbG9hZGluZyBCR1JBIHBpeGVscyBpbnRvIFJHQkEgdGV4dHVyZXMgYW5kIHN3YXBw
aW5nIHRoZSBjb21wb25lbnRzIGluIHRoZSBwaXhlbCBzaGFkZXIuCisgICAgICAgIFRoaXMgc3Ry
YXRlZ3kgZG9lcyBub3Qgd29yayB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcgYmVjYXVzZSB3ZSBh
cmUgZGlyZWN0bHkgcmVuZGVyaW5nIHRvIHRoZSB0ZXh0dXJlLCBub3QgdXBsb2FkaW5nIHBpeGVs
cy4KKyAgICAgICAgVGhlIGN1cnJlbnQgYXBwcm9hY2ggaXMgYWxzbyBjb25mdXNpbmcgYW5kIG1h
eSBiZSBpbmVmZmljaWVudCBvbiBzb21lIGRyaXZlcnMgdGhhdCBtYXkgYmUgc3dhcHBpbmcgdGhl
IGNvbXBvbmVudHMgaW4gc29mdHdhcmUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRo
ZSBzd2FwcGluZyBpbiBzaGFkZXIgYW5kIHVzZXMgQkdSQSB0ZXh0dXJlcyBpZiBhdmFpbGFibGUu
CisgICAgICAgIFRoZSB1bmFjY2VsZXJhdGVkIGRyYXdpbmcgcGF0aCBtYXkgZW5kIHVwIHN3YXBw
aW5nIGNvbXBvbmVudHMgaW4gc29mdHdhcmUgaWYgQkdSQSB0ZXh0dXJlIGlzIG5vdCBhdmFpbGFi
bGUsIGJ1dCB0aGF0IGNhc2Ugc2hvdWxkIGJlIHJhcmUuCisKKyAgICAgICAgVGVzdHM6IGNvbXBv
c2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNoaW5nLmh0bWwgKGV4aXN0aW5n
KQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2FtZURhdGFGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnBhY2tQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExh
eWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpza2lhQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
ZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OmZvcm1hdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGFja1BpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRleHR1cmVTdWJJbWFnZTo6dXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVy
ZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnVwZGF0
ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVt
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRp
bGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjp1cGRh
dGVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9y
bUNvbG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvcjo6Zm9ybWF0
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29sb3I6OmJlc3RUZXh0dXJlRm9ybWF0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oOgor
CiAyMDExLTA2LTE0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9u
IDg4OTQ2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC00MDk5LDYgKzQwOTksNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL01lZGlhUGxheWVyUHJpdmF0ZUNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ2FudmFzLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1DYW52YXMuaCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUljb24uaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1JbWFnZS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtSW1hZ2UuaCcsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwCShyZXZpc2lvbiA4ODk0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5OSw2
ICsxMzk5LDEzIEBAIHN0YXRpYyB2b2lkIGRvRmxvYXRpbmdQb2ludFBhY2tpbmcoY29uc3QKICAg
ICB9CiB9CiAKKy8vIFJldHVybnMgdHJ1ZSBpZiBzb3VyY2VEYXRhRm9ybWF0IGlzIHNhbWUgYXMg
dGhlIEdMIGRlc3RpbmF0aW9uRm9ybWF0Lgorc3RhdGljIGJvb2wgc2FtZURhdGFGb3JtYXQoR3Jh
cGhpY3NDb250ZXh0M0Q6OlNvdXJjZURhdGFGb3JtYXQgc291cmNlRGF0YUZvcm1hdCwgdW5zaWdu
ZWQgaW50IGRlc3RpbmF0aW9uRm9ybWF0KQoreworICAgIHJldHVybiAoc291cmNlRGF0YUZvcm1h
dCA9PSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCQTggJiYgZGVzdGluYXRpb25G
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpCisgICAgICAgIHx8IChzb3VyY2VEYXRh
Rm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JBOCAmJiBkZXN0aW5h
dGlvbkZvcm1hdCA9PSBFeHRlbnNpb25zM0Q6OkJHUkFfRVhUKTsKK30KKwogYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6cGFja1BpeGVscyhjb25zdCB1aW50OF90KiBzb3VyY2VEYXRhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRGF0
YUZvcm1hdCBzb3VyY2VEYXRhRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsCkBAIC0xNDEyLDcgKzE0MTksNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpwYWNrUGl4ZWxzKGNvbnN0CiAgICAgc3dpdGNoIChkZXN0aW5hdGlvblR5
cGUpIHsKICAgICBjYXNlIFVOU0lHTkVEX0JZVEU6IHsKICAgICAgICAgdWludDhfdCogZGVzdGlu
YXRpb24gPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGVzdGluYXRpb25EYXRhKTsKLSAgICAgICAg
aWYgKHNvdXJjZURhdGFGb3JtYXQgPT0gU291cmNlRm9ybWF0UkdCQTggJiYgZGVzdGluYXRpb25G
b3JtYXQgPT0gUkdCQSAmJiBzb3VyY2VVbnBhY2tBbGlnbm1lbnQgPD0gNCAmJiBhbHBoYU9wID09
IEFscGhhRG9Ob3RoaW5nKSB7CisgICAgICAgIGlmIChzYW1lRGF0YUZvcm1hdChzb3VyY2VEYXRh
Rm9ybWF0LCBkZXN0aW5hdGlvbkZvcm1hdCkgJiYgc291cmNlVW5wYWNrQWxpZ25tZW50IDw9IDQg
JiYgYWxwaGFPcCA9PSBBbHBoYURvTm90aGluZykgewogICAgICAgICAgICAgLy8gTm8gY29udmVy
c2lvbiBuZWNlc3NhcnkuCiAgICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25EYXRhLCBzb3Vy
Y2VEYXRhLCB3aWR0aCAqIGhlaWdodCAqIDQpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmgJKHJldmlzaW9uIDg4OTQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtNjA4LDYgKzYwOCwzMCBA
QCBwdWJsaWM6CiAgICAgICAgIFNvdXJjZUZvcm1hdE51bUZvcm1hdHMKICAgICB9OwogCisgICAg
Ly8gUG9zc2libGUgYWxwaGEgb3BlcmF0aW9ucyB0aGF0IG1heSBuZWVkIHRvIG9jY3VyIGR1cmlu
ZworICAgIC8vIHBpeGVsIHBhY2tpbmcuIEZJWE1FOiBrQWxwaGFEb1VubXVsdGlwbHkgaXMgbG9z
c3kgYW5kIG11c3QKKyAgICAvLyBiZSByZW1vdmVkLgorICAgIGVudW0gQWxwaGFPcCB7CisgICAg
ICAgIEFscGhhRG9Ob3RoaW5nID0gMCwKKyAgICAgICAgQWxwaGFEb1ByZW11bHRpcGx5ID0gMSwK
KyAgICAgICAgQWxwaGFEb1VubXVsdGlwbHkgPSAyCisgICAgfTsKKworICAgIC8vIEhlbHBlciBm
b3IgZ2V0SW1hZ2VEYXRhIHdoaWNoIGltcGxlbWVudHMgcGFja2luZyBvZiBwaXhlbAorICAgIC8v
IGRhdGEgaW50byB0aGUgc3BlY2lmaWVkIE9wZW5HTCBkZXN0aW5hdGlvbiBmb3JtYXQgYW5kIHR5
cGUuCisgICAgLy8gQSBzb3VyY2VVbnBhY2tBbGlnbm1lbnQgb2YgemVybyBpbmRpY2F0ZXMgdGhh
dCB0aGUgc291cmNlCisgICAgLy8gZGF0YSBpcyB0aWdodGx5IHBhY2tlZC4gTm9uLXplcm8gdmFs
dWVzIG1heSB0YWtlIGEgc2xvdyBwYXRoLgorICAgIC8vIERlc3RpbmF0aW9uIGRhdGEgd2lsbCBo
YXZlIG5vIGdhcHMgYmV0d2VlbiByb3dzLgorICAgIGJvb2wgcGFja1BpeGVscyhjb25zdCB1aW50
OF90KiBzb3VyY2VEYXRhLAorICAgICAgICAgICAgICAgICAgICBTb3VyY2VEYXRhRm9ybWF0IHNv
dXJjZUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgc291cmNlVW5wYWNrQWxpZ25tZW50LAorICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgZGVzdGluYXRpb25Gb3JtYXQsCisgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBkZXN0aW5hdGlvblR5cGUsCisgICAgICAgICAgICAgICAgICAgIEFscGhhT3As
CisgICAgICAgICAgICAgICAgICAgIHZvaWQqIGRlc3RpbmF0aW9uRGF0YSk7CisKICAgICAvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KICAgICAvLyBFbnRyeSBwb2ludHMgZm9yIFdlYkdMLgogICAgIC8vCkBAIC04
NTEsMzAgKzg3NSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9y
ZUdhbW1hQW5kQ29sb3JQcm9maWxlLAogICAgICAgICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50
OF90PiYgb3V0cHV0VmVjdG9yKTsKIAotICAgIC8vIFBvc3NpYmxlIGFscGhhIG9wZXJhdGlvbnMg
dGhhdCBtYXkgbmVlZCB0byBvY2N1ciBkdXJpbmcKLSAgICAvLyBwaXhlbCBwYWNraW5nLiBGSVhN
RToga0FscGhhRG9Vbm11bHRpcGx5IGlzIGxvc3N5IGFuZCBtdXN0Ci0gICAgLy8gYmUgcmVtb3Zl
ZC4KLSAgICBlbnVtIEFscGhhT3AgewotICAgICAgICBBbHBoYURvTm90aGluZyA9IDAsCi0gICAg
ICAgIEFscGhhRG9QcmVtdWx0aXBseSA9IDEsCi0gICAgICAgIEFscGhhRG9Vbm11bHRpcGx5ID0g
MgotICAgIH07Ci0KLSAgICAvLyBIZWxwZXIgZm9yIGdldEltYWdlRGF0YSB3aGljaCBpbXBsZW1l
bnRzIHBhY2tpbmcgb2YgcGl4ZWwKLSAgICAvLyBkYXRhIGludG8gdGhlIHNwZWNpZmllZCBPcGVu
R0wgZGVzdGluYXRpb24gZm9ybWF0IGFuZCB0eXBlLgotICAgIC8vIEEgc291cmNlVW5wYWNrQWxp
Z25tZW50IG9mIHplcm8gaW5kaWNhdGVzIHRoYXQgdGhlIHNvdXJjZQotICAgIC8vIGRhdGEgaXMg
dGlnaHRseSBwYWNrZWQuIE5vbi16ZXJvIHZhbHVlcyBtYXkgdGFrZSBhIHNsb3cgcGF0aC4KLSAg
ICAvLyBEZXN0aW5hdGlvbiBkYXRhIHdpbGwgaGF2ZSBubyBnYXBzIGJldHdlZW4gcm93cy4KLSAg
ICBib29sIHBhY2tQaXhlbHMoY29uc3QgdWludDhfdCogc291cmNlRGF0YSwKLSAgICAgICAgICAg
ICAgICAgICAgU291cmNlRGF0YUZvcm1hdCBzb3VyY2VEYXRhRm9ybWF0LAotICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VVbnBh
Y2tBbGlnbm1lbnQsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkZXN0aW5hdGlv
bkZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3RpbmF0aW9uVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgQWxwaGFPcCBhbHBoYU9wLAotICAgICAgICAgICAgICAg
ICAgICB2b2lkKiBkZXN0aW5hdGlvbkRhdGEpOwotCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShHVEspCiAgICAgLy8gVGFrZSBpbnRvIGFjY291bnQgdGhlIHVzZXIncyByZXF1ZXN0ZWQg
Y29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLAogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNp
bCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA4ODk0NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkxheWVyVGV4
dHVyZVVwZGF0ZXJDYW52YXMuaCIKICNpbmNsdWRlICJMYXllclRpbGVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKICNp
bmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0yNDEsNiArMjQyLDcgQEAgdm9pZCBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGlsZXJJZgogICAgIG1fdGlsZXIgPSBMYXllclRpbGVy
Q2hyb21pdW06OmNyZWF0ZSgKICAgICAgICAgbGF5ZXJSZW5kZXJlcigpLAogICAgICAgICBjcmVh
dGVUZXh0dXJlVXBkYXRlcigpLAorICAgICAgICBQbGF0Zm9ybUNvbG9yOjpiZXN0VGV4dHVyZUZv
cm1hdChsYXllclJlbmRlcmVyQ29udGV4dCgpKSwKICAgICAgICAgSW50U2l6ZShkZWZhdWx0VGls
ZVNpemUsIGRlZmF1bHRUaWxlU2l6ZSksCiAgICAgICAgIExheWVyVGlsZXJDaHJvbWl1bTo6SGFz
Qm9yZGVyVGV4ZWxzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAko
cmV2aXNpb24gODg5NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3Vi
SW1hZ2UuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1Db2xvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTczLDcgKzc0LDcgQEAg
cHVibGljOgogICAgICAgICBjbGlwcGVkRGVzdFJlY3QubW92ZShjbGlwcGVkU291cmNlUmVjdC5s
b2NhdGlvbigpIC0gc291cmNlUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgY2xpcHBlZERlc3RS
ZWN0LnNldFNpemUoY2xpcHBlZFNvdXJjZVJlY3Quc2l6ZSgpKTsKIAotICAgICAgICBtX3RleFN1
YkltYWdlLnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBlZFNvdXJj
ZVJlY3QsIGNsaXBwZWREZXN0UmVjdCwgY29udGV4dCgpKTsKKyAgICAgICAgbV90ZXhTdWJJbWFn
ZS51cGxvYWQobV9pbWFnZS5waXhlbHMoKSwgaW1hZ2VSZWN0KCksIFBsYXRmb3JtQ29sb3I6OmZv
cm1hdCgpLCBjbGlwcGVkU291cmNlUmVjdCwgdGV4dHVyZS0+Zm9ybWF0KCksIGNsaXBwZWREZXN0
UmVjdCwgY29udGV4dCgpKTsKICAgICB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDg4OTQ2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZS5o
IgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKICNpbmNsdWRlICJUZXh0
U3RyZWFtLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJUcmVlU3lu
Y2hyb25pemVyLmgiCkBAIC0xMjIsMTYgKzEyMywyNiBAQCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OkxheWVyUmVuZGVyZXJDaHJvCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fY2hp
bGRDb250ZXh0c1dlcmVDb3BpZWQoZmFsc2UpCiAgICAgLCBtX2NvbnRleHRTdXBwb3J0c0xhdGNo
KGZhbHNlKQorICAgICwgbV9jb250ZXh0U3VwcG9ydHNUZXh0dXJlRm9ybWF0QkdSQShmYWxzZSkK
KyAgICAsIG1fY29udGV4dFN1cHBvcnRzUmVhZEZvcm1hdEJHUkEoZmFsc2UpCiAgICAgLCBtX2Fu
aW1hdGluZyhmYWxzZSkKICAgICAsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UoMCkKIHsKLSAgICBt
X2NvbnRleHRTdXBwb3J0c0xhdGNoID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9DSFJPTUlVTV9sYXRjaCIpOwotICAgIG1fY29udGV4dFN1cHBvcnRzTWFwU3ViID0g
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9tYXBfc3Vi
Iik7CisgICAgV2ViQ29yZTo6RXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCk7CisgICAgbV9jb250ZXh0U3VwcG9ydHNMYXRjaCA9IGV4dGVuc2lvbnMt
PnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9sYXRjaCIpOworICAgIG1fY29udGV4dFN1cHBvcnRzTWFw
U3ViID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX21hcF9zdWIiKTsKICAgICBp
ZiAobV9jb250ZXh0U3VwcG9ydHNNYXBTdWIpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9tYXBfc3ViIik7CisgICAgICAgIGV4
dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX21hcF9zdWIiKTsKKyAgICBtX2Nv
bnRleHRTdXBwb3J0c1RleHR1cmVGb3JtYXRCR1JBID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdM
X0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpOworICAgIGlmIChtX2NvbnRleHRTdXBwb3J0
c1RleHR1cmVGb3JtYXRCR1JBKQorICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJH
TF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKTsKKyAgICBtX2NvbnRleHRTdXBwb3J0c1Jl
YWRGb3JtYXRCR1JBID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF9yZWFkX2Zvcm1hdF9i
Z3JhIik7CisgICAgaWYgKG1fY29udGV4dFN1cHBvcnRzUmVhZEZvcm1hdEJHUkEpCisgICAgICAg
IGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9yZWFkX2Zvcm1hdF9iZ3JhIik7CisK
ICAgICBtX2hhcmR3YXJlQ29tcG9zaXRpbmcgPSBpbml0aWFsaXplU2hhcmVkT2JqZWN0cygpOwog
Ci0gICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXIgPSBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0
ZSh0aGlzLCBjcmVhdGVSb290TGF5ZXJUZXh0dXJlVXBkYXRlcihjb250ZW50UGFpbnQpLCBJbnRT
aXplKDI1NiwgMjU2KSwgTGF5ZXJUaWxlckNocm9taXVtOjpOb0JvcmRlclRleGVscyk7CisgICAg
bV9yb290TGF5ZXJDb250ZW50VGlsZXIgPSBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZSh0aGlz
LCBjcmVhdGVSb290TGF5ZXJUZXh0dXJlVXBkYXRlcihjb250ZW50UGFpbnQpLCBQbGF0Zm9ybUNv
bG9yOjpiZXN0VGV4dHVyZUZvcm1hdChtX2NvbnRleHQuZ2V0KCkpLCBJbnRTaXplKDI1NiwgMjU2
KSwgTGF5ZXJUaWxlckNocm9taXVtOjpOb0JvcmRlclRleGVscyk7CiAgICAgQVNTRVJUKG1fcm9v
dExheWVyQ29udGVudFRpbGVyKTsKIAogICAgIG1faGVhZHNVcERpc3BsYXkgPSBDQ0hlYWRzVXBE
aXNwbGF5OjpjcmVhdGUodGhpcyk7CkBAIC0xNTEsMTEgKzE2Miw3IEBAIEdyYXBoaWNzQ29udGV4
dDNEKiBMYXllclJlbmRlcmVyQ2hyb21pdW0KICNpZiBVU0UoU0tJQSkKIEdyQ29udGV4dCogTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpza2lhQ29udGV4dCgpCiB7Ci0gICAgaWYgKCFtX3NraWFDb250
ZXh0KSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVk
KCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKTsKLSAgICAgICAgZXh0ZW5zaW9ucy0+
ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEiKTsKLQorICAgIGlmICghbV9z
a2lhQ29udGV4dCAmJiBtX2NvbnRleHRTdXBwb3J0c1RleHR1cmVGb3JtYXRCR1JBICYmIG1fY29u
dGV4dFN1cHBvcnRzUmVhZEZvcm1hdEJHUkEpIHsKICAgICAgICAgbV9za2lhQ29udGV4dCA9IGFk
b3B0UHRyKEdyQ29udGV4dDo6Q3JlYXRlR0xTaGFkZXJDb250ZXh0KCkpOwogICAgICAgICAvLyBM
aW1pdCB0aGUgbnVtYmVyIG9mIHRleHR1cmVzIHdlIGhvbGQgaW4gdGhlIGJpdG1hcC0+dGV4dHVy
ZSBjYWNoZS4KICAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhUZXh0dXJlQ2FjaGVDb3VudCA9
IDUxMjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA4
ODk0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNiArMjQ3LDggQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgbV9jb250ZXh0U3VwcG9ydHNMYXRjaDsKICAgICBib29sIG1fY29u
dGV4dFN1cHBvcnRzTWFwU3ViOworICAgIGJvb2wgbV9jb250ZXh0U3VwcG9ydHNUZXh0dXJlRm9y
bWF0QkdSQTsKKyAgICBib29sIG1fY29udGV4dFN1cHBvcnRzUmVhZEZvcm1hdEJHUkE7CiAKICAg
ICBib29sIG1fYW5pbWF0aW5nOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuaAkocmV2aXNpb24gODg5
NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIH5MYXllclRleHR1cmUoKTsKIAorICAgIHVuc2lnbmVkIGZvcm1hdCgpIGNvbnN0IHsgcmV0
dXJuIG1fZm9ybWF0OyB9CiAgICAgYm9vbCBpc1ZhbGlkKGNvbnN0IEludFNpemUmLCB1bnNpZ25l
ZCBmb3JtYXQpOwogICAgIGJvb2wgcmVzZXJ2ZShjb25zdCBJbnRTaXplJiwgdW5zaWduZWQgZm9y
bWF0KTsKICAgICBib29sIGlzUmVzZXJ2ZWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZVN1YkltYWdlLmNwcAkocmV2aXNpb24gODg5NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDExICszMCwzNSBAQAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgi
CiAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgotI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKKy8vIENvcGllcyBwaXhlbCBkYXRhIGZyb20gaW1hZ2UgaW50byBkZXN0LgorLy8gUGVy
Zm9ybXMgYXBwcm9wcmlhdGUgdHJhbnNmb3JtYXRpb24gZnJvbSBzb3VyY2VGb3JtYXQgdG8gZGVz
dEZvcm1hdC4KK3N0YXRpYyB2b2lkIHBhY2tQaXhlbHMoY29uc3QgdWludDhfdCogaW1hZ2UsCisg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZURhdGFGb3JtYXQgc291cmNl
Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LAorICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90KiBkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCkKK3sKKyAgICAvLyBPZmZzZXQgZnJvbSBpbWFnZS1yZWN0
IHRvIHNvdXJjZS1yZWN0LgorICAgIEludFBvaW50IG9mZnNldChzb3VyY2VSZWN0LngoKSAtIGlt
YWdlUmVjdC54KCksIHNvdXJjZVJlY3QueSgpIC0gaW1hZ2VSZWN0LnkoKSk7CisgICAgaWYgKGlt
YWdlUmVjdC53aWR0aCgpID09IHNvdXJjZVJlY3Qud2lkdGgoKSAmJiAhb2Zmc2V0LngoKSkgewor
ICAgICAgICBjb25zdCB1aW50OF90KiBzcmMgPSAmaW1hZ2VbNCAqIG9mZnNldC55KCkgKiBpbWFn
ZVJlY3Qud2lkdGgoKV07CisgICAgICAgIGNvbnRleHQtPnBhY2tQaXhlbHMoc3JjLCBzb3VyY2VG
b3JtYXQsIHNvdXJjZVJlY3Qud2lkdGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgMCwgZGVzdEZv
cm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEdyYXBoaWNzQ29udGV4dDNE
OjpBbHBoYURvTm90aGluZywgZGVzdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gU3RyaWRl
cyBub3QgZXF1YWwsIHNvIGRvIGEgcm93LWJ5LXJvdyBjb3B5IGZyb20gc291cmNlIHRvIGRlc3Rp
bmF0aW9uLgorICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBzb3VyY2VSZWN0LmhlaWdo
dCgpOyArK3JvdykgeworICAgICAgICAgICAgY29uc3QgdWludDhfdCogc3JjID0gJmltYWdlWzQg
KiAob2Zmc2V0LngoKSArIChvZmZzZXQueSgpICsgcm93KSAqIGltYWdlUmVjdC53aWR0aCgpKV07
CisgICAgICAgICAgICB1aW50OF90KiBkc3QgPSAmZGVzdFtzb3VyY2VSZWN0LndpZHRoKCkgKiA0
ICogcm93XTsKKyAgICAgICAgICAgIGNvbnRleHQtPnBhY2tQaXhlbHMoc3JjLCBzb3VyY2VGb3Jt
YXQsIHNvdXJjZVJlY3Qud2lkdGgoKSwgMSwgMCwgZGVzdEZvcm1hdCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlVOU0lHTkVEX0JZVEUsIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywgZHN0
KTsKKyAgICAgICAgfQorICAgIH0KK30KKwogTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OkxheWVyVGV4
dHVyZVN1YkltYWdlKGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCiAgICAgOiBtX3VzZU1hcFRleFN1
YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQogewpAQCAtNTQsNjkgKzc4LDQ5IEBAIHZvaWQgTGF5
ZXJUZXh0dXJlU3ViSW1hZ2U6OnNldFN1YkltYWdlU2kKIH0KIAogdm9pZCBMYXllclRleHR1cmVT
dWJJbWFnZTo6dXBsb2FkKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFn
ZVJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZURhdGFGb3JtYXQgc291cmNl
Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdDM0RlbnVtIGRlc3RGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0KQogeworICAgIEFTU0VSVChzb3VyY2VSZWN0LnNpemUoKSA9PSBkZXN0UmVjdC5zaXpl
KCkpOworICAgIEFTU0VSVCgoc291cmNlUmVjdC5zaXplKCkgLSBtX3N1YkltYWdlU2l6ZSkuaXNF
bXB0eSgpKTsKKwogICAgIGlmIChtX3VzZU1hcFRleFN1YkltYWdlKQotICAgICAgICB1cGxvYWRX
aXRoTWFwVGV4U3ViSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3Qs
IGNvbnRleHQpOworICAgICAgICB1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoaW1hZ2UsIGltYWdl
UmVjdCwgc291cmNlRm9ybWF0LCBzb3VyY2VSZWN0LCBkZXN0Rm9ybWF0LCBkZXN0UmVjdCwgY29u
dGV4dCk7CiAgICAgZWxzZQotICAgICAgICB1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoaW1hZ2UsIGlt
YWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGNvbnRleHQpOworICAgICAgICB1cGxvYWRX
aXRoVGV4U3ViSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlRm9ybWF0LCBzb3VyY2VSZWN0
LCBkZXN0Rm9ybWF0LCBkZXN0UmVjdCwgY29udGV4dCk7CiB9CiAKIHZvaWQgTGF5ZXJUZXh0dXJl
U3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29u
c3QgSW50UmVjdCYgaW1hZ2VSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0IHNvdXJjZUZvcm1hdCwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQzNEZW51bSBkZXN0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJUZXh0
dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZSIsIHRoaXMsIDApOworCiAgICAgaWYg
KCFtX3N1YkltYWdlKQogICAgICAgICBtX3N1YkltYWdlID0gYWRvcHRBcnJheVB0cihuZXcgdWlu
dDhfdFttX3N1YkltYWdlU2l6ZS53aWR0aCgpICogbV9zdWJJbWFnZVNpemUuaGVpZ2h0KCkgKiA0
XSk7CiAKLSAgICAvLyBPZmZzZXQgZnJvbSBpbWFnZS1yZWN0IHRvIHNvdXJjZS1yZWN0LgotICAg
IEludFBvaW50IG9mZnNldChzb3VyY2VSZWN0LngoKSAtIGltYWdlUmVjdC54KCksIHNvdXJjZVJl
Y3QueSgpIC0gaW1hZ2VSZWN0LnkoKSk7Ci0KLSAgICBjb25zdCB1aW50OF90KiBwaXhlbFNvdXJj
ZTsKLSAgICBpZiAoaW1hZ2VSZWN0LndpZHRoKCkgPT0gc291cmNlUmVjdC53aWR0aCgpICYmICFv
ZmZzZXQueCgpKQotICAgICAgICBwaXhlbFNvdXJjZSA9ICZpbWFnZVs0ICogb2Zmc2V0LnkoKSAq
IGltYWdlUmVjdC53aWR0aCgpXTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gU3RyaWRlcyBub3Qg
ZXF1YWwsIHNvIGRvIGEgcm93LWJ5LXJvdyBtZW1jcHkgZnJvbSB0aGUKLSAgICAgICAgLy8gcGFp
bnQgcmVzdWx0cyBpbnRvIGEgdGVtcCBidWZmZXIgZm9yIHVwbG9hZGluZy4KLSAgICAgICAgZm9y
IChpbnQgcm93ID0gMDsgcm93IDwgZGVzdFJlY3QuaGVpZ2h0KCk7ICsrcm93KQotICAgICAgICAg
ICAgbWVtY3B5KCZtX3N1YkltYWdlW2Rlc3RSZWN0LndpZHRoKCkgKiA0ICogcm93XSwKLSAgICAg
ICAgICAgICAgICAgICAmaW1hZ2VbNCAqIChvZmZzZXQueCgpICsgKG9mZnNldC55KCkgKyByb3cp
ICogaW1hZ2VSZWN0LndpZHRoKCkpXSwKLSAgICAgICAgICAgICAgICAgICBkZXN0UmVjdC53aWR0
aCgpICogNCk7Ci0KLSAgICAgICAgcGl4ZWxTb3VyY2UgPSAmbV9zdWJJbWFnZVswXTsKLSAgICB9
Ci0gICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RS
ZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX0JZVEUsIHBpeGVsU291cmNlKTsKKyAgICBwYWNrUGl4ZWxzKGltYWdlLCBpbWFn
ZVJlY3QsIHNvdXJjZUZvcm1hdCwgc291cmNlUmVjdCwgZGVzdEZvcm1hdCwgbV9zdWJJbWFnZS5n
ZXQoKSwgY29udGV4dCk7CisgICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0
LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBkZXN0Rm9ybWF0LCBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfQllURSwgbV9zdWJJbWFnZS5nZXQoKSk7CiB9CiAKIHZvaWQgTGF5ZXJUZXh0
dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFn
ZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0IHNvdXJj
ZUZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBkZXN0Rm9ybWF0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBUUkFD
RV9FVkVOVCgiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSIs
IHRoaXMsIDApOwotICAgIC8vIE9mZnNldCBmcm9tIGltYWdlLXJlY3QgdG8gc291cmNlLXJlY3Qu
Ci0gICAgSW50UG9pbnQgb2Zmc2V0KHNvdXJjZVJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSwgc291
cmNlUmVjdC55KCkgLSBpbWFnZVJlY3QueSgpKTsKIAogICAgIC8vIFVwbG9hZCB0aWxlIGRhdGEg
dmlhIGEgbWFwcGVkIHRyYW5zZmVyIGJ1ZmZlcgogICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBl
eHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkpOwotICAgIHVpbnQ4X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihleHRlbnNpb25zLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVj
dC53aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJ
VEVfT05MWSkpOwotCisgICAgdWludDhfdCogcGl4ZWxEZXN0ID0gc3RhdGljX2Nhc3Q8dWludDhf
dCo+KGV4dGVuc2lvbnMtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0Lndp
ZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBkZXN0Rm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKICAgICBp
ZiAoIXBpeGVsRGVzdCkgewotICAgICAgICB1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoaW1hZ2UsIGlt
YWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGNvbnRleHQpOworICAgICAgICB1cGxvYWRX
aXRoVGV4U3ViSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlRm9ybWF0LCBzb3VyY2VSZWN0
LCBkZXN0Rm9ybWF0LCBkZXN0UmVjdCwgY29udGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoaW1hZ2VSZWN0LndpZHRoKCkgPT0gc291cmNlUmVjdC53aWR0aCgpICYmICFv
ZmZzZXQueCgpKQotICAgICAgICBtZW1jcHkocGl4ZWxEZXN0LCAmaW1hZ2VbNCAqIG9mZnNldC55
KCkgKiBpbWFnZVJlY3Qud2lkdGgoKV0sIGltYWdlUmVjdC53aWR0aCgpICogZGVzdFJlY3QuaGVp
Z2h0KCkgKiA0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gU3RyaWRlcyBub3QgZXF1YWwsIHNv
IGRvIGEgcm93LWJ5LXJvdyBtZW1jcHkgZnJvbSB0aGUKLSAgICAgICAgLy8gcGFpbnQgcmVzdWx0
cyBpbnRvIHRoZSBwaXhlbERlc3QKLSAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgZGVz
dFJlY3QuaGVpZ2h0KCk7ICsrcm93KQotICAgICAgICAgICAgbWVtY3B5KCZwaXhlbERlc3RbZGVz
dFJlY3Qud2lkdGgoKSAqIDQgKiByb3ddLAotICAgICAgICAgICAgICAgICAgICZpbWFnZVs0ICog
KG9mZnNldC54KCkgKyAob2Zmc2V0LnkoKSArIHJvdykgKiBpbWFnZVJlY3Qud2lkdGgoKSldLAot
ICAgICAgICAgICAgICAgICAgIGRlc3RSZWN0LndpZHRoKCkgKiA0KTsKLSAgICB9CisgICAgcGFj
a1BpeGVscyhpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VGb3JtYXQsIHNvdXJjZVJlY3QsIGRlc3RG
b3JtYXQsIHBpeGVsRGVzdCwgY29udGV4dCk7CiAgICAgZXh0ZW5zaW9ucy0+dW5tYXBUZXhTdWJJ
bWFnZTJEQ0hST01JVU0ocGl4ZWxEZXN0KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1
cmVTdWJJbWFnZS5oCShyZXZpc2lvbiA4ODk0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2lu
Y2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KQEAgLTQ0LDE1
ICs0NSwxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFN1YkltYWdlU2l6ZShjb25zdCBJbnRT
aXplJik7CiAgICAgdm9pZCB1cGxvYWQoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJl
Y3QmIGltYWdlUmVjdCwKLSAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKKyAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRl
eHQzRDo6U291cmNlRGF0YUZvcm1hdCBzb3VyY2VGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsCisgICAgICAgICAgICAgICAgR0MzRGVudW0gZGVzdEZvcm1hdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QsCiAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqKTsKIAogcHJp
dmF0ZToKICAgICB2b2lkIHVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFn
ZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VE
YXRhRm9ybWF0IHNvdXJjZUZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBkZXN0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljc0Nv
bnRleHQzRCopOwogICAgIHZvaWQgdXBsb2FkV2l0aE1hcFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4
X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250
ZXh0M0Q6OlNvdXJjZURhdGFGb3JtYXQgc291cmNlRm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGRlc3RG
b3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKik7CiAKICAgICBib29sIG1fdXNlTWFwVGV4U3Vi
SW1hZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNw
cAkocmV2aXNpb24gODg5NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkxh
eWVyUGFpbnRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAogI2lmIFVTRShT
S0lBKQpAQCAtODcsNyArODgsNyBAQCB2b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnVw
ZGF0ZVRlCiAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZtX2NhbnZhcyk7
CiAKICAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZSgpOwotICAgIG1fdGV4U3ViSW1hZ2UudXBsb2Fk
KGxvY2tlci5waXhlbHMoKSwgY29udGVudFJlY3QoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGNv
bnRleHQoKSk7CisgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250
ZW50UmVjdCgpLCBQbGF0Zm9ybUNvbG9yOjpmb3JtYXQoKSwgc291cmNlUmVjdCwgdGV4dHVyZS0+
Zm9ybWF0KCksIGRlc3RSZWN0LCBjb250ZXh0KCkpOwogfQogCiAjaWYgVVNFKFNLSUEpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hy
b21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDg4OTQ2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTYgKzQyLDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxMYXllclRpbGVyQ2hyb21p
dW0+IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5
ZXJSZW5kZXJlciwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiB0ZXh0dXJlVXBkYXRl
ciwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9uIGJvcmRlcikKK1Bh
c3NPd25QdHI8TGF5ZXJUaWxlckNocm9taXVtPiBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZShM
YXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIFBhc3NPd25QdHI8TGF5ZXJUZXh0
dXJlVXBkYXRlcj4gdGV4dHVyZVVwZGF0ZXIsIEdDM0RlbnVtIHRleHR1cmVGb3JtYXQsIGNvbnN0
IEludFNpemUmIHRpbGVTaXplLCBCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXIpCiB7CiAgICAgaWYg
KCFsYXllclJlbmRlcmVyIHx8IHRpbGVTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVyVGlsZXJDaHJvbWl1bShsYXll
clJlbmRlcmVyLCB0ZXh0dXJlVXBkYXRlciwgdGlsZVNpemUsIGJvcmRlcikpOworICAgIHJldHVy
biBhZG9wdFB0cihuZXcgTGF5ZXJUaWxlckNocm9taXVtKGxheWVyUmVuZGVyZXIsIHRleHR1cmVV
cGRhdGVyLCB0ZXh0dXJlRm9ybWF0LCB0aWxlU2l6ZSwgYm9yZGVyKSk7CiB9CiAKLUxheWVyVGls
ZXJDaHJvbWl1bTo6TGF5ZXJUaWxlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5
ZXJSZW5kZXJlciwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiB0ZXh0dXJlVXBkYXRl
ciwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9uIGJvcmRlcikKLSAg
ICA6IG1fc2tpcHNEcmF3KGZhbHNlKQorTGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRpbGVyQ2hy
b21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBQYXNzT3duUHRyPExh
eWVyVGV4dHVyZVVwZGF0ZXI+IHRleHR1cmVVcGRhdGVyLCBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0
LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyKQorICAg
IDogbV90ZXh0dXJlRm9ybWF0KHRleHR1cmVGb3JtYXQpCisgICAgLCBtX3NraXBzRHJhdyhmYWxz
ZSkKICAgICAsIG1fdGlsaW5nRGF0YShtYXgodGlsZVNpemUud2lkdGgoKSwgdGlsZVNpemUuaGVp
Z2h0KCkpLCAwLCAwLCBib3JkZXIgPT0gSGFzQm9yZGVyVGV4ZWxzKQogICAgICwgbV90ZXh0dXJl
VXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKICAgICAsIG1fbGF5ZXJSZW5kZXJlcihsYXllclJlbmRl
cmVyKQpAQCAtMjQ1LDEwICsyNDYsMTAgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZQogICAgICAgICAgICAgVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKICAgICAg
ICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBq
KTsKLSAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZVNpemUs
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkKKyAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVy
ZSgpLT5pc1ZhbGlkKG1fdGlsZVNpemUsIG1fdGV4dHVyZUZvcm1hdCkpCiAgICAgICAgICAgICAg
ICAgdGlsZS0+bV9kaXJ0eUxheWVyUmVjdCA9IHRpbGVMYXllclJlY3QodGlsZSk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5yZXNlcnZlKG1fdGls
ZVNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgICAgICAgICB0aWxlLT50
ZXh0dXJlKCktPnJlc2VydmUobV90aWxlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KTsKICAgICAgICAg
ICAgIGRpcnR5TGF5ZXJSZWN0LnVuaXRlKHRpbGUtPm1fZGlydHlMYXllclJlY3QpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMjk0LDcgKzI5NSw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjp1
cGRhdGVSZWN0KCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYg
KCF0aWxlLT50ZXh0dXJlKCktPmlzUmVzZXJ2ZWQoKSkgewotICAgICAgICAgICAgICAgIGlmICgh
dGlsZS0+dGV4dHVyZSgpLT5yZXNlcnZlKG1fdGlsZVNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBKSkgeworICAgICAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5yZXNlcnZlKG1f
dGlsZVNpemUsIG1fdGV4dHVyZUZvcm1hdCkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9za2lw
c0RyYXcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICByZXNldCgpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAkocmV2aXNp
b24gODg5NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRpbGVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBjbGFz
cyBMYXllclRpbGVyQ2hyb21pdW0gewogcHVibGljOgogICAgIGVudW0gQm9yZGVyVGV4ZWxPcHRp
b24geyBIYXNCb3JkZXJUZXhlbHMsIE5vQm9yZGVyVGV4ZWxzIH07CiAKLSAgICBzdGF0aWMgUGFz
c093blB0cjxMYXllclRpbGVyQ2hyb21pdW0+IGNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW0q
LCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwgQm9yZGVyVGV4ZWxPcHRpb24pOworICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyVGlsZXJD
aHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIFBhc3NPd25QdHI8TGF5ZXJU
ZXh0dXJlVXBkYXRlcj4sIEdDM0RlbnVtIHRleHR1cmVGb3JtYXQsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBCb3JkZXJUZXhlbE9wdGlvbik7CiAKICAgICB+TGF5ZXJUaWxlckNocm9taXVtKCk7
CiAKQEAgLTcwLDEzICs3MCwxMyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNraXBzRHJhdygpIGNv
bnN0IHsgcmV0dXJuIG1fc2tpcHNEcmF3OyB9CiAKLSAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5n
PFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21lbnRTaGFkZXJUZXhBbHBoYT4gUHJv
Z3JhbTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5z
Zm9ybSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGE+IFByb2dyYW07CiAKICAgICAvLyBJZiB0
aGlzIHRpbGVyIGhhcyBleGFjdGx5IG9uZSB0aWxlLCByZXR1cm4gaXRzIHRleHR1cmUuIE90aGVy
d2lzZSwgbnVsbC4KICAgICBMYXllclRleHR1cmUqIGdldFNpbmdsZVRleHR1cmUoKTsKIAogcHJp
dmF0ZToKLSAgICBMYXllclRpbGVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgUGFz
c093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJv
cmRlclRleGVsT3B0aW9uKTsKKyAgICBMYXllclRpbGVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiwgR0MzRGVudW0gdGV4dHVy
ZUZvcm1hdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9uKTsKIAog
ICAgIGNsYXNzIFRpbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxUaWxlPiB7CiAgICAgICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFRpbGUpOwpAQCAtMTIzLDYgKzEyMyw4IEBAIHByaXZhdGU6CiAgICAg
SW50UmVjdCB0aWxlQ29udGVudFJlY3QoY29uc3QgVGlsZSopIGNvbnN0OwogICAgIEludFJlY3Qg
dGlsZUxheWVyUmVjdChjb25zdCBUaWxlKikgY29uc3Q7CiAKKyAgICBHQzNEZW51bSBtX3RleHR1
cmVGb3JtYXQ7CisKICAgICBJbnRTaXplIG1fdGlsZVNpemU7CiAgICAgSW50UG9pbnQgbV9sYXll
clBvc2l0aW9uOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9QbGF0Zm9ybUNvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUNvbG9y
X2gKKyNkZWZpbmUgUGxhdGZvcm1Db2xvcl9oCisKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFBsYXRmb3JtQ29sb3IgeworcHVibGljOgorICAgIHN0YXRpYyBHcmFwaGljc0NvbnRl
eHQzRDo6U291cmNlRGF0YUZvcm1hdCBmb3JtYXQoKQorICAgIHsKKyNpZiBVU0UoU0tJQSkKKyAg
ICAgICAgcmV0dXJuIFNLX0IzMl9TSElGVCA/IEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3Jt
YXRSR0JBOCA6IEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JBODsKKyNlbGlmIFVT
RShDRykKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JB
ODsKKyNlbmRpZgorICAgIH0KKworICAgIC8vIFJldHVybnMgdGhlIG1vc3QgZWZmaWNpZW50IHRl
eHR1cmUgZm9ybWF0IGZvciB0aGlzIHBsYXRmb3JtLgorICAgIHN0YXRpYyBHQzNEZW51bSBiZXN0
VGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICB7CisgICAgICAg
IEdDM0RlbnVtIHRleHR1cmVGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKKyAgICAg
ICAgc3dpdGNoIChmb3JtYXQoKSkgeworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpT
b3VyY2VGb3JtYXRSR0JBODoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JBODoKKyAgICAgICAgICAgIGlmIChjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4
ODgiKSkKKyAgICAgICAgICAgICAgICB0ZXh0dXJlRm9ybWF0ID0gRXh0ZW5zaW9uczNEOjpCR1JB
X0VYVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAkocmV2aXNp
b24gODg5NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
aGFkZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsMTIgKzE0MCw2IEBAIHByaXZh
dGU6CiAgICAgaW50IG1fYWxwaGFMb2NhdGlvbjsKIH07CiAKLSNpZiBVU0UoU0tJQSkgJiYgU0tf
QjMyX1NISUZUCi10eXBlZGVmIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhIEZyYWdtZW50U2hh
ZGVyVGV4QWxwaGE7Ci0jZWxzZQotdHlwZWRlZiBGcmFnbWVudFNoYWRlckJHUkFUZXhBbHBoYSBG
cmFnbWVudFNoYWRlclRleEFscGhhOwotI2VuZGlmCi0KIGNsYXNzIEZyYWdtZW50U2hhZGVyWVVW
VmlkZW8gewogcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyWVVWVmlkZW8oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97643</attachid>
            <date>2011-06-17 13:13:23 -0700</date>
            <delta_ts>2011-06-21 10:00:01 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>bgra.patch</filename>
            <type>text/plain</type>
            <size>32051</size>
            <attacher name="Alok Priyadarshi">alokp</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5MTM3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDYtMTcgIEFsb2sgUHJp
eWFkYXJzaGkgIDxhbG9rcEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBSZWQgYW5kIEJsdWUgY2hhbm5lbHMg
YXJlIHN3YXBwZWQgaW4gaW1hZ2VzIHdpdGggYWNjZWxlcmF0ZWQgZHJhd2luZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE0NDIKKworICAgICAgICBX
ZSB3ZXJlIHVwbG9hZGluZyBCR1JBIHBpeGVscyBpbnRvIFJHQkEgdGV4dHVyZXMgYW5kIHN3YXBw
aW5nIHRoZSBjb21wb25lbnRzIGluIHRoZSBwaXhlbCBzaGFkZXIuCisgICAgICAgIFRoaXMgc3Ry
YXRlZ3kgZG9lcyBub3Qgd29yayB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcgYmVjYXVzZSB3ZSBh
cmUgZGlyZWN0bHkgcmVuZGVyaW5nIHRvIHRoZSB0ZXh0dXJlLCBub3QgdXBsb2FkaW5nIHBpeGVs
cy4KKyAgICAgICAgVGhpcyBwYXRjaCB1c2VzIEJHUkEgdGV4dHVyZXMgaWYgYXZhaWxhYmxlLiBJ
ZiBub3QgaXQgZmFsbHMgYmFjayB0byB0aGUgb3JpZ2luYWwgc2NoZW1lIG9mIHN3YXBwaW5nIHRo
ZSBjb21wb25lbnRzIGluIHRoZSBwaXhlbCBzaGFkZXIuCisKKyAgICAgICAgVGVzdHM6IGNvbXBv
c2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNoaW5nLmh0bWwgKGV4aXN0aW5n
KQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2FtZURhdGFGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnBhY2tQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExh
eWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpza2lhQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
ZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OmZvcm1hdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGFja1BpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRleHR1cmVTdWJJbWFnZTo6dXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVy
ZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnVwZGF0
ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVt
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRp
bGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjp1cGRh
dGVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9y
bUNvbG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvcjo6Zm9ybWF0
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29sb3I6OmJlc3RUZXh0dXJlRm9ybWF0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oOgor
CiAyMDExLTA2LTE2ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCShyZXZpc2lvbiA4OTEzNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29y
a2luZyBjb3B5KQpAQCAtNDA5Nyw2ICs0MDk3LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9NZWRpYVBsYXllclByaXZhdGVDaHJvbWl1bS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNhbnZhcy5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ2FudmFzLmgnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ29sb3IuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1JY29uLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtSW1hZ2Uu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUlt
YWdlLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SW1hZ2VMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA4
OTEzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs
dWRlICJMYXllclRleHR1cmUuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgog
I2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbG9y
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNiArNTYsMTIgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4
dHVyZVVwZGF0ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247IH0KIAorICAgIHZpcnR1YWwgU2FtcGxl
ZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ29sb3I6OnNhbWVDb21wb25lbnRPcmRlcih0
ZXh0dXJlRm9ybWF0KSA/CisgICAgICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2Ft
cGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZv
cm1hdEJHUkE7CisgICAgfQorCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3Jk
ZXJUZXhlbHMpCiAgICAgewogICAgICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0
aWxlU2l6ZSk7CkBAIC03Myw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2xpcHBlZERlc3RS
ZWN0Lm1vdmUoY2xpcHBlZFNvdXJjZVJlY3QubG9jYXRpb24oKSAtIHNvdXJjZVJlY3QubG9jYXRp
b24oKSk7CiAgICAgICAgIGNsaXBwZWREZXN0UmVjdC5zZXRTaXplKGNsaXBwZWRTb3VyY2VSZWN0
LnNpemUoKSk7CiAKLSAgICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobV9pbWFnZS5waXhlbHMo
KSwgaW1hZ2VSZWN0KCksIGNsaXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QsIGNvbnRl
eHQoKSk7CisgICAgICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKG1faW1hZ2UucGl4ZWxzKCksIGlt
YWdlUmVjdCgpLCBjbGlwcGVkU291cmNlUmVjdCwgY2xpcHBlZERlc3RSZWN0LCB0ZXh0dXJlLT5m
b3JtYXQoKSwgY29udGV4dCgpKTsKICAgICB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDg5MTM3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDEzICsxMjIsMjMgQEAgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpMYXllclJlbmRlcmVyQ2hybwogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBt
X2NoaWxkQ29udGV4dHNXZXJlQ29waWVkKGZhbHNlKQogICAgICwgbV9jb250ZXh0U3VwcG9ydHNM
YXRjaChmYWxzZSkKKyAgICAsIG1fY29udGV4dFN1cHBvcnRzVGV4dHVyZUZvcm1hdEJHUkEoZmFs
c2UpCisgICAgLCBtX2NvbnRleHRTdXBwb3J0c1JlYWRGb3JtYXRCR1JBKGZhbHNlKQogICAgICwg
bV9hbmltYXRpbmcoZmFsc2UpCiAgICAgLCBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlKDApCiB7Ci0g
ICAgbV9jb250ZXh0U3VwcG9ydHNMYXRjaCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5z
dXBwb3J0cygiR0xfQ0hST01JVU1fbGF0Y2giKTsKLSAgICBtX2NvbnRleHRTdXBwb3J0c01hcFN1
YiA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fbWFw
X3N1YiIpOworICAgIFdlYkNvcmU6OkV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpOworICAgIG1fY29udGV4dFN1cHBvcnRzTGF0Y2ggPSBleHRlbnNp
b25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fbGF0Y2giKTsKKyAgICBtX2NvbnRleHRTdXBwb3J0
c01hcFN1YiA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9tYXBfc3ViIik7CiAg
ICAgaWYgKG1fY29udGV4dFN1cHBvcnRzTWFwU3ViKQotICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fbWFwX3N1YiIpOworICAgICAg
ICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9tYXBfc3ViIik7CisgICAg
bV9jb250ZXh0U3VwcG9ydHNUZXh0dXJlRm9ybWF0QkdSQSA9IGV4dGVuc2lvbnMtPnN1cHBvcnRz
KCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKTsKKyAgICBpZiAobV9jb250ZXh0U3Vw
cG9ydHNUZXh0dXJlRm9ybWF0QkdSQSkKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Iik7CisgICAgbV9jb250ZXh0U3VwcG9y
dHNSZWFkRm9ybWF0QkdSQSA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfcmVhZF9mb3Jt
YXRfYmdyYSIpOworICAgIGlmIChtX2NvbnRleHRTdXBwb3J0c1JlYWRGb3JtYXRCR1JBKQorICAg
ICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYSIp
OworCiAgICAgbV9oYXJkd2FyZUNvbXBvc2l0aW5nID0gaW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMo
KTsKIAogICAgIG1fcm9vdExheWVyQ29udGVudFRpbGVyID0gTGF5ZXJUaWxlckNocm9taXVtOjpj
cmVhdGUodGhpcywgY3JlYXRlUm9vdExheWVyVGV4dHVyZVVwZGF0ZXIoY29udGVudFBhaW50KSwg
SW50U2l6ZSgyNTYsIDI1NiksIExheWVyVGlsZXJDaHJvbWl1bTo6Tm9Cb3JkZXJUZXhlbHMpOwpA
QCAtMTUxLDExICsxNjEsNyBAQCBHcmFwaGljc0NvbnRleHQzRCogTGF5ZXJSZW5kZXJlckNocm9t
aXVtCiAjaWYgVVNFKFNLSUEpCiBHckNvbnRleHQqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2tp
YUNvbnRleHQoKQogewotICAgIGlmICghbV9za2lhQ29udGV4dCkgewotICAgICAgICBXZWJDb3Jl
OjpFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsK
LSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfZm9ybWF0
X0JHUkE4ODg4Iik7Ci0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9y
ZWFkX2Zvcm1hdF9iZ3JhIik7Ci0KKyAgICBpZiAoIW1fc2tpYUNvbnRleHQgJiYgbV9jb250ZXh0
U3VwcG9ydHNUZXh0dXJlRm9ybWF0QkdSQSAmJiBtX2NvbnRleHRTdXBwb3J0c1JlYWRGb3JtYXRC
R1JBKSB7CiAgICAgICAgIG1fc2tpYUNvbnRleHQgPSBhZG9wdFB0cihHckNvbnRleHQ6OkNyZWF0
ZUdMU2hhZGVyQ29udGV4dCgpKTsKICAgICAgICAgLy8gTGltaXQgdGhlIG51bWJlciBvZiB0ZXh0
dXJlcyB3ZSBob2xkIGluIHRoZSBiaXRtYXAtPnRleHR1cmUgY2FjaGUuCiAgICAgICAgIHN0YXRp
YyBjb25zdCBpbnQgbWF4VGV4dHVyZUNhY2hlQ291bnQgPSA1MTI7CkBAIC0xMDkxLDcgKzEwOTcs
NyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoCiAgICAgLy8gc3Rh
cnQgd2hpbGUgd2UgZG8gb3RoZXIgd29yay4gT3RoZXIgcHJvZ3JhbXMgYXJlIGNyZWF0ZWQgbGF6
aWx5IG9uIGZpcnN0IGFjY2Vzcy4KICAgICBtX3NoYXJlZEdlb21ldHJ5ID0gYWRvcHRQdHIobmV3
IEdlb21ldHJ5QmluZGluZyhtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBtX3JlbmRlclN1cmZhY2VQ
cm9ncmFtID0gYWRvcHRQdHIobmV3IFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6UHJvZ3JhbShtX2Nv
bnRleHQuZ2V0KCkpKTsKLSAgICBtX3RpbGVyUHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBMYXllclRp
bGVyQ2hyb21pdW06OlByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgbV90aWxlclByb2dy
YW1SR0JBID0gYWRvcHRQdHIobmV3IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbVJHQkEobV9j
b250ZXh0LmdldCgpKSk7CiAKICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmZs
dXNoKCkpOwogCkBAIC0xMTQyLDE0ICsxMTQ4LDI1IEBAIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJv
bWl1bTo6TWFza1Byb2dyYW0KICAgICByZXR1cm4gbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0u
Z2V0KCk7CiB9CiAKLWNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbSogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjp0aWxlclByb2dyYW0oKQorY29uc3QgTGF5ZXJUaWxlckNocm9taXVtOjpQ
cm9ncmFtUkdCQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1SR0JBKCkKIHsK
LSAgICBBU1NFUlQobV90aWxlclByb2dyYW0pOwotICAgIGlmICghbV90aWxlclByb2dyYW0tPmlu
aXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6Ym9yZGVyUHJvZ3JhbTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOwotICAgICAgICBtX3RpbGVy
UHJvZ3JhbS0+aW5pdGlhbGl6ZSgpOworICAgIEFTU0VSVChtX3RpbGVyUHJvZ3JhbVJHQkEpOwor
ICAgIGlmICghbV90aWxlclByb2dyYW1SR0JBLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIFRS
QUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVJHQkE6OmluaXRp
YWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgbV90aWxlclByb2dyYW1SR0JBLT5pbml0aWFsaXpl
KCk7CisgICAgfQorICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbVJHQkEuZ2V0KCk7Cit9CisKK2Nv
bnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbUJHUkEqIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dGlsZXJQcm9ncmFtQkdSQSgpCit7CisgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbUJHUkEpCisg
ICAgICAgIG1fdGlsZXJQcm9ncmFtQkdSQSA9IGFkb3B0UHRyKG5ldyBMYXllclRpbGVyQ2hyb21p
dW06OlByb2dyYW1CR1JBKG1fY29udGV4dC5nZXQoKSkpOworICAgIGlmICghbV90aWxlclByb2dy
YW1CR1JBLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRl
cmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbUJHUkE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAg
ICAgICAgbV90aWxlclByb2dyYW1CR1JBLT5pbml0aWFsaXplKCk7CiAgICAgfQotICAgIHJldHVy
biBtX3RpbGVyUHJvZ3JhbS5nZXQoKTsKKyAgICByZXR1cm4gbV90aWxlclByb2dyYW1CR1JBLmdl
dCgpOwogfQogCiBjb25zdCBDQ0NhbnZhc0xheWVySW1wbDo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpjYW52YXNMYXllclByb2dyYW0oKQpAQCAtMTIxMCw3ICsxMjI3LDggQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZQogICAgIG1fcGx1Z2luTGF5ZXJQ
cm9ncmFtLmNsZWFyKCk7CiAgICAgbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbS5jbGVhcigpOwogICAg
IG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLmNsZWFyKCk7Ci0gICAgbV90aWxlclByb2dyYW0u
Y2xlYXIoKTsKKyAgICBtX3RpbGVyUHJvZ3JhbVJHQkEuY2xlYXIoKTsKKyAgICBtX3RpbGVyUHJv
Z3JhbUJHUkEuY2xlYXIoKTsKICAgICBpZiAobV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKQogICAg
ICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1f
b2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaAkocmV2aXNpb24gODkxMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpA
QCAtMTI4LDcgKzEyOCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBDQ0hlYWRzVXBEaXNwbGF5OjpQ
cm9ncmFtKiBoZWFkc1VwRGlzcGxheVByb2dyYW0oKTsKICAgICBjb25zdCBSZW5kZXJTdXJmYWNl
Q2hyb21pdW06OlByb2dyYW0qIHJlbmRlclN1cmZhY2VQcm9ncmFtKCk7CiAgICAgY29uc3QgUmVu
ZGVyU3VyZmFjZUNocm9taXVtOjpNYXNrUHJvZ3JhbSogcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFt
KCk7Ci0gICAgY29uc3QgTGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtKiB0aWxlclByb2dyYW0o
KTsKKyAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1SR0JBKiB0aWxlclByb2dy
YW1SR0JBKCk7CisgICAgY29uc3QgTGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtQkdSQSogdGls
ZXJQcm9ncmFtQkdSQSgpOwogICAgIGNvbnN0IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtKiBj
YW52YXNMYXllclByb2dyYW0oKTsKICAgICBjb25zdCBDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3Jh
bSogcGx1Z2luTGF5ZXJQcm9ncmFtKCk7CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6UkdC
QVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpOwpAQCAtMjIzLDcgKzIyNCw4IEBAIHBy
aXZhdGU6CiAgICAgT3duUHRyPENDSGVhZHNVcERpc3BsYXk6OlByb2dyYW0+IG1faGVhZHNVcERp
c3BsYXlQcm9ncmFtOwogICAgIE93blB0cjxSZW5kZXJTdXJmYWNlQ2hyb21pdW06OlByb2dyYW0+
IG1fcmVuZGVyU3VyZmFjZVByb2dyYW07CiAgICAgT3duUHRyPFJlbmRlclN1cmZhY2VDaHJvbWl1
bTo6TWFza1Byb2dyYW0+IG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtOwotICAgIE93blB0cjxM
YXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0+IG1fdGlsZXJQcm9ncmFtOworICAgIE93blB0cjxM
YXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1SR0JBPiBtX3RpbGVyUHJvZ3JhbVJHQkE7CisgICAg
T3duUHRyPExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbUJHUkE+IG1fdGlsZXJQcm9ncmFtQkdS
QTsKICAgICBPd25QdHI8Q0NDYW52YXNMYXllckltcGw6OlByb2dyYW0+IG1fY2FudmFzTGF5ZXJQ
cm9ncmFtOwogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpSR0JBUHJvZ3JhbT4gbV92aWRl
b0xheWVyUkdCQVByb2dyYW07CiAgICAgT3duUHRyPENDVmlkZW9MYXllckltcGw6OllVVlByb2dy
YW0+IG1fdmlkZW9MYXllcllVVlByb2dyYW07CkBAIC0yNDcsNiArMjQ5LDggQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgbV9jb250ZXh0U3VwcG9ydHNMYXRjaDsKICAgICBib29sIG1fY29udGV4dFN1
cHBvcnRzTWFwU3ViOworICAgIGJvb2wgbV9jb250ZXh0U3VwcG9ydHNUZXh0dXJlRm9ybWF0QkdS
QTsKKyAgICBib29sIG1fY29udGV4dFN1cHBvcnRzUmVhZEZvcm1hdEJHUkE7CiAKICAgICBib29s
IG1fYW5pbWF0aW5nOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuaAkocmV2aXNpb24gODkxMzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5M
YXllclRleHR1cmUoKTsKIAorICAgIHVuc2lnbmVkIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9ybWF0OyB9CiAgICAgYm9vbCBpc1ZhbGlkKGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBmb3Jt
YXQpOwogICAgIGJvb2wgcmVzZXJ2ZShjb25zdCBJbnRTaXplJiwgdW5zaWduZWQgZm9ybWF0KTsK
ICAgICBib29sIGlzUmVzZXJ2ZWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1Yklt
YWdlLmNwcAkocmV2aXNpb24gODkxMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDE3ICs1NSwxNyBAQCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjpzZXRTdWJJbWFnZVNp
CiAKIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZChjb25zdCB1aW50OF90KiBpbWFn
ZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1h
dCwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgaWYgKG1fdXNlTWFwVGV4U3Vi
SW1hZ2UpCi0gICAgICAgIHVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgY29udGV4dCk7CisgICAgICAgIHVwbG9hZFdpdGhNYXBU
ZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgZm9ybWF0
LCBjb250ZXh0KTsKICAgICBlbHNlCi0gICAgICAgIHVwbG9hZFdpdGhUZXhTdWJJbWFnZShpbWFn
ZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgY29udGV4dCk7CisgICAgICAgIHVw
bG9hZFdpdGhUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCwgZm9ybWF0LCBjb250ZXh0KTsKIH0KIAogdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBs
b2FkV2l0aFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBp
bWFnZVJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkK
IHsKICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhT
dWJJbWFnZSIsIHRoaXMsIDApOwogICAgIGlmICghbV9zdWJJbWFnZSkKQEAgLTg3LDEyICs4Nywx
MiBAQCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4CiAKICAgICAgICAg
cGl4ZWxTb3VyY2UgPSAmbV9zdWJJbWFnZVswXTsKICAgICB9Ci0gICAgY29udGV4dC0+dGV4U3Vi
SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBk
ZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIHBpeGVs
U291cmNlKTsKKyAgICBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgo
KSwgZGVzdFJlY3QuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIHBpeGVsU291cmNlKTsKIH0KIAogdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBs
b2FkV2l0aE1hcFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0
JiBpbWFnZVJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCkKIHsKICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVw
bG9hZFdpdGhNYXBUZXhTdWJJbWFnZSIsIHRoaXMsIDApOwogICAgIC8vIE9mZnNldCBmcm9tIGlt
YWdlLXJlY3QgdG8gc291cmNlLXJlY3QuCkBAIC0xMDAsMTAgKzEwMCwxMCBAQCB2b2lkIExheWVy
VGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFwCiAKICAgICAvLyBVcGxvYWQgdGlsZSBkYXRh
IHZpYSBhIG1hcHBlZCB0cmFuc2ZlciBidWZmZXIKICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSog
ZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpKTsKLSAgICB1aW50OF90KiBwaXhlbERlc3QgPSBzdGF0aWNfY2FzdDx1
aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJl
Y3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBH
cmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldS
SVRFX09OTFkpKTsKKyAgICB1aW50OF90KiBwaXhlbERlc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lk
dGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lH
TkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7CiAKICAgICBpZiAo
IXBpeGVsRGVzdCkgewotICAgICAgICB1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoaW1hZ2UsIGltYWdl
UmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGNvbnRleHQpOworICAgICAgICB1cGxvYWRXaXRo
VGV4U3ViSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGZvcm1h
dCwgY29udGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlU3ViSW1hZ2UuaAkocmV2aXNpb24gODkxMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKICNpbmNsdWRlICJJbnRSZWN0Lmgi
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgpAQCAt
NDUsMTUgKzQ2LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN1YkltYWdlU2l6ZShjb25zdCBJ
bnRTaXplJik7CiAgICAgdm9pZCB1cGxvYWQoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IElu
dFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAgICBHcmFwaGljc0Nv
bnRleHQzRCopOworICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR3JhcGhpY3NDb250
ZXh0M0QqKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25z
dCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29u
dGV4dDNEKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0
LCBHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZvaWQgdXBsb2FkV2l0aE1hcFRleFN1YkltYWdl
KGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QzNEZW51bSBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEKik7CiAKICAgICBib29sIG1fdXNlTWFw
VGV4U3ViSW1hZ2U7CiAgICAgSW50U2l6ZSBtX3N1YkltYWdlU2l6ZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRleHR1cmVVcGRhdGVyLmgJKHJldmlzaW9uIDg5MTM3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKQEAgLTQ1LDggKzQ3LDE3IEBAIHB1YmxpYzoK
ICAgICAgICAgQm90dG9tVXBPcmllbnRhdGlvbiwKICAgICAgICAgVG9wRG93bk9yaWVudGF0aW9u
CiAgICAgfTsKKyAgICBlbnVtIFNhbXBsZWRUZXhlbEZvcm1hdCB7CisgICAgICAgIFNhbXBsZWRU
ZXhlbEZvcm1hdFJHQkEsCisgICAgICAgIFNhbXBsZWRUZXhlbEZvcm1hdEJHUkEKKyAgICB9Owog
ICAgIC8vIFJldHVybnMgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSB0ZXh0dXJlIHVwbG9hZGVkIGJ5
IHRoaXMgaW50ZXJmYWNlLgogICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSA9
IDA7CisgICAgLy8gUmV0dXJucyB0aGUgZm9ybWF0IG9mIHRoZSB0ZXhlbCB1cGxvYWRlZCBieSB0
aGlzIGludGVyZmFjZS4KKyAgICAvLyBUaGlzIGZvcm1hdCBzaG91bGQgbm90IGJlIGNvbmZ1c2Vk
IGJ5IHRleHR1cmUgaW50ZXJuYWwgZm9ybWF0LgorICAgIC8vIFRoaXMgZm9ybWF0IHNwZWNpZmll
cyB0aGUgY29tcG9uZW50IG9yZGVyIGluIHRoZSBzYW1wbGVkIHRleGVsLgorICAgIC8vIElmIHRo
ZSBmb3JtYXQgaXMgVGV4ZWxGb3JtYXRCR1JBLCB2ZWM0LnggaXMgYmx1ZSBhbmQgdmVjNC56IGlz
IHJlZC4KKyAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQo
R0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBpbnQgYm9yZGVyVGV4ZWxzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVS
ZWN0KExheWVyVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KSA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVw
ZGF0ZXJDYW52YXMuY3BwCShyZXZpc2lvbiA4OTEzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclRleHR1
cmUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5o
IgogCiAjaWYgVVNFKFNLSUEpCkBAIC02OCw2ICs2OSwxMyBAQCBMYXllclRleHR1cmVVcGRhdGVy
Qml0bWFwOjpMYXllclRleHR1cmVVCiB7CiB9CiAKK0xheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBs
ZWRUZXhlbEZvcm1hdCBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwOjpzYW1wbGVkVGV4ZWxGb3Jt
YXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkKK3sKKyAgICAvLyBUaGUgY29tcG9uZW50IG9yZGVy
IG1heSBiZSBiZ3JhIGlmIHdlIHVwbG9hZGVkIGJncmEgcGl4ZWxzIHRvIHJnYmEgdGV4dHVyZXMu
CisgICAgcmV0dXJuIFBsYXRmb3JtQ29sb3I6OnNhbWVDb21wb25lbnRPcmRlcih0ZXh0dXJlRm9y
bWF0KSA/CisgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3Jt
YXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKK30K
Kwogdm9pZCBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwOjpwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVy
VGV4ZWxzKQogewogICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsK
QEAgLTg3LDcgKzk1LDcgQEAgdm9pZCBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwOjp1cGRhdGVU
ZQogICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmbV9jYW52YXMpOwogCiAg
ICAgdGV4dHVyZS0+YmluZFRleHR1cmUoKTsKLSAgICBtX3RleFN1YkltYWdlLnVwbG9hZChsb2Nr
ZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBjb250ZXh0
KCkpOworICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKGxvY2tlci5waXhlbHMoKSwgY29udGVudFJl
Y3QoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KCkp
OwogfQogCiAjaWYgVVNFKFNLSUEpCkBAIC0xMDUsNiArMTEzLDEyIEBAIExheWVyVGV4dHVyZVVw
ZGF0ZXJTa1BpY3R1cmU6On5MYXllclRleHQKICAgICBkZWxldGVGcmFtZUJ1ZmZlcigpOwogfQog
CitMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgTGF5ZXJUZXh0dXJlVXBk
YXRlclNrUGljdHVyZTo6c2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQp
Cit7CisgICAgLy8gSGVyZSB3ZSBkaXJlY3RseSByZW5kZXIgdG8gdGhlIHRleHR1cmUsIHNvIHRo
ZSBjb21wb25lbnQgb3JkZXIgaXMgYWx3YXlzIGNvcnJlY3QuCisgICAgcmV0dXJuIExheWVyVGV4
dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7Cit9CisKIHZvaWQgTGF5ZXJUZXh0
dXJlVXBkYXRlclNrUGljdHVyZTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscykKIHsKICAg
ICAvLyBOZWVkIHRvIHJlY3JlYXRlIEZCTyBpZiB0aWxlLXNpemUgY2hhbmdlZC4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXJDYW52YXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmgJKHJldmlzaW9uIDg5MTM3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJl
VXBkYXRlckNhbnZhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5MYXllclRleHR1cmVVcGRhdGVyQml0bWFwKCkgeyB9CiAKICAgICB2aXJ0
dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQorICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0
IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKICAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJ
bnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscyk7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KExheWVyVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIApAQCAtODUsNiArODYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZSgpOwogCiAgICAgdmlydHVh
bCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRvcERvd25PcmllbnRhdGlvbjsgfQorICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNh
bXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKICAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRT
aXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscyk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVRleHR1cmVSZWN0KExheWVyVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21p
dW0uY3BwCShyZXZpc2lvbiA4OTEzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJMYXllclRleHR1cmUuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAogdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKQEAgLTUxLDcgKzUyLDggQEAgUGFzc093blB0cjxMYXllclRpbGVyQ2hy
b21pdW0+IExheWVyVGlsZQogfQogCiBMYXllclRpbGVyQ2hyb21pdW06OkxheWVyVGlsZXJDaHJv
bWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIFBhc3NPd25QdHI8TGF5
ZXJUZXh0dXJlVXBkYXRlcj4gdGV4dHVyZVVwZGF0ZXIsIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXIpCi0gICAgOiBtX3NraXBzRHJhdyhmYWxzZSkKKyAg
ICA6IG1fdGV4dHVyZUZvcm1hdChQbGF0Zm9ybUNvbG9yOjpiZXN0VGV4dHVyZUZvcm1hdChsYXll
clJlbmRlcmVyLT5jb250ZXh0KCkpKQorICAgICwgbV9za2lwc0RyYXcoZmFsc2UpCiAgICAgLCBt
X3RpbGluZ0RhdGEobWF4KHRpbGVTaXplLndpZHRoKCksIHRpbGVTaXplLmhlaWdodCgpKSwgMCwg
MCwgYm9yZGVyID09IEhhc0JvcmRlclRleGVscykKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4
dHVyZVVwZGF0ZXIpCiAgICAgLCBtX2xheWVyUmVuZGVyZXIobGF5ZXJSZW5kZXJlcikKQEAgLTI0
NSwxMCArMjQ3LDEwIEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUK
ICAgICAgICAgICAgIFRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CiAgICAgICAgICAgICBpZiAo
IXRpbGUpCiAgICAgICAgICAgICAgICAgdGlsZSA9IGNyZWF0ZVRpbGUoaSwgaik7Ci0gICAgICAg
ICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVTaXplLCBHcmFwaGljc0Nv
bnRleHQzRDo6UkdCQSkpCisgICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+aXNWYWxp
ZChtX3RpbGVTaXplLCBtX3RleHR1cmVGb3JtYXQpKQogICAgICAgICAgICAgICAgIHRpbGUtPm1f
ZGlydHlMYXllclJlY3QgPSB0aWxlTGF5ZXJSZWN0KHRpbGUpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cmVzZXJ2ZShtX3RpbGVTaXplLCBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5y
ZXNlcnZlKG1fdGlsZVNpemUsIG1fdGV4dHVyZUZvcm1hdCk7CiAgICAgICAgICAgICBkaXJ0eUxh
eWVyUmVjdC51bml0ZSh0aWxlLT5tX2RpcnR5TGF5ZXJSZWN0KTsKICAgICAgICAgfQogICAgIH0K
QEAgLTI5NCw3ICsyOTYsNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6dXBkYXRlUmVjdCgp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmICghdGlsZS0+dGV4
dHVyZSgpLT5pc1Jlc2VydmVkKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1
cmUoKS0+cmVzZXJ2ZShtX3RpbGVTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUoKS0+cmVzZXJ2ZShtX3RpbGVTaXplLCBt
X3RleHR1cmVGb3JtYXQpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzQyLDkgKzM0NCwxOSBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhdyhj
b25zdCBJbnRSCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKLSAgICBjb25zdCBMYXllclRpbGVyQ2hyb21p
dW06OlByb2dyYW0qIHByb2dyYW0gPSBsYXllclJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbSgpOwor
ICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbSogcHJvZ3JhbSA9IDA7CisgICAg
c3dpdGNoIChtX3RleHR1cmVVcGRhdGVyLT5zYW1wbGVkVGV4ZWxGb3JtYXQobV90ZXh0dXJlRm9y
bWF0KSkgeworICAgIGNhc2UgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0
UkdCQToKKyAgICAgICAgcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIoKS0+dGlsZXJQcm9ncmFtUkdC
QSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBs
ZWRUZXhlbEZvcm1hdEJHUkE6CisgICAgICAgIHByb2dyYW0gPSBsYXllclJlbmRlcmVyKCktPnRp
bGVyUHJvZ3JhbUJHUkEoKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51
c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwg
MCkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21l
bnRTYW1wbGVyTG9jYXRpb24oKSwgMCkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3Rp
dmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogCiAgICAgaW50IGxlZnQs
IHRvcCwgcmlnaHQsIGJvdHRvbTsKQEAgLTQxNiwxMSArNDI4LDExIEBAIHZvaWQgTGF5ZXJUaWxl
ckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWEKICAgICAvLyBBcHBseSB0aGUgcHJvamVjdGlvbiBt
YXRyaXggYmVmb3JlIHNlbmRpbmcgdGhlIHRyYW5zZm9ybSBvdmVyIHRvIHRoZSBzaGFkZXIuCiAg
ICAgTGF5ZXJDaHJvbWl1bTo6dG9HTE1hdHJpeCgmZ2xNYXRyaXhbMF0sIHByb2plY3Rpb25NYXRy
aXggKiByZW5kZXJNYXRyaXgpOwogCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm1N
YXRyaXg0ZnYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwgZmFsc2Us
ICZnbE1hdHJpeFswXSwgMSkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtTWF0
cml4NGZ2KHByb2dyYW0tPnZlcnRleE1hdHJpeExvY2F0aW9uKCksIGZhbHNlLCAmZ2xNYXRyaXhb
MF0sIDEpKTsKIAotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWYocHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksIG9wYWNpdHkpKTsKKyAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+dW5pZm9ybTFmKHByb2dyYW0tPmZyYWdtZW50QWxwaGFMb2NhdGlvbigp
LCBvcGFjaXR5KSk7CiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRmKHByb2dy
YW0tPnZlcnRleFNoYWRlcigpLnRleFRyYW5zZm9ybUxvY2F0aW9uKCksCisgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPnVuaWZvcm00Zihwcm9ncmFtLT52ZXJ0ZXhUZXhUcmFuc2Zvcm1Mb2NhdGlv
bigpLAogICAgICAgICB0ZXhUcmFuc2xhdGVYLCB0ZXhUcmFuc2xhdGVZLCB0ZXhTY2FsZVgsIHRl
eFNjYWxlWSkpOwogCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRyYXdFbGVtZW50cyhHcmFw
aGljc0NvbnRleHQzRDo6VFJJQU5HTEVTLCA2LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURf
U0hPUlQsIDApKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA4
OTEzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGlsZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCwzNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIHNraXBzRHJhdygpIGNvbnN0IHsgcmV0dXJuIG1fc2tpcHNEcmF3OyB9CiAK
LSAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwg
RnJhZ21lbnRTaGFkZXJUZXhBbHBoYT4gUHJvZ3JhbTsKKyAgICBjbGFzcyBQcm9ncmFtIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgcHJvZ3JhbSgpIGNvbnN0ID0gMDsK
KyAgICAgICAgdmlydHVhbCBpbnQgdmVydGV4TWF0cml4TG9jYXRpb24oKSBjb25zdCA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgaW50IHZlcnRleFRleFRyYW5zZm9ybUxvY2F0aW9uKCkgY29uc3QgPSAw
OworICAgICAgICB2aXJ0dWFsIGludCBmcmFnbWVudEFscGhhTG9jYXRpb24oKSBjb25zdCA9IDA7
CisgICAgICAgIHZpcnR1YWwgaW50IGZyYWdtZW50U2FtcGxlckxvY2F0aW9uKCkgY29uc3QgPSAw
OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBWZXJ0ZXhTaGFkZXIsIGNsYXNzIEZyYWdt
ZW50U2hhZGVyPgorICAgIGNsYXNzIFByb2dyYW1UIDogcHVibGljIFByb2dyYW0geworICAgIHB1
YmxpYzoKKyAgICAgIGV4cGxpY2l0IFByb2dyYW1UKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
KSA6IG1fYmluZGluZyhjb250ZXh0KSB7IH0KKworICAgICAgYm9vbCBpbml0aWFsaXplZCgpIGNv
bnN0IHsgcmV0dXJuIG1fYmluZGluZy5pbml0aWFsaXplZCgpOyB9CisgICAgICB2b2lkIGluaXRp
YWxpemUoKSB7IG1fYmluZGluZy5pbml0aWFsaXplKCk7IH0KKworICAgICAgdmlydHVhbCB1bnNp
Z25lZCBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4gbV9iaW5kaW5nLnByb2dyYW0oKTsgfQorICAg
ICAgdmlydHVhbCBpbnQgdmVydGV4TWF0cml4TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Jp
bmRpbmcudmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKTsgfQorICAgICAgdmlydHVhbCBp
bnQgdmVydGV4VGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2JpbmRpbmcu
dmVydGV4U2hhZGVyKCkudGV4VHJhbnNmb3JtTG9jYXRpb24oKTsgfQorICAgICAgdmlydHVhbCBp
bnQgZnJhZ21lbnRBbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaW5kaW5nLmZyYWdt
ZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpOyB9CisgICAgICB2aXJ0dWFsIGludCBmcmFnbWVu
dFNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmluZGluZy5mcmFnbWVudFNoYWRl
cigpLnNhbXBsZXJMb2NhdGlvbigpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB0eXBlZGVm
IFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlciwgRnJhZ21lbnRTaGFkZXI+IEJpbmRpbmc7Cisg
ICAgICAgIEJpbmRpbmcgbV9iaW5kaW5nOworICAgIH07CisgICAgdHlwZWRlZiBQcm9ncmFtVDxW
ZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhPiBQ
cm9ncmFtUkdCQTsKKyAgICAvLyBTaGFkZXIgcHJvZ3JhbSB0aGF0IHN3YXBzIHJlZCBhbmQgYmx1
ZSBjb21wb25lbnRzIG9mIHRleHR1cmUuCisgICAgLy8gVXNlZCB3aGVuIHRleHR1cmUgZm9ybWF0
IGRvZXMgbm90IG1hdGNoIG5hdGl2ZSBjb2xvciBmb3JtYXQuCisgICAgdHlwZWRlZiBQcm9ncmFt
VDxWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVyQkdSQVRleEFscGhh
PiBQcm9ncmFtQkdSQTsKIAogICAgIC8vIElmIHRoaXMgdGlsZXIgaGFzIGV4YWN0bHkgb25lIHRp
bGUsIHJldHVybiBpdHMgdGV4dHVyZS4gT3RoZXJ3aXNlLCBudWxsLgogICAgIExheWVyVGV4dHVy
ZSogZ2V0U2luZ2xlVGV4dHVyZSgpOwpAQCAtMTIzLDYgKzE1Myw4IEBAIHByaXZhdGU6CiAgICAg
SW50UmVjdCB0aWxlQ29udGVudFJlY3QoY29uc3QgVGlsZSopIGNvbnN0OwogICAgIEludFJlY3Qg
dGlsZUxheWVyUmVjdChjb25zdCBUaWxlKikgY29uc3Q7CiAKKyAgICBHQzNEZW51bSBtX3RleHR1
cmVGb3JtYXQ7CisKICAgICBJbnRTaXplIG1fdGlsZVNpemU7CiAgICAgSW50UG9pbnQgbV9sYXll
clBvc2l0aW9uOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9QbGF0Zm9ybUNvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUNvbG9y
X2gKKyNkZWZpbmUgUGxhdGZvcm1Db2xvcl9oCisKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFBsYXRmb3JtQ29sb3IgeworcHVibGljOgorICAgIHN0YXRpYyBHcmFwaGljc0NvbnRl
eHQzRDo6U291cmNlRGF0YUZvcm1hdCBmb3JtYXQoKQorICAgIHsKKyNpZiBVU0UoU0tJQSkKKyAg
ICAgICAgcmV0dXJuIFNLX0IzMl9TSElGVCA/IEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3Jt
YXRSR0JBOCA6IEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JBODsKKyNlbGlmIFVT
RShDRykKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JB
ODsKKyNlbmRpZgorICAgIH0KKworICAgIC8vIFJldHVybnMgdGhlIG1vc3QgZWZmaWNpZW50IHRl
eHR1cmUgZm9ybWF0IGZvciB0aGlzIHBsYXRmb3JtLgorICAgIHN0YXRpYyBHQzNEZW51bSBiZXN0
VGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICB7CisgICAgICAg
IEdDM0RlbnVtIHRleHR1cmVGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKKyAgICAg
ICAgc3dpdGNoIChmb3JtYXQoKSkgeworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpT
b3VyY2VGb3JtYXRSR0JBODoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JBODoKKyAgICAgICAgICAgIGlmIChjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4
ODgiKSkKKyAgICAgICAgICAgICAgICB0ZXh0dXJlRm9ybWF0ID0gRXh0ZW5zaW9uczNEOjpCR1JB
X0VYVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSBp
ZiB0aGUgZ2l2ZW4gdGV4dHVyZSBmb3JtYXQgaGFzIHRoZSBzYW1lIGNvbXBvbmVudCBvcmRlcgor
ICAgIC8vIGFzIHRoZSBjb2xvciBvbiB0aGlzIHBsYXRmb3JtLgorICAgIHN0YXRpYyBib29sIHNh
bWVDb21wb25lbnRPcmRlcihHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChmb3JtYXQoKSkgeworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3Vy
Y2VGb3JtYXRSR0JBODoKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0ID09IEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3Vy
Y2VGb3JtYXRCR1JBODoKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0ID09IEV4dGVu
c2lvbnMzRDo6QkdSQV9FWFQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9y
bUNvbG9yLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TaGFkZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA4OTEzNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0MCwxMiArMTQwLDYgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9hbHBoYUxvY2F0aW9uOwog
fTsKIAotI2lmIFVTRShTS0lBKSAmJiBTS19CMzJfU0hJRlQKLXR5cGVkZWYgRnJhZ21lbnRTaGFk
ZXJSR0JBVGV4QWxwaGEgRnJhZ21lbnRTaGFkZXJUZXhBbHBoYTsKLSNlbHNlCi10eXBlZGVmIEZy
YWdtZW50U2hhZGVyQkdSQVRleEFscGhhIEZyYWdtZW50U2hhZGVyVGV4QWxwaGE7Ci0jZW5kaWYK
LQogY2xhc3MgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbyB7CiBwdWJsaWM6CiAgICAgRnJhZ21lbnRT
aGFkZXJZVVZWaWRlbygpOwo=
</data>
<flag name="review"
          id="91657"
          type_id="1"
          status="-"
          setter="jamesr"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98004</attachid>
            <date>2011-06-21 10:00:01 -0700</date>
            <delta_ts>2011-06-22 16:14:33 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>bgra.patch</filename>
            <type>text/plain</type>
            <size>33689</size>
            <attacher name="Alok Priyadarshi">alokp</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5MzU5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTEtMDYtMjEgIEFsb2sgUHJp
eWFkYXJzaGkgIDxhbG9rcEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBSZWQgYW5kIEJsdWUgY2hhbm5lbHMg
YXJlIHN3YXBwZWQgaW4gaW1hZ2VzIHdpdGggYWNjZWxlcmF0ZWQgZHJhd2luZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE0NDIKKworICAgICAgICBX
ZSB3ZXJlIHVwbG9hZGluZyBCR1JBIHBpeGVscyBpbnRvIFJHQkEgdGV4dHVyZXMgYW5kIHN3YXBw
aW5nIHRoZSBjb21wb25lbnRzIGluIHRoZSBwaXhlbCBzaGFkZXIuCisgICAgICAgIFRoaXMgc3Ry
YXRlZ3kgZG9lcyBub3Qgd29yayB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcgYmVjYXVzZSB3ZSBh
cmUgZGlyZWN0bHkgcmVuZGVyaW5nIHRvIHRoZSB0ZXh0dXJlLCBub3QgdXBsb2FkaW5nIHBpeGVs
cy4KKyAgICAgICAgVGhpcyBwYXRjaCB1c2VzIEJHUkEgdGV4dHVyZXMgaWYgYXZhaWxhYmxlLiBJ
ZiBub3QgaXQgZmFsbHMgYmFjayB0byB0aGUgb3JpZ2luYWwgc2NoZW1lIG9mIHN3YXBwaW5nIHRo
ZSBjb21wb25lbnRzIGluIHRoZSBwaXhlbCBzaGFkZXIuCisKKyAgICAgICAgVGVzdHM6IGNvbXBv
c2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNoaW5nLmh0bWwgKGV4aXN0aW5n
KQorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWRUZXhlbEZvcm1hdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVy
Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpza2lh
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRp
YWxpemVTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6dGlsZXJQcm9ncmFtUkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OnRpbGVyUHJvZ3JhbUJHUkEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclRleHR1cmU6OmZvcm1hdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJU
ZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVT
dWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
VGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52
YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6c2Ft
cGxlZFRleGVsRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJC
aXRtYXA6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVy
ZVVwZGF0ZXJTa1BpY3R1cmU6On5MYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OnNhbXBsZWRUZXhlbEZv
cm1hdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJl
VXBkYXRlckNhbnZhcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyVGlsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21p
dW06OkxheWVyVGlsZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyQ2hy
b21pdW06OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVt
OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6Z3Jvd0xheWVy
VG9Db250YWluKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1Rp
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVk
UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNo
cm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1D
b2xvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29sb3I6OmZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yOjpiZXN0VGV4dHVyZUZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yOjpzYW1lQ29tcG9uZW50T3JkZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmg6CisKIDIw
MTEtMDYtMjEgIFBldGVyIFZhcmdhICA8cHZhcmdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDg5
MzU5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00
MTI1LDYgKzQxMjUsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L01lZGlhUGxheWVyUHJpdmF0ZUNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ2FudmFzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1DYW52YXMuaCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUljb24uaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1JbWFnZS5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtSW1hZ2UuaCcsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDg5MzU5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkxheWVyVGV4dHVy
ZS5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCiAjaW5jbHVkZSAiTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC01NSw2ICs1NiwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIE9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90
dG9tVXBPcmllbnRhdGlvbjsgfQogCisgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2Ft
cGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpCisgICAgeworICAgICAgICBy
ZXR1cm4gUGxhdGZvcm1Db2xvcjo6c2FtZUNvbXBvbmVudE9yZGVyKHRleHR1cmVGb3JtYXQpID8K
KyAgICAgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRS
R0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKKyAgICB9
CisKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscykKICAgICB7
CiAgICAgICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKQEAgLTcz
LDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICBjbGlwcGVkRGVzdFJlY3QubW92ZShjbGlwcGVk
U291cmNlUmVjdC5sb2NhdGlvbigpIC0gc291cmNlUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAg
Y2xpcHBlZERlc3RSZWN0LnNldFNpemUoY2xpcHBlZFNvdXJjZVJlY3Quc2l6ZSgpKTsKIAotICAg
ICAgICBtX3RleFN1YkltYWdlLnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwg
Y2xpcHBlZFNvdXJjZVJlY3QsIGNsaXBwZWREZXN0UmVjdCwgY29udGV4dCgpKTsKKyAgICAgICAg
bV90ZXhTdWJJbWFnZS51cGxvYWQobV9pbWFnZS5waXhlbHMoKSwgaW1hZ2VSZWN0KCksIGNsaXBw
ZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0
KCkpOwogICAgIH0KIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcAkocmV2aXNpb24gODkzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTUsMjAgKzExNSwzMyBAQCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVy
ZXJDaHJvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGFjY2VsZXJhdGVEcmF3aW5nKQogICAgIDogbV92aWV3cG9ydFNjcm9sbFBvc2l0aW9uKEludFBv
aW50KC0xLCAtMSkpCiAgICAgLCBtX3Jvb3RMYXllcigwKQotICAgICwgbV9hY2NlbGVyYXRlRHJh
d2luZyhhY2NlbGVyYXRlRHJhd2luZykKKyAgICAsIG1fYWNjZWxlcmF0ZURyYXdpbmcoZmFsc2Up
CiAgICAgLCBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlKDApCiAgICAgLCBtX29mZnNjcmVlbkZyYW1l
YnVmZmVySWQoMCkKICAgICAsIG1fY29tcG9zaXRlT2Zmc2NyZWVuKGZhbHNlKQogICAgICwgbV9j
b250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2NoaWxkQ29udGV4dHNXZXJlQ29waWVkKGZhbHNlKQog
ICAgICwgbV9jb250ZXh0U3VwcG9ydHNMYXRjaChmYWxzZSkKKyAgICAsIG1fY29udGV4dFN1cHBv
cnRzVGV4dHVyZUZvcm1hdEJHUkEoZmFsc2UpCisgICAgLCBtX2NvbnRleHRTdXBwb3J0c1JlYWRG
b3JtYXRCR1JBKGZhbHNlKQogICAgICwgbV9hbmltYXRpbmcoZmFsc2UpCiAgICAgLCBtX2RlZmF1
bHRSZW5kZXJTdXJmYWNlKDApCiB7Ci0gICAgbV9jb250ZXh0U3VwcG9ydHNMYXRjaCA9IG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fbGF0Y2giKTsKLSAg
ICBtX2NvbnRleHRTdXBwb3J0c01hcFN1YiA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5z
dXBwb3J0cygiR0xfQ0hST01JVU1fbWFwX3N1YiIpOworICAgIFdlYkNvcmU6OkV4dGVuc2lvbnMz
RCogZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOworICAgIG1fY29udGV4
dFN1cHBvcnRzTGF0Y2ggPSBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fbGF0Y2gi
KTsKKyAgICBtX2NvbnRleHRTdXBwb3J0c01hcFN1YiA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJH
TF9DSFJPTUlVTV9tYXBfc3ViIik7CiAgICAgaWYgKG1fY29udGV4dFN1cHBvcnRzTWFwU3ViKQot
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hS
T01JVU1fbWFwX3N1YiIpOworICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9D
SFJPTUlVTV9tYXBfc3ViIik7CisgICAgbV9jb250ZXh0U3VwcG9ydHNUZXh0dXJlRm9ybWF0QkdS
QSA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgi
KTsKKyAgICBpZiAobV9jb250ZXh0U3VwcG9ydHNUZXh0dXJlRm9ybWF0QkdSQSkKKyAgICAgICAg
ZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4
Iik7CisgICAgbV9jb250ZXh0U3VwcG9ydHNSZWFkRm9ybWF0QkdSQSA9IGV4dGVuc2lvbnMtPnN1
cHBvcnRzKCJHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYSIpOworICAgIGlmIChtX2NvbnRleHRTdXBw
b3J0c1JlYWRGb3JtYXRCR1JBKQorICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJH
TF9FWFRfcmVhZF9mb3JtYXRfYmdyYSIpOworCisjaWYgVVNFKFNLSUEpCisgICAgbV9hY2NlbGVy
YXRlRHJhd2luZyA9IGFjY2VsZXJhdGVEcmF3aW5nICYmIHNraWFDb250ZXh0KCk7CisjZW5kaWYK
ICAgICBtX2hhcmR3YXJlQ29tcG9zaXRpbmcgPSBpbml0aWFsaXplU2hhcmVkT2JqZWN0cygpOwog
CiAgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXIgPSBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0
ZSh0aGlzLCBjcmVhdGVSb290TGF5ZXJUZXh0dXJlVXBkYXRlcihjb250ZW50UGFpbnQpLCBJbnRT
aXplKDI1NiwgMjU2KSwgTGF5ZXJUaWxlckNocm9taXVtOjpOb0JvcmRlclRleGVscyk7CkBAIC0x
NTEsMTEgKzE2NCw3IEBAIEdyYXBoaWNzQ29udGV4dDNEKiBMYXllclJlbmRlcmVyQ2hyb21pdW0K
ICNpZiBVU0UoU0tJQSkKIEdyQ29udGV4dCogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpza2lhQ29u
dGV4dCgpCiB7Ci0gICAgaWYgKCFtX3NraWFDb250ZXh0KSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4
dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAg
ICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdS
QTg4ODgiKTsKLSAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3JlYWRf
Zm9ybWF0X2JncmEiKTsKLQorICAgIGlmICghbV9za2lhQ29udGV4dCAmJiBtX2NvbnRleHRTdXBw
b3J0c1RleHR1cmVGb3JtYXRCR1JBICYmIG1fY29udGV4dFN1cHBvcnRzUmVhZEZvcm1hdEJHUkEp
IHsKICAgICAgICAgbV9za2lhQ29udGV4dCA9IGFkb3B0UHRyKEdyQ29udGV4dDo6Q3JlYXRlR0xT
aGFkZXJDb250ZXh0KCkpOwogICAgICAgICAvLyBMaW1pdCB0aGUgbnVtYmVyIG9mIHRleHR1cmVz
IHdlIGhvbGQgaW4gdGhlIGJpdG1hcC0+dGV4dHVyZSBjYWNoZS4KICAgICAgICAgc3RhdGljIGNv
bnN0IGludCBtYXhUZXh0dXJlQ2FjaGVDb3VudCA9IDUxMjsKQEAgLTEwOTEsNyArMTEwMCw3IEBA
IGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2gKICAgICAvLyBzdGFydCB3
aGlsZSB3ZSBkbyBvdGhlciB3b3JrLiBPdGhlciBwcm9ncmFtcyBhcmUgY3JlYXRlZCBsYXppbHkg
b24gZmlyc3QgYWNjZXNzLgogICAgIG1fc2hhcmVkR2VvbWV0cnkgPSBhZG9wdFB0cihuZXcgR2Vv
bWV0cnlCaW5kaW5nKG1fY29udGV4dC5nZXQoKSkpOwogICAgIG1fcmVuZGVyU3VyZmFjZVByb2dy
YW0gPSBhZG9wdFB0cihuZXcgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpQcm9ncmFtKG1fY29udGV4
dC5nZXQoKSkpOwotICAgIG1fdGlsZXJQcm9ncmFtID0gYWRvcHRQdHIobmV3IExheWVyVGlsZXJD
aHJvbWl1bTo6UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBtX3RpbGVyUHJvZ3JhbVJH
QkEgPSBhZG9wdFB0cihuZXcgTGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtUkdCQShtX2NvbnRl
eHQuZ2V0KCkpKTsKIAogICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+Zmx1c2go
KSk7CiAKQEAgLTExNDIsMTQgKzExNTEsMjUgQEAgY29uc3QgUmVuZGVyU3VyZmFjZUNocm9taXVt
OjpNYXNrUHJvZ3JhbQogICAgIHJldHVybiBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbS5nZXQo
KTsKIH0KIAotY29uc3QgTGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtKiBMYXllclJlbmRlcmVy
Q2hyb21pdW06OnRpbGVyUHJvZ3JhbSgpCitjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dy
YW1SR0JBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVJHQkEoKQogewotICAg
IEFTU0VSVChtX3RpbGVyUHJvZ3JhbSk7Ci0gICAgaWYgKCFtX3RpbGVyUHJvZ3JhbS0+aW5pdGlh
bGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpi
b3JkZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7Ci0gICAgICAgIG1fdGlsZXJQcm9n
cmFtLT5pbml0aWFsaXplKCk7CisgICAgQVNTRVJUKG1fdGlsZXJQcm9ncmFtUkdCQSk7CisgICAg
aWYgKCFtX3RpbGVyUHJvZ3JhbVJHQkEtPmluaXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0Vf
RVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtUkdCQTo6aW5pdGlhbGl6
ZSIsIHRoaXMsIDApOworICAgICAgICBtX3RpbGVyUHJvZ3JhbVJHQkEtPmluaXRpYWxpemUoKTsK
KyAgICB9CisgICAgcmV0dXJuIG1fdGlsZXJQcm9ncmFtUkdCQS5nZXQoKTsKK30KKworY29uc3Qg
TGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtQkdSQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0
aWxlclByb2dyYW1CR1JBKCkKK3sKKyAgICBpZiAoIW1fdGlsZXJQcm9ncmFtQkdSQSkKKyAgICAg
ICAgbV90aWxlclByb2dyYW1CR1JBID0gYWRvcHRQdHIobmV3IExheWVyVGlsZXJDaHJvbWl1bTo6
UHJvZ3JhbUJHUkEobV9jb250ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbUJH
UkEtPmluaXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6dGlsZXJQcm9ncmFtQkdSQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAg
ICBtX3RpbGVyUHJvZ3JhbUJHUkEtPmluaXRpYWxpemUoKTsKICAgICB9Ci0gICAgcmV0dXJuIG1f
dGlsZXJQcm9ncmFtLmdldCgpOworICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbUJHUkEuZ2V0KCk7
CiB9CiAKIGNvbnN0IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmNhbnZhc0xheWVyUHJvZ3JhbSgpCkBAIC0xMjEwLDcgKzEyMzAsOCBAQCB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlCiAgICAgbV9wbHVnaW5MYXllclByb2dy
YW0uY2xlYXIoKTsKICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmNsZWFyKCk7CiAgICAgbV9y
ZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0uY2xlYXIoKTsKLSAgICBtX3RpbGVyUHJvZ3JhbS5jbGVh
cigpOworICAgIG1fdGlsZXJQcm9ncmFtUkdCQS5jbGVhcigpOworICAgIG1fdGlsZXJQcm9ncmFt
QkdSQS5jbGVhcigpOwogICAgIGlmIChtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpCiAgICAgICAg
IEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9vZmZz
Y3JlZW5GcmFtZWJ1ZmZlcklkKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oCShyZXZpc2lvbiA4OTM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjgsNyArMTI4LDggQEAgcHVibGljOgogICAgIGNvbnN0IENDSGVhZHNVcERpc3BsYXk6OlByb2dy
YW0qIGhlYWRzVXBEaXNwbGF5UHJvZ3JhbSgpOwogICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJv
bWl1bTo6UHJvZ3JhbSogcmVuZGVyU3VyZmFjZVByb2dyYW0oKTsKICAgICBjb25zdCBSZW5kZXJT
dXJmYWNlQ2hyb21pdW06Ok1hc2tQcm9ncmFtKiByZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0oKTsK
LSAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0qIHRpbGVyUHJvZ3JhbSgpOwor
ICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbVJHQkEqIHRpbGVyUHJvZ3JhbVJH
QkEoKTsKKyAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW1CR1JBKiB0aWxlclBy
b2dyYW1CR1JBKCk7CiAgICAgY29uc3QgQ0NDYW52YXNMYXllckltcGw6OlByb2dyYW0qIGNhbnZh
c0xheWVyUHJvZ3JhbSgpOwogICAgIGNvbnN0IENDUGx1Z2luTGF5ZXJJbXBsOjpQcm9ncmFtKiBw
bHVnaW5MYXllclByb2dyYW0oKTsKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpSR0JBUHJv
Z3JhbSogdmlkZW9MYXllclJHQkFQcm9ncmFtKCk7CkBAIC0yMjMsNyArMjI0LDggQEAgcHJpdmF0
ZToKICAgICBPd25QdHI8Q0NIZWFkc1VwRGlzcGxheTo6UHJvZ3JhbT4gbV9oZWFkc1VwRGlzcGxh
eVByb2dyYW07CiAgICAgT3duUHRyPFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6UHJvZ3JhbT4gbV9y
ZW5kZXJTdXJmYWNlUHJvZ3JhbTsKICAgICBPd25QdHI8UmVuZGVyU3VyZmFjZUNocm9taXVtOjpN
YXNrUHJvZ3JhbT4gbV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW07Ci0gICAgT3duUHRyPExheWVy
VGlsZXJDaHJvbWl1bTo6UHJvZ3JhbT4gbV90aWxlclByb2dyYW07CisgICAgT3duUHRyPExheWVy
VGlsZXJDaHJvbWl1bTo6UHJvZ3JhbVJHQkE+IG1fdGlsZXJQcm9ncmFtUkdCQTsKKyAgICBPd25Q
dHI8TGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtQkdSQT4gbV90aWxlclByb2dyYW1CR1JBOwog
ICAgIE93blB0cjxDQ0NhbnZhc0xheWVySW1wbDo6UHJvZ3JhbT4gbV9jYW52YXNMYXllclByb2dy
YW07CiAgICAgT3duUHRyPENDVmlkZW9MYXllckltcGw6OlJHQkFQcm9ncmFtPiBtX3ZpZGVvTGF5
ZXJSR0JBUHJvZ3JhbTsKICAgICBPd25QdHI8Q0NWaWRlb0xheWVySW1wbDo6WVVWUHJvZ3JhbT4g
bV92aWRlb0xheWVyWVVWUHJvZ3JhbTsKQEAgLTI0Nyw2ICsyNDksOCBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBtX2NvbnRleHRTdXBwb3J0c0xhdGNoOwogICAgIGJvb2wgbV9jb250ZXh0U3VwcG9y
dHNNYXBTdWI7CisgICAgYm9vbCBtX2NvbnRleHRTdXBwb3J0c1RleHR1cmVGb3JtYXRCR1JBOwor
ICAgIGJvb2wgbV9jb250ZXh0U3VwcG9ydHNSZWFkRm9ybWF0QkdSQTsKIAogICAgIGJvb2wgbV9h
bmltYXRpbmc7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5oCShyZXZpc2lvbiA4OTM1OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkxheWVy
VGV4dHVyZSgpOwogCisgICAgdW5zaWduZWQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3Jt
YXQ7IH0KICAgICBib29sIGlzVmFsaWQoY29uc3QgSW50U2l6ZSYsIHVuc2lnbmVkIGZvcm1hdCk7
CiAgICAgYm9vbCByZXNlcnZlKGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBmb3JtYXQpOwogICAg
IGJvb2wgaXNSZXNlcnZlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2Uu
Y3BwCShyZXZpc2lvbiA4OTM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUs
MTcgKzU1LDE3IEBAIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnNldFN1YkltYWdlU2kKIAog
dm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBj
b25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBpZiAobV91c2VNYXBUZXhTdWJJbWFn
ZSkKLSAgICAgICAgdXBsb2FkV2l0aE1hcFRleFN1YkltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNv
dXJjZVJlY3QsIGRlc3RSZWN0LCBjb250ZXh0KTsKKyAgICAgICAgdXBsb2FkV2l0aE1hcFRleFN1
YkltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNv
bnRleHQpOwogICAgIGVsc2UKLSAgICAgICAgdXBsb2FkV2l0aFRleFN1YkltYWdlKGltYWdlLCBp
bWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBjb250ZXh0KTsKKyAgICAgICAgdXBsb2Fk
V2l0aFRleFN1YkltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBm
b3JtYXQsIGNvbnRleHQpOwogfQogCiB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRX
aXRoVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdl
UmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewog
ICAgIFRSQUNFX0VWRU5UKCJMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1Yklt
YWdlIiwgdGhpcywgMCk7CiAgICAgaWYgKCFtX3N1YkltYWdlKQpAQCAtODcsMTIgKzg3LDEyIEBA
IHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXgKIAogICAgICAgICBwaXhl
bFNvdXJjZSA9ICZtX3N1YkltYWdlWzBdOwogICAgIH0KLSAgICBjb250ZXh0LT50ZXhTdWJJbWFn
ZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RS
ZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgcGl4ZWxTb3Vy
Y2UpOworICAgIGNvbnRleHQtPnRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBk
ZXN0UmVjdC5oZWlnaHQoKSwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllU
RSwgcGl4ZWxTb3VyY2UpOwogfQogCiB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRX
aXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGlt
YWdlUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0KQogewogICAgIFRSQUNFX0VWRU5UKCJMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2Fk
V2l0aE1hcFRleFN1YkltYWdlIiwgdGhpcywgMCk7CiAgICAgLy8gT2Zmc2V0IGZyb20gaW1hZ2Ut
cmVjdCB0byBzb3VyY2UtcmVjdC4KQEAgLTEwMCwxMCArMTAwLDEwIEBAIHZvaWQgTGF5ZXJUZXh0
dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXAKIAogICAgIC8vIFVwbG9hZCB0aWxlIGRhdGEgdmlh
IGEgbWFwcGVkIHRyYW5zZmVyIGJ1ZmZlcgogICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRl
bnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkpOwotICAgIHVpbnQ4X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4
X3QqPihleHRlbnNpb25zLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53
aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBo
aWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVf
T05MWSkpOworICAgIHVpbnQ4X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihl
eHRlbnNpb25zLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgp
LCBkZXN0UmVjdC5oZWlnaHQoKSwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURf
QllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKIAogICAgIGlmICghcGl4
ZWxEZXN0KSB7Ci0gICAgICAgIHVwbG9hZFdpdGhUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgY29udGV4dCk7CisgICAgICAgIHVwbG9hZFdpdGhUZXhT
dWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBj
b250ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVTdWJJbWFnZS5oCShyZXZpc2lvbiA4OTM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
IAorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CkBAIC00NSwx
NSArNDYsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3ViSW1hZ2VTaXplKGNvbnN0IEludFNp
emUmKTsKICAgICB2b2lkIHVwbG9hZChjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVj
dCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4
dDNEKik7CisgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHcmFwaGljc0NvbnRleHQz
RCopOwogCiBwcml2YXRlOgogICAgIHZvaWQgdXBsb2FkV2l0aFRleFN1YkltYWdlKGNvbnN0IHVp
bnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0
M0QqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdy
YXBoaWNzQ29udGV4dDNEKik7CiAgICAgdm9pZCB1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29u
c3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHQzRCopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0Rl
bnVtIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0QqKTsKIAogICAgIGJvb2wgbV91c2VNYXBUZXhT
dWJJbWFnZTsKICAgICBJbnRTaXplIG1fc3ViSW1hZ2VTaXplOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGV4dHVyZVVwZGF0ZXIuaAkocmV2aXNpb24gODkzNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDggQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
IAorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwpAQCAtNDUsOCArNDcsMTcgQEAgcHVibGljOgogICAg
ICAgICBCb3R0b21VcE9yaWVudGF0aW9uLAogICAgICAgICBUb3BEb3duT3JpZW50YXRpb24KICAg
ICB9OworICAgIGVudW0gU2FtcGxlZFRleGVsRm9ybWF0IHsKKyAgICAgICAgU2FtcGxlZFRleGVs
Rm9ybWF0UkdCQSwKKyAgICAgICAgU2FtcGxlZFRleGVsRm9ybWF0QkdSQQorICAgIH07CiAgICAg
Ly8gUmV0dXJucyB0aGUgb3JpZW50YXRpb24gb2YgdGhlIHRleHR1cmUgdXBsb2FkZWQgYnkgdGhp
cyBpbnRlcmZhY2UuCiAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpID0gMDsK
KyAgICAvLyBSZXR1cm5zIHRoZSBmb3JtYXQgb2YgdGhlIHRleGVsIHVwbG9hZGVkIGJ5IHRoaXMg
aW50ZXJmYWNlLgorICAgIC8vIFRoaXMgZm9ybWF0IHNob3VsZCBub3QgYmUgY29uZnVzZWQgYnkg
dGV4dHVyZSBpbnRlcm5hbCBmb3JtYXQuCisgICAgLy8gVGhpcyBmb3JtYXQgc3BlY2lmaWVzIHRo
ZSBjb21wb25lbnQgb3JkZXIgaW4gdGhlIHNhbXBsZWQgdGV4ZWwuCisgICAgLy8gSWYgdGhlIGZv
cm1hdCBpcyBUZXhlbEZvcm1hdEJHUkEsIHZlYzQueCBpcyBibHVlIGFuZCB2ZWM0LnogaXMgcmVk
LgorICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNE
ZW51bSB0ZXh0dXJlRm9ybWF0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0
ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGlu
dCBib3JkZXJUZXhlbHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3Qo
TGF5ZXJUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpID0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRl
ckNhbnZhcy5jcHAJKHJldmlzaW9uIDg5MzU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZS5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAK
ICNpZiBVU0UoU0tJQSkKQEAgLTY4LDYgKzY5LDEzIEBAIExheWVyVGV4dHVyZVVwZGF0ZXJCaXRt
YXA6OkxheWVyVGV4dHVyZVUKIHsKIH0KIAorTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRl
eGVsRm9ybWF0IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnNhbXBsZWRUZXhlbEZvcm1hdChH
QzNEZW51bSB0ZXh0dXJlRm9ybWF0KQoreworICAgIC8vIFRoZSBjb21wb25lbnQgb3JkZXIgbWF5
IGJlIGJncmEgaWYgd2UgdXBsb2FkZWQgYmdyYSBwaXhlbHMgdG8gcmdiYSB0ZXh0dXJlcy4KKyAg
ICByZXR1cm4gUGxhdGZvcm1Db2xvcjo6c2FtZUNvbXBvbmVudE9yZGVyKHRleHR1cmVGb3JtYXQp
ID8KKyAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJH
QkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOworfQorCiB2
b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhl
bHMpCiB7CiAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwpAQCAt
ODcsNyArOTUsNyBAQCB2b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnVwZGF0ZVRlCiAg
ICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZtX2NhbnZhcyk7CiAKICAgICB0
ZXh0dXJlLT5iaW5kVGV4dHVyZSgpOwotICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKGxvY2tlci5w
aXhlbHMoKSwgY29udGVudFJlY3QoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGNvbnRleHQoKSk7
CisgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgp
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgdGV4dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQoKSk7CiB9
CiAKICNpZiBVU0UoU0tJQSkKQEAgLTEwNSw2ICsxMTMsMTIgQEAgTGF5ZXJUZXh0dXJlVXBkYXRl
clNrUGljdHVyZTo6fkxheWVyVGV4dAogICAgIGRlbGV0ZUZyYW1lQnVmZmVyKCk7CiB9CiAKK0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBMYXllclRleHR1cmVVcGRhdGVy
U2tQaWN0dXJlOjpzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkKK3sK
KyAgICAvLyBIZXJlIHdlIGRpcmVjdGx5IHJlbmRlciB0byB0aGUgdGV4dHVyZSwgc28gdGhlIGNv
bXBvbmVudCBvcmRlciBpcyBhbHdheXMgY29ycmVjdC4KKyAgICByZXR1cm4gTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQTsKK30KKwogdm9pZCBMYXllclRleHR1cmVV
cGRhdGVyU2tQaWN0dXJlOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKQogewogICAgIC8v
IE5lZWQgdG8gcmVjcmVhdGUgRkJPIGlmIHRpbGUtc2l6ZSBjaGFuZ2VkLgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNh
bnZhcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuaAkocmV2aXNpb24gODkzNTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRh
dGVyQ2FudmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkxheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXAoKSB7IH0KIAogICAgIHZpcnR1YWwg
T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpC
b3R0b21VcE9yaWVudGF0aW9uOyB9CisgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2Ft
cGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwogICAgIHZpcnR1YWwgdm9p
ZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNp
emUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
VGV4dHVyZVJlY3QoTGF5ZXJUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCkBAIC04NSw2ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5MYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlKCk7CiAKICAgICB2aXJ0dWFsIE9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VG9w
RG93bk9yaWVudGF0aW9uOyB9CisgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxl
ZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwogICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUm
IHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4
dHVyZVJlY3QoTGF5ZXJUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5j
cHAJKHJldmlzaW9uIDg5MzU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxh
eWVyVGV4dHVyZS5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogCiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwpAQCAtNTEsNyArNTIsOCBAQCBQYXNzT3duUHRyPExheWVyVGlsZXJDaHJvbWl1
bT4gTGF5ZXJUaWxlCiB9CiAKIExheWVyVGlsZXJDaHJvbWl1bTo6TGF5ZXJUaWxlckNocm9taXVt
KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgUGFzc093blB0cjxMYXllclRl
eHR1cmVVcGRhdGVyPiB0ZXh0dXJlVXBkYXRlciwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJv
cmRlclRleGVsT3B0aW9uIGJvcmRlcikKLSAgICA6IG1fc2tpcHNEcmF3KGZhbHNlKQorICAgIDog
bV90ZXh0dXJlRm9ybWF0KFBsYXRmb3JtQ29sb3I6OmJlc3RUZXh0dXJlRm9ybWF0KGxheWVyUmVu
ZGVyZXItPmNvbnRleHQoKSkpCisgICAgLCBtX3NraXBzRHJhdyhmYWxzZSkKICAgICAsIG1fdGls
aW5nRGF0YShtYXgodGlsZVNpemUud2lkdGgoKSwgdGlsZVNpemUuaGVpZ2h0KCkpLCAwLCAwLCBi
b3JkZXIgPT0gSGFzQm9yZGVyVGV4ZWxzKQogICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJl
VXBkYXRlcikKICAgICAsIG1fbGF5ZXJSZW5kZXJlcihsYXllclJlbmRlcmVyKQpAQCAtMjQ1LDEw
ICsyNDcsMTAgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZQogICAg
ICAgICAgICAgVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKICAgICAgICAgICAgIGlmICghdGls
ZSkKICAgICAgICAgICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKLSAgICAgICAgICAg
IGlmICghdGlsZS0+dGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZVNpemUsIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBKSkKKyAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5pc1ZhbGlkKG1f
dGlsZVNpemUsIG1fdGV4dHVyZUZvcm1hdCkpCiAgICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0
eUxheWVyUmVjdCA9IHRpbGVMYXllclJlY3QodGlsZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5yZXNlcnZlKG1fdGlsZVNpemUsIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPnJlc2Vy
dmUobV90aWxlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KTsKICAgICAgICAgICAgIGRpcnR5TGF5ZXJS
ZWN0LnVuaXRlKHRpbGUtPm1fZGlydHlMYXllclJlY3QpOwogICAgICAgICB9CiAgICAgfQpAQCAt
Mjk0LDcgKzI5Niw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjp1cGRhdGVSZWN0KCkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJl
KCktPmlzUmVzZXJ2ZWQoKSkgewotICAgICAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgp
LT5yZXNlcnZlKG1fdGlsZVNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkgeworICAgICAg
ICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5yZXNlcnZlKG1fdGlsZVNpemUsIG1fdGV4
dHVyZUZvcm1hdCkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICByZXNldCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC0zNDEsOCArMzQzLDMzIEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KGNvbnN0
IEludFIKICAgICBpZiAobV9za2lwc0RyYXcgfHwgIW1fdGlsZXMuc2l6ZSgpIHx8IGNvbnRlbnRS
ZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgc3dpdGNoIChtX3RleHR1cmVV
cGRhdGVyLT5zYW1wbGVkVGV4ZWxGb3JtYXQobV90ZXh0dXJlRm9ybWF0KSkgeworICAgIGNhc2Ug
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQToKKyAgICAgICAgZHJh
d1RpbGVzKGNvbnRlbnRSZWN0LCBnbG9iYWxUcmFuc2Zvcm0sIG9wYWNpdHksIGxheWVyUmVuZGVy
ZXIoKS0+dGlsZXJQcm9ncmFtUkdCQSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMYXll
clRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOgorICAgICAgICBkcmF3VGls
ZXMoY29udGVudFJlY3QsIGdsb2JhbFRyYW5zZm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJlcigp
LT50aWxlclByb2dyYW1CR1JBKCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgTGF5ZXJUaWxlckNo
cm9taXVtOjpncm93TGF5ZXJUb0NvbnRhaW4oY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCit7
CisgICAgLy8gR3JvdyB0aGUgdGlsZSBhcnJheSB0byBjb250YWluIHRoaXMgY29udGVudCByZWN0
LgorICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY29udGVudFJlY3RUb0xheWVyUmVjdChjb250ZW50
UmVjdCk7CisgICAgSW50U2l6ZSByZWN0U2l6ZSA9IEludFNpemUobGF5ZXJSZWN0Lm1heFgoKSwg
bGF5ZXJSZWN0Lm1heFkoKSk7CisKKyAgICBJbnRTaXplIG9sZExheWVyU2l6ZShtX3RpbGluZ0Rh
dGEudG90YWxTaXplWCgpLCBtX3RpbGluZ0RhdGEudG90YWxTaXplWSgpKTsKKyAgICBJbnRTaXpl
IG5ld1NpemUgPSByZWN0U2l6ZS5leHBhbmRlZFRvKG9sZExheWVyU2l6ZSk7CisgICAgbV90aWxp
bmdEYXRhLnNldFRvdGFsU2l6ZShuZXdTaXplLndpZHRoKCksIG5ld1NpemUuaGVpZ2h0KCkpOwor
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgUHJvZ3JhbT4KK3ZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpk
cmF3VGlsZXMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBnbG9iYWxUcmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIGNvbnN0IFByb2dyYW0qIHBy
b2dyYW0pCit7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVy
Q29udGV4dCgpOwotICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbSogcHJvZ3Jh
bSA9IGxheWVyUmVuZGVyZXIoKS0+dGlsZXJQcm9ncmFtKCk7CiAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2Nh
dGlvbigpLCAwKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CkBAIC0zODksMjIgKzQxNiwxMiBAQCB2b2lkIExh
eWVyVGlsZXJDaHJvbWl1bTo6ZHJhdyhjb25zdCBJbnRSCiAgICAgfQogfQogCi12b2lkIExheWVy
VGlsZXJDaHJvbWl1bTo6Z3Jvd0xheWVyVG9Db250YWluKGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0KQotewotICAgIC8vIEdyb3cgdGhlIHRpbGUgYXJyYXkgdG8gY29udGFpbiB0aGlzIGNvbnRl
bnQgcmVjdC4KLSAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNvbnRlbnRSZWN0VG9MYXllclJlY3Qo
Y29udGVudFJlY3QpOwotICAgIEludFNpemUgcmVjdFNpemUgPSBJbnRTaXplKGxheWVyUmVjdC5t
YXhYKCksIGxheWVyUmVjdC5tYXhZKCkpOwotCi0gICAgSW50U2l6ZSBvbGRMYXllclNpemUobV90
aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSwgbV90aWxpbmdEYXRhLnRvdGFsU2l6ZVkoKSk7Ci0gICAg
SW50U2l6ZSBuZXdTaXplID0gcmVjdFNpemUuZXhwYW5kZWRUbyhvbGRMYXllclNpemUpOwotICAg
IG1fdGlsaW5nRGF0YS5zZXRUb3RhbFNpemUobmV3U2l6ZS53aWR0aCgpLCBuZXdTaXplLmhlaWdo
dCgpKTsKLX0KLQordGVtcGxhdGUgPGNsYXNzIFByb2dyYW0+CiB2b2lkIExheWVyVGlsZXJDaHJv
bWl1bTo6ZHJhd1RleHR1cmVkUXVhZChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHByb2plY3Rpb25NYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBkcmF3TWF0cml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGV4VHJhbnNsYXRlWCwgZmxvYXQgdGV4
VHJhbnNsYXRlWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0
ZXhTY2FsZVgsIGZsb2F0IHRleFNjYWxlWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0qIHByb2dyYW0pCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0LCBmbG9hdCBvcGFjaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxvYXQgdGV4VHJhbnNsYXRlWCwgZmxvYXQgdGV4VHJhbnNsYXRlWSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWCwgZmxv
YXQgdGV4U2NhbGVZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUHJvZ3JhbSogcHJvZ3JhbSkKIHsKICAgICBzdGF0aWMgZmxvYXQgZ2xNYXRyaXhbMTZd
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRpbGVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAkocmV2aXNpb24gODkzNTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hy
b21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsMTAgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBza2lwc0RyYXcoKSBjb25zdCB7IHJldHVybiBtX3NraXBzRHJhdzsgfQogCi0gICAgdHlw
ZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50
U2hhZGVyVGV4QWxwaGE+IFByb2dyYW07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0
ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhPiBQcm9n
cmFtUkdCQTsKKyAgICAvLyBTaGFkZXIgcHJvZ3JhbSB0aGF0IHN3YXBzIHJlZCBhbmQgYmx1ZSBj
b21wb25lbnRzIG9mIHRleHR1cmUuCisgICAgLy8gVXNlZCB3aGVuIHRleHR1cmUgZm9ybWF0IGRv
ZXMgbm90IG1hdGNoIG5hdGl2ZSBjb2xvciBmb3JtYXQuCisgICAgdHlwZWRlZiBQcm9ncmFtQmlu
ZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVyQkdSQVRleEFs
cGhhPiBQcm9ncmFtQkdSQTsKIAogICAgIC8vIElmIHRoaXMgdGlsZXIgaGFzIGV4YWN0bHkgb25l
IHRpbGUsIHJldHVybiBpdHMgdGV4dHVyZS4gT3RoZXJ3aXNlLCBudWxsLgogICAgIExheWVyVGV4
dHVyZSogZ2V0U2luZ2xlVGV4dHVyZSgpOwpAQCAtMTAwLDExICsxMDMsMTYgQEAgcHJpdmF0ZToK
ICAgICAgICAgaW50IG1fajsKICAgICB9OwogCisgICAgLy8gRHJhdyBhbGwgdGlsZXMgdGhhdCBp
bnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgUHJvZ3JhbT4K
KyAgICB2b2lkIGRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBQcm9ncmFtKik7CisKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgUHJvZ3JhbT4KICAgICB2b2lkIGRyYXdUZXh0dXJlZFF1YWQoR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1h
dHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFRyYW5zbGF0ZVgsIGZsb2F0IHRl
eFRyYW5zbGF0ZVksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWCwg
ZmxvYXQgdGV4U2NhbGVZLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXllclRp
bGVyQ2hyb21pdW06OlByb2dyYW0qKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UHJvZ3JhbSopOwogCiAgICAgLy8gR3JvdyBsYXllciBzaXplIHRvIGNvbnRhaW4gdGhpcyByZWN0
YW5nbGUuCiAgICAgdm9pZCBncm93TGF5ZXJUb0NvbnRhaW4oY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QpOwpAQCAtMTIzLDYgKzEzMSw4IEBAIHByaXZhdGU6CiAgICAgSW50UmVjdCB0aWxlQ29u
dGVudFJlY3QoY29uc3QgVGlsZSopIGNvbnN0OwogICAgIEludFJlY3QgdGlsZUxheWVyUmVjdChj
b25zdCBUaWxlKikgY29uc3Q7CiAKKyAgICBHQzNEZW51bSBtX3RleHR1cmVGb3JtYXQ7CisKICAg
ICBJbnRTaXplIG1fdGlsZVNpemU7CiAgICAgSW50UG9pbnQgbV9sYXllclBvc2l0aW9uOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNv
bG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUGxhdGZvcm1Db2xvci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUNvbG9yX2gKKyNkZWZpbmUgUGxh
dGZvcm1Db2xvcl9oCisKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3Jt
Q29sb3IgeworcHVibGljOgorICAgIHN0YXRpYyBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRGF0
YUZvcm1hdCBmb3JtYXQoKQorICAgIHsKKyNpZiBVU0UoU0tJQSkKKyAgICAgICAgcmV0dXJuIFNL
X0IzMl9TSElGVCA/IEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JBOCA6IEdyYXBo
aWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JBODsKKyNlbGlmIFVTRShDRykKKyAgICAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JBODsKKyNlbmRpZgorICAg
IH0KKworICAgIC8vIFJldHVybnMgdGhlIG1vc3QgZWZmaWNpZW50IHRleHR1cmUgZm9ybWF0IGZv
ciB0aGlzIHBsYXRmb3JtLgorICAgIHN0YXRpYyBHQzNEZW51bSBiZXN0VGV4dHVyZUZvcm1hdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICB7CisgICAgICAgIEdDM0RlbnVtIHRleHR1
cmVGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKKyAgICAgICAgc3dpdGNoIChmb3Jt
YXQoKSkgeworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JB
ODoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpT
b3VyY2VGb3JtYXRCR1JBODoKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKSkKKyAgICAgICAg
ICAgICAgICB0ZXh0dXJlRm9ybWF0ID0gRXh0ZW5zaW9uczNEOjpCR1JBX0VYVDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGV4
dHVyZUZvcm1hdDsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGV4
dHVyZSBmb3JtYXQgaGFzIHRoZSBzYW1lIGNvbXBvbmVudCBvcmRlcgorICAgIC8vIGFzIHRoZSBj
b2xvciBvbiB0aGlzIHBsYXRmb3JtLgorICAgIHN0YXRpYyBib29sIHNhbWVDb21wb25lbnRPcmRl
cihHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChmb3JtYXQo
KSkgeworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JBODoK
KyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JBODoK
KyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0ID09IEV4dGVuc2lvbnMzRDo6QkdSQV9F
WFQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNvbG9yLmgKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1
bS5oCShyZXZpc2lvbiA4OTM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCwxMiArMTQw
LDYgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9hbHBoYUxvY2F0aW9uOwogfTsKIAotI2lmIFVTRShT
S0lBKSAmJiBTS19CMzJfU0hJRlQKLXR5cGVkZWYgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGEg
RnJhZ21lbnRTaGFkZXJUZXhBbHBoYTsKLSNlbHNlCi10eXBlZGVmIEZyYWdtZW50U2hhZGVyQkdS
QVRleEFscGhhIEZyYWdtZW50U2hhZGVyVGV4QWxwaGE7Ci0jZW5kaWYKLQogY2xhc3MgRnJhZ21l
bnRTaGFkZXJZVVZWaWRlbyB7CiBwdWJsaWM6CiAgICAgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbygp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98260</attachid>
            <date>2011-06-22 16:14:33 -0700</date>
            <delta_ts>2011-06-23 15:05:25 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>bgra.patch</filename>
            <type>text/plain</type>
            <size>30772</size>
            <attacher name="Alok Priyadarshi">alokp</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDg5NDMyKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00MTI3LDYgKzQxMjcsNyBAQAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01lZGlhUGxheWVyUHJpdmF0ZUNocm9t
aXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3Jt
Q2FudmFzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxh
dGZvcm1DYW52YXMuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UGxhdGZvcm1Db2xvci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9QbGF0Zm9ybUljb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGxhdGZvcm1JbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1BsYXRmb3JtSW1hZ2UuaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5jcHAJKHJldmlzaW9uIDg5NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NiArNDAsNyBAQAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZS5oIgogI2luY2x1ZGUgIkxheWVyVGV4
dHVyZVN1YkltYWdlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtQ29sb3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw2ICs1
NiwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkg
eyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQogCisg
ICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVt
IHRleHR1cmVGb3JtYXQpCisgICAgeworICAgICAgICByZXR1cm4gUGxhdGZvcm1Db2xvcjo6c2Ft
ZUNvbXBvbmVudE9yZGVyKHRleHR1cmVGb3JtYXQpID8KKyAgICAgICAgICAgICAgICBMYXllclRl
eHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKKyAgICB9CisKICAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0
aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscykKICAgICB7CiAgICAgICAgIG1fdGV4U3ViSW1hZ2Uu
c2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKQEAgLTczLDcgKzgwLDcgQEAgcHVibGljOgogICAg
ICAgICBjbGlwcGVkRGVzdFJlY3QubW92ZShjbGlwcGVkU291cmNlUmVjdC5sb2NhdGlvbigpIC0g
c291cmNlUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgY2xpcHBlZERlc3RSZWN0LnNldFNpemUo
Y2xpcHBlZFNvdXJjZVJlY3Quc2l6ZSgpKTsKIAotICAgICAgICBtX3RleFN1YkltYWdlLnVwbG9h
ZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBlZFNvdXJjZVJlY3QsIGNsaXBw
ZWREZXN0UmVjdCwgY29udGV4dCgpKTsKKyAgICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobV9p
bWFnZS5waXhlbHMoKSwgaW1hZ2VSZWN0KCksIGNsaXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVz
dFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KCkpOwogICAgIH0KIAogcHJpdmF0ZToK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAkocmV2aXNpb24gODk0
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMjAgKzExNSwzMyBAQCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFjY2VsZXJhdGVEcmF3aW5nKQogICAg
IDogbV92aWV3cG9ydFNjcm9sbFBvc2l0aW9uKEludFBvaW50KC0xLCAtMSkpCiAgICAgLCBtX3Jv
b3RMYXllcigwKQotICAgICwgbV9hY2NlbGVyYXRlRHJhd2luZyhhY2NlbGVyYXRlRHJhd2luZykK
KyAgICAsIG1fYWNjZWxlcmF0ZURyYXdpbmcoZmFsc2UpCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJT
dXJmYWNlKDApCiAgICAgLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQoMCkKICAgICAsIG1fY29t
cG9zaXRlT2Zmc2NyZWVuKGZhbHNlKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBt
X2NoaWxkQ29udGV4dHNXZXJlQ29waWVkKGZhbHNlKQogICAgICwgbV9jb250ZXh0U3VwcG9ydHNM
YXRjaChmYWxzZSkKKyAgICAsIG1fY29udGV4dFN1cHBvcnRzVGV4dHVyZUZvcm1hdEJHUkEoZmFs
c2UpCisgICAgLCBtX2NvbnRleHRTdXBwb3J0c1JlYWRGb3JtYXRCR1JBKGZhbHNlKQogICAgICwg
bV9hbmltYXRpbmcoZmFsc2UpCiAgICAgLCBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlKDApCiB7Ci0g
ICAgbV9jb250ZXh0U3VwcG9ydHNMYXRjaCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5z
dXBwb3J0cygiR0xfQ0hST01JVU1fbGF0Y2giKTsKLSAgICBtX2NvbnRleHRTdXBwb3J0c01hcFN1
YiA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fbWFw
X3N1YiIpOworICAgIFdlYkNvcmU6OkV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpOworICAgIG1fY29udGV4dFN1cHBvcnRzTGF0Y2ggPSBleHRlbnNp
b25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fbGF0Y2giKTsKKyAgICBtX2NvbnRleHRTdXBwb3J0
c01hcFN1YiA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9tYXBfc3ViIik7CiAg
ICAgaWYgKG1fY29udGV4dFN1cHBvcnRzTWFwU3ViKQotICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fbWFwX3N1YiIpOworICAgICAg
ICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9tYXBfc3ViIik7CisgICAg
bV9jb250ZXh0U3VwcG9ydHNUZXh0dXJlRm9ybWF0QkdSQSA9IGV4dGVuc2lvbnMtPnN1cHBvcnRz
KCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKTsKKyAgICBpZiAobV9jb250ZXh0U3Vw
cG9ydHNUZXh0dXJlRm9ybWF0QkdSQSkKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Iik7CisgICAgbV9jb250ZXh0U3VwcG9y
dHNSZWFkRm9ybWF0QkdSQSA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfcmVhZF9mb3Jt
YXRfYmdyYSIpOworICAgIGlmIChtX2NvbnRleHRTdXBwb3J0c1JlYWRGb3JtYXRCR1JBKQorICAg
ICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYSIp
OworCisjaWYgVVNFKFNLSUEpCisgICAgbV9hY2NlbGVyYXRlRHJhd2luZyA9IGFjY2VsZXJhdGVE
cmF3aW5nICYmIHNraWFDb250ZXh0KCk7CisjZW5kaWYKICAgICBtX2hhcmR3YXJlQ29tcG9zaXRp
bmcgPSBpbml0aWFsaXplU2hhcmVkT2JqZWN0cygpOwogCiAgICAgbV9yb290TGF5ZXJDb250ZW50
VGlsZXIgPSBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCBjcmVhdGVSb290TGF5ZXJU
ZXh0dXJlVXBkYXRlcihjb250ZW50UGFpbnQpLCBJbnRTaXplKDI1NiwgMjU2KSwgTGF5ZXJUaWxl
ckNocm9taXVtOjpOb0JvcmRlclRleGVscyk7CkBAIC0xNTEsMTEgKzE2NCw4IEBAIEdyYXBoaWNz
Q29udGV4dDNEKiBMYXllclJlbmRlcmVyQ2hyb21pdW0KICNpZiBVU0UoU0tJQSkKIEdyQ29udGV4
dCogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpza2lhQ29udGV4dCgpCiB7Ci0gICAgaWYgKCFtX3Nr
aWFDb250ZXh0KSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVF
bmFibGVkKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKTsKLSAgICAgICAgZXh0ZW5z
aW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEiKTsKLQorICAgIGlm
ICghbV9za2lhQ29udGV4dCAmJiBtX2NvbnRleHRTdXBwb3J0c1RleHR1cmVGb3JtYXRCR1JBICYm
IG1fY29udGV4dFN1cHBvcnRzUmVhZEZvcm1hdEJHUkEpIHsKKyAgICAgICAgbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICAgICAgbV9za2lhQ29udGV4dCA9IGFkb3B0UHRyKEdy
Q29udGV4dDo6Q3JlYXRlR0xTaGFkZXJDb250ZXh0KCkpOwogICAgICAgICAvLyBMaW1pdCB0aGUg
bnVtYmVyIG9mIHRleHR1cmVzIHdlIGhvbGQgaW4gdGhlIGJpdG1hcC0+dGV4dHVyZSBjYWNoZS4K
ICAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhUZXh0dXJlQ2FjaGVDb3VudCA9IDUxMjsKQEAg
LTExNDYsMTIgKzExNTYsMjMgQEAgY29uc3QgTGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtKiBM
YXllcgogewogICAgIEFTU0VSVChtX3RpbGVyUHJvZ3JhbSk7CiAgICAgaWYgKCFtX3RpbGVyUHJv
Z3JhbS0+aW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpib3JkZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAg
IFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbTo6aW5pdGlh
bGl6ZSIsIHRoaXMsIDApOwogICAgICAgICBtX3RpbGVyUHJvZ3JhbS0+aW5pdGlhbGl6ZSgpOwog
ICAgIH0KICAgICByZXR1cm4gbV90aWxlclByb2dyYW0uZ2V0KCk7CiB9CiAKK2NvbnN0IExheWVy
VGlsZXJDaHJvbWl1bTo6UHJvZ3JhbVN3aXp6bGUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGls
ZXJQcm9ncmFtU3dpenpsZSgpCit7CisgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbVN3aXp6bGUpCisg
ICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZSA9IGFkb3B0UHRyKG5ldyBMYXllclRpbGVyQ2hy
b21pdW06OlByb2dyYW1Td2l6emxlKG1fY29udGV4dC5nZXQoKSkpOworICAgIGlmICghbV90aWxl
clByb2dyYW1Td2l6emxlLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJM
YXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6bGU6OmluaXRpYWxpemUiLCB0
aGlzLCAwKTsKKyAgICAgICAgbV90aWxlclByb2dyYW1Td2l6emxlLT5pbml0aWFsaXplKCk7Cisg
ICAgfQorICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGUuZ2V0KCk7Cit9CisKIGNvbnN0
IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNhbnZh
c0xheWVyUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX2NhbnZhc0xheWVyUHJvZ3JhbSkKQEAgLTEy
MTEsNiArMTIzMiw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmUK
ICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmNsZWFyKCk7CiAgICAgbV9yZW5kZXJTdXJmYWNl
TWFza1Byb2dyYW0uY2xlYXIoKTsKICAgICBtX3RpbGVyUHJvZ3JhbS5jbGVhcigpOworICAgIG1f
dGlsZXJQcm9ncmFtU3dpenpsZS5jbGVhcigpOwogICAgIGlmIChtX29mZnNjcmVlbkZyYW1lYnVm
ZmVySWQpCiAgICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlRnJh
bWVidWZmZXIobV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA4OTQzMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjksNiArMTI5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFJlbmRlclN1
cmZhY2VDaHJvbWl1bTo6UHJvZ3JhbSogcmVuZGVyU3VyZmFjZVByb2dyYW0oKTsKICAgICBjb25z
dCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06Ok1hc2tQcm9ncmFtKiByZW5kZXJTdXJmYWNlTWFza1By
b2dyYW0oKTsKICAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0qIHRpbGVyUHJv
Z3JhbSgpOworICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbVN3aXp6bGUqIHRp
bGVyUHJvZ3JhbVN3aXp6bGUoKTsKICAgICBjb25zdCBDQ0NhbnZhc0xheWVySW1wbDo6UHJvZ3Jh
bSogY2FudmFzTGF5ZXJQcm9ncmFtKCk7CiAgICAgY29uc3QgQ0NQbHVnaW5MYXllckltcGw6OlBy
b2dyYW0qIHBsdWdpbkxheWVyUHJvZ3JhbSgpOwogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6
OlJHQkFQcm9ncmFtKiB2aWRlb0xheWVyUkdCQVByb2dyYW0oKTsKQEAgLTIyNCw2ICsyMjUsNyBA
QCBwcml2YXRlOgogICAgIE93blB0cjxSZW5kZXJTdXJmYWNlQ2hyb21pdW06OlByb2dyYW0+IG1f
cmVuZGVyU3VyZmFjZVByb2dyYW07CiAgICAgT3duUHRyPFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6
TWFza1Byb2dyYW0+IG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtOwogICAgIE93blB0cjxMYXll
clRpbGVyQ2hyb21pdW06OlByb2dyYW0+IG1fdGlsZXJQcm9ncmFtOworICAgIE93blB0cjxMYXll
clRpbGVyQ2hyb21pdW06OlByb2dyYW1Td2l6emxlPiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGU7CiAg
ICAgT3duUHRyPENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtPiBtX2NhbnZhc0xheWVyUHJvZ3Jh
bTsKICAgICBPd25QdHI8Q0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0+IG1fdmlkZW9MYXll
clJHQkFQcm9ncmFtOwogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpZVVZQcm9ncmFtPiBt
X3ZpZGVvTGF5ZXJZVVZQcm9ncmFtOwpAQCAtMjQ3LDYgKzI0OSw4IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIG1fY29udGV4dFN1cHBvcnRzTGF0Y2g7CiAgICAgYm9vbCBtX2NvbnRleHRTdXBwb3J0
c01hcFN1YjsKKyAgICBib29sIG1fY29udGV4dFN1cHBvcnRzVGV4dHVyZUZvcm1hdEJHUkE7Cisg
ICAgYm9vbCBtX2NvbnRleHRTdXBwb3J0c1JlYWRGb3JtYXRCR1JBOwogCiAgICAgYm9vbCBtX2Fu
aW1hdGluZzsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUZXh0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmgJKHJldmlzaW9uIDg5NDMyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIH0KICAgICB+TGF5ZXJU
ZXh0dXJlKCk7CiAKKyAgICB1bnNpZ25lZCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1h
dDsgfQogICAgIGJvb2wgaXNWYWxpZChjb25zdCBJbnRTaXplJiwgdW5zaWduZWQgZm9ybWF0KTsK
ICAgICBib29sIHJlc2VydmUoY29uc3QgSW50U2l6ZSYsIHVuc2lnbmVkIGZvcm1hdCk7CiAgICAg
Ym9vbCBpc1Jlc2VydmVkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5j
cHAJKHJldmlzaW9uIDg5NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwx
NyArNTUsMTcgQEAgdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6c2V0U3ViSW1hZ2VTaQogCiB2
b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWQoY29uc3QgdWludDhfdCogaW1hZ2UsIGNv
bnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewogICAgIGlmIChtX3VzZU1hcFRleFN1YkltYWdl
KQotICAgICAgICB1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgc291
cmNlUmVjdCwgZGVzdFJlY3QsIGNvbnRleHQpOworICAgICAgICB1cGxvYWRXaXRoTWFwVGV4U3Vi
SW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGZvcm1hdCwgY29u
dGV4dCk7CiAgICAgZWxzZQotICAgICAgICB1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoaW1hZ2UsIGlt
YWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGNvbnRleHQpOworICAgICAgICB1cGxvYWRX
aXRoVGV4U3ViSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGZv
cm1hdCwgY29udGV4dCk7CiB9CiAKIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdp
dGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VS
ZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAg
ICAgVFJBQ0VfRVZFTlQoIkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1h
Z2UiLCB0aGlzLCAwKTsKICAgICBpZiAoIW1fc3ViSW1hZ2UpCkBAIC04NywxMiArODcsMTIgQEAg
dm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleAogCiAgICAgICAgIHBpeGVs
U291cmNlID0gJm1fc3ViSW1hZ2VbMF07CiAgICAgfQotICAgIGNvbnRleHQtPnRleFN1YkltYWdl
MkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVzdFJl
Y3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBwaXhlbFNvdXJj
ZSk7CisgICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRl
c3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRF
LCBwaXhlbFNvdXJjZSk7CiB9CiAKIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdp
dGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1h
Z2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRX
aXRoTWFwVGV4U3ViSW1hZ2UiLCB0aGlzLCAwKTsKICAgICAvLyBPZmZzZXQgZnJvbSBpbWFnZS1y
ZWN0IHRvIHNvdXJjZS1yZWN0LgpAQCAtMTAwLDEwICsxMDAsMTAgQEAgdm9pZCBMYXllclRleHR1
cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcAogCiAgICAgLy8gVXBsb2FkIHRpbGUgZGF0YSB2aWEg
YSBtYXBwZWQgdHJhbnNmZXIgYnVmZmVyCiAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVu
c2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKSk7Ci0gICAgdWludDhfdCogcGl4ZWxEZXN0ID0gc3RhdGljX2Nhc3Q8dWludDhf
dCo+KGV4dGVuc2lvbnMtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0Lndp
ZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9P
TkxZKSk7CisgICAgdWludDhfdCogcGl4ZWxEZXN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGV4
dGVuc2lvbnMtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCks
IGRlc3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOwogCiAgICAgaWYgKCFwaXhl
bERlc3QpIHsKLSAgICAgICAgdXBsb2FkV2l0aFRleFN1YkltYWdlKGltYWdlLCBpbWFnZVJlY3Qs
IHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBjb250ZXh0KTsKKyAgICAgICAgdXBsb2FkV2l0aFRleFN1
YkltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNv
bnRleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4
dHVyZVN1YkltYWdlLmgJKHJldmlzaW9uIDg5NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
CisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2lu
Y2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KQEAgLTQ1LDE1
ICs0NiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdWJJbWFnZVNpemUoY29uc3QgSW50U2l6
ZSYpOwogICAgIHZvaWQgdXBsb2FkKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0
JiBpbWFnZVJlY3QsCiAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0
M0QqKTsKKyAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNE
Kik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoY29uc3QgdWlu
dDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQz
RCopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR3Jh
cGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lkIHVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25z
dCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBo
aWNzQ29udGV4dDNEKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVu
dW0gZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRCopOwogCiAgICAgYm9vbCBtX3VzZU1hcFRleFN1
YkltYWdlOwogICAgIEludFNpemUgbV9zdWJJbWFnZVNpemU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCShyZXZpc2lvbiA4OTQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksOCBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
CisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CkBAIC00NSw4ICs0NywxNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEJvdHRvbVVwT3JpZW50YXRpb24sCiAgICAgICAgIFRvcERvd25PcmllbnRhdGlvbgogICAg
IH07CisgICAgZW51bSBTYW1wbGVkVGV4ZWxGb3JtYXQgeworICAgICAgICBTYW1wbGVkVGV4ZWxG
b3JtYXRSR0JBLAorICAgICAgICBTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBCisgICAgfTsKICAgICAv
LyBSZXR1cm5zIHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgdGV4dHVyZSB1cGxvYWRlZCBieSB0aGlz
IGludGVyZmFjZS4KICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgPSAwOwor
ICAgIC8vIFJldHVybnMgdGhlIGZvcm1hdCBvZiB0aGUgdGV4ZWwgdXBsb2FkZWQgYnkgdGhpcyBp
bnRlcmZhY2UuCisgICAgLy8gVGhpcyBmb3JtYXQgc2hvdWxkIG5vdCBiZSBjb25mdXNlZCBieSB0
ZXh0dXJlIGludGVybmFsIGZvcm1hdC4KKyAgICAvLyBUaGlzIGZvcm1hdCBzcGVjaWZpZXMgdGhl
IGNvbXBvbmVudCBvcmRlciBpbiB0aGUgc2FtcGxlZCB0ZXhlbC4KKyAgICAvLyBJZiB0aGUgZm9y
bWF0IGlzIFRleGVsRm9ybWF0QkdSQSwgdmVjNC54IGlzIGJsdWUgYW5kIHZlYzQueiBpcyByZWQu
CisgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0Rl
bnVtIHRleHR1cmVGb3JtYXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50
IGJvcmRlclRleGVscykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChM
YXllclRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCkgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVy
Q2FudmFzLmNwcAkocmV2aXNpb24gODk0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAog
I2lmIFVTRShTS0lBKQpAQCAtNjgsNiArNjksMTMgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1h
cDo6TGF5ZXJUZXh0dXJlVQogewogfQogCitMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4
ZWxGb3JtYXQgTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6c2FtcGxlZFRleGVsRm9ybWF0KEdD
M0RlbnVtIHRleHR1cmVGb3JtYXQpCit7CisgICAgLy8gVGhlIGNvbXBvbmVudCBvcmRlciBtYXkg
YmUgYmdyYSBpZiB3ZSB1cGxvYWRlZCBiZ3JhIHBpeGVscyB0byByZ2JhIHRleHR1cmVzLgorICAg
IHJldHVybiBQbGF0Zm9ybUNvbG9yOjpzYW1lQ29tcG9uZW50T3JkZXIodGV4dHVyZUZvcm1hdCkg
PworICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdC
QSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7Cit9CisKIHZv
aWQgTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVs
cykKIHsKICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CkBAIC04
Nyw3ICs5NSw3IEBAIHZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6dXBkYXRlVGUKICAg
ICBQbGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJm1fY2FudmFzKTsKIAogICAgIHRl
eHR1cmUtPmJpbmRUZXh0dXJlKCk7Ci0gICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobG9ja2VyLnBp
eGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgY29udGV4dCgpKTsK
KyAgICBtX3RleFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCks
IHNvdXJjZVJlY3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCgpKTsKIH0K
IAogI2lmIFVTRShTS0lBKQpAQCAtMTA1LDYgKzExMywxMiBAQCBMYXllclRleHR1cmVVcGRhdGVy
U2tQaWN0dXJlOjp+TGF5ZXJUZXh0CiAgICAgZGVsZXRlRnJhbWVCdWZmZXIoKTsKIH0KIAorTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IExheWVyVGV4dHVyZVVwZGF0ZXJT
a1BpY3R1cmU6OnNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KQorewor
ICAgIC8vIEhlcmUgd2UgZGlyZWN0bHkgcmVuZGVyIHRvIHRoZSB0ZXh0dXJlLCBzbyB0aGUgY29t
cG9uZW50IG9yZGVyIGlzIGFsd2F5cyBjb3JyZWN0LgorICAgIHJldHVybiBMYXllclRleHR1cmVV
cGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOworfQorCiB2b2lkIExheWVyVGV4dHVyZVVw
ZGF0ZXJTa1BpY3R1cmU6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpCiB7CiAgICAgLy8g
TmVlZCB0byByZWNyZWF0ZSBGQk8gaWYgdGlsZS1zaXplIGNoYW5nZWQuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2Fu
dmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oCShyZXZpc2lvbiA4OTQzMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXJDYW52YXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcCgpIHsgfQogCiAgICAgdmlydHVhbCBP
cmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OkJv
dHRvbVVwT3JpZW50YXRpb247IH0KKyAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1w
bGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7CiAgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6
ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVU
ZXh0dXJlUmVjdChMYXllclRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKQEAgLTg1LDYgKzg2LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfkxheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmUoKTsKIAogICAgIHZpcnR1YWwgT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpUb3BE
b3duT3JpZW50YXRpb247IH0KKyAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVk
VGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7CiAgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYg
dGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0
dXJlUmVjdChMYXllclRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNw
cAkocmV2aXNpb24gODk0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtQ29sb3IuaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CkBAIC01MSw3ICs1Miw4IEBAIFBhc3NPd25QdHI8TGF5ZXJUaWxlckNocm9taXVt
PiBMYXllclRpbGUKIH0KIAogTGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21pdW0o
TGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBQYXNzT3duUHRyPExheWVyVGV4
dHVyZVVwZGF0ZXI+IHRleHR1cmVVcGRhdGVyLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9y
ZGVyVGV4ZWxPcHRpb24gYm9yZGVyKQotICAgIDogbV9za2lwc0RyYXcoZmFsc2UpCisgICAgOiBt
X3RleHR1cmVGb3JtYXQoUGxhdGZvcm1Db2xvcjo6YmVzdFRleHR1cmVGb3JtYXQobGF5ZXJSZW5k
ZXJlci0+Y29udGV4dCgpKSkKKyAgICAsIG1fc2tpcHNEcmF3KGZhbHNlKQogICAgICwgbV90aWxp
bmdEYXRhKG1heCh0aWxlU2l6ZS53aWR0aCgpLCB0aWxlU2l6ZS5oZWlnaHQoKSksIDAsIDAsIGJv
cmRlciA9PSBIYXNCb3JkZXJUZXhlbHMpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVV
cGRhdGVyKQogICAgICwgbV9sYXllclJlbmRlcmVyKGxheWVyUmVuZGVyZXIpCkBAIC0yNDUsMTAg
KzI0NywxMCBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlCiAgICAg
ICAgICAgICBUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwogICAgICAgICAgICAgaWYgKCF0aWxl
KQogICAgICAgICAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwotICAgICAgICAgICAg
aWYgKCF0aWxlLT50ZXh0dXJlKCktPmlzVmFsaWQobV90aWxlU2l6ZSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEpKQorICAgICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCktPmlzVmFsaWQobV90
aWxlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSkKICAgICAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5
TGF5ZXJSZWN0ID0gdGlsZUxheWVyUmVjdCh0aWxlKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPnJlc2VydmUobV90aWxlU2l6ZSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEpOworICAgICAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cmVzZXJ2
ZShtX3RpbGVTaXplLCBtX3RleHR1cmVGb3JtYXQpOwogICAgICAgICAgICAgZGlydHlMYXllclJl
Y3QudW5pdGUodGlsZS0+bV9kaXJ0eUxheWVyUmVjdCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0y
OTQsNyArMjk2LDcgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZVJlY3QoKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAoIXRpbGUtPnRleHR1cmUo
KS0+aXNSZXNlcnZlZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCkt
PnJlc2VydmUobV90aWxlU2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCktPnJlc2VydmUobV90aWxlU2l6ZSwgbV90ZXh0
dXJlRm9ybWF0KSkgewogICAgICAgICAgICAgICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgICAgIHJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTM0MSw4ICszNDMsMzMgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXcoY29uc3Qg
SW50UgogICAgIGlmIChtX3NraXBzRHJhdyB8fCAhbV90aWxlcy5zaXplKCkgfHwgY29udGVudFJl
Y3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBzd2l0Y2ggKG1fdGV4dHVyZVVw
ZGF0ZXItPnNhbXBsZWRUZXhlbEZvcm1hdChtX3RleHR1cmVGb3JtYXQpKSB7CisgICAgY2FzZSBM
YXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOgorICAgICAgICBkcmF3
VGlsZXMoY29udGVudFJlY3QsIGdsb2JhbFRyYW5zZm9ybSwgb3BhY2l0eSwgbGF5ZXJSZW5kZXJl
cigpLT50aWxlclByb2dyYW0oKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQToKKyAgICAgICAgZHJhd1RpbGVzKGNv
bnRlbnRSZWN0LCBnbG9iYWxUcmFuc2Zvcm0sIG9wYWNpdHksIGxheWVyUmVuZGVyZXIoKS0+dGls
ZXJQcm9ncmFtU3dpenpsZSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIExheWVyVGlsZXJDaHJv
bWl1bTo6Z3Jvd0xheWVyVG9Db250YWluKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQorewor
ICAgIC8vIEdyb3cgdGhlIHRpbGUgYXJyYXkgdG8gY29udGFpbiB0aGlzIGNvbnRlbnQgcmVjdC4K
KyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNvbnRlbnRSZWN0VG9MYXllclJlY3QoY29udGVudFJl
Y3QpOworICAgIEludFNpemUgcmVjdFNpemUgPSBJbnRTaXplKGxheWVyUmVjdC5tYXhYKCksIGxh
eWVyUmVjdC5tYXhZKCkpOworCisgICAgSW50U2l6ZSBvbGRMYXllclNpemUobV90aWxpbmdEYXRh
LnRvdGFsU2l6ZVgoKSwgbV90aWxpbmdEYXRhLnRvdGFsU2l6ZVkoKSk7CisgICAgSW50U2l6ZSBu
ZXdTaXplID0gcmVjdFNpemUuZXhwYW5kZWRUbyhvbGRMYXllclNpemUpOworICAgIG1fdGlsaW5n
RGF0YS5zZXRUb3RhbFNpemUobmV3U2l6ZS53aWR0aCgpLCBuZXdTaXplLmhlaWdodCgpKTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIFQ+Cit2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhd1RpbGVz
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
Z2xvYmFsVHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBUKiBwcm9ncmFtKQorewogICAg
IEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKLSAg
ICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0qIHByb2dyYW0gPSBsYXllclJlbmRl
cmVyKCktPnRpbGVyUHJvZ3JhbSgpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9n
cmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlm
b3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwog
ICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFMCkpOwpAQCAtMzg5LDIyICs0MTYsMTIgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21p
dW06OmRyYXcoY29uc3QgSW50UgogICAgIH0KIH0KIAotdm9pZCBMYXllclRpbGVyQ2hyb21pdW06
Omdyb3dMYXllclRvQ29udGFpbihjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKLXsKLSAgICAv
LyBHcm93IHRoZSB0aWxlIGFycmF5IHRvIGNvbnRhaW4gdGhpcyBjb250ZW50IHJlY3QuCi0gICAg
SW50UmVjdCBsYXllclJlY3QgPSBjb250ZW50UmVjdFRvTGF5ZXJSZWN0KGNvbnRlbnRSZWN0KTsK
LSAgICBJbnRTaXplIHJlY3RTaXplID0gSW50U2l6ZShsYXllclJlY3QubWF4WCgpLCBsYXllclJl
Y3QubWF4WSgpKTsKLQotICAgIEludFNpemUgb2xkTGF5ZXJTaXplKG1fdGlsaW5nRGF0YS50b3Rh
bFNpemVYKCksIG1fdGlsaW5nRGF0YS50b3RhbFNpemVZKCkpOwotICAgIEludFNpemUgbmV3U2l6
ZSA9IHJlY3RTaXplLmV4cGFuZGVkVG8ob2xkTGF5ZXJTaXplKTsKLSAgICBtX3RpbGluZ0RhdGEu
c2V0VG90YWxTaXplKG5ld1NpemUud2lkdGgoKSwgbmV3U2l6ZS5oZWlnaHQoKSk7Ci19Ci0KK3Rl
bXBsYXRlIDxjbGFzcyBUPgogdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1
YWQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBwcm9qZWN0aW9uTWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJp
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0LCBmbG9hdCBvcGFjaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IHRleFRyYW5zbGF0ZVgsIGZsb2F0IHRleFRyYW5zbGF0ZVksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGV4U2NhbGVYLCBmbG9hdCB0ZXhT
Y2FsZVksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5ZXJU
aWxlckNocm9taXVtOjpQcm9ncmFtKiBwcm9ncmFtKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRleFRy
YW5zbGF0ZVgsIGZsb2F0IHRleFRyYW5zbGF0ZVksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhTY2FsZVgsIGZsb2F0IHRleFNjYWxlWSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQqIHByb2dyYW0pCiB7
CiAgICAgc3RhdGljIGZsb2F0IGdsTWF0cml4WzE2XTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxl
ckNocm9taXVtLmgJKHJldmlzaW9uIDg5NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDcgKzcwLDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2tpcHNEcmF3KCkgY29uc3QgeyBy
ZXR1cm4gbV9za2lwc0RyYXc7IH0KIAotICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4
U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRlclRleEFscGhhPiBQcm9ncmFtOwor
ICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBG
cmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gUHJvZ3JhbTsKKyAgICAvLyBTaGFkZXIgcHJvZ3Jh
bSB0aGF0IHN3YXBzIHJlZCBhbmQgYmx1ZSBjb21wb25lbnRzIG9mIHRleHR1cmUuCisgICAgLy8g
VXNlZCB3aGVuIHRleHR1cmUgZm9ybWF0IGRvZXMgbm90IG1hdGNoIG5hdGl2ZSBjb2xvciBmb3Jt
YXQuCisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zv
cm0sIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3aXp6bGVBbHBoYT4gUHJvZ3JhbVN3aXp6bGU7CiAK
ICAgICAvLyBJZiB0aGlzIHRpbGVyIGhhcyBleGFjdGx5IG9uZSB0aWxlLCByZXR1cm4gaXRzIHRl
eHR1cmUuIE90aGVyd2lzZSwgbnVsbC4KICAgICBMYXllclRleHR1cmUqIGdldFNpbmdsZVRleHR1
cmUoKTsKQEAgLTEwMCwxMSArMTAzLDE2IEBAIHByaXZhdGU6CiAgICAgICAgIGludCBtX2o7CiAg
ICAgfTsKIAorICAgIC8vIERyYXcgYWxsIHRpbGVzIHRoYXQgaW50ZXJzZWN0IHdpdGggY29udGVu
dFJlY3QuCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgICAgdm9pZCBkcmF3VGlsZXMoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQg
b3BhY2l0eSwgY29uc3QgVCogcHJvZ3JhbSk7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KICAg
ICB2b2lkIGRyYXdUZXh0dXJlZFF1YWQoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGRyYXdNYXRyaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHRleFRyYW5zbGF0ZVgsIGZsb2F0IHRleFRyYW5zbGF0ZVksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IHRleFNjYWxlWCwgZmxvYXQgdGV4U2NhbGVZLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0qKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCogcHJvZ3JhbSk7CiAKICAgICAvLyBHcm93IGxh
eWVyIHNpemUgdG8gY29udGFpbiB0aGlzIHJlY3RhbmdsZS4KICAgICB2b2lkIGdyb3dMYXllclRv
Q29udGFpbihjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CkBAIC0xMjMsNiArMTMxLDggQEAg
cHJpdmF0ZToKICAgICBJbnRSZWN0IHRpbGVDb250ZW50UmVjdChjb25zdCBUaWxlKikgY29uc3Q7
CiAgICAgSW50UmVjdCB0aWxlTGF5ZXJSZWN0KGNvbnN0IFRpbGUqKSBjb25zdDsKIAorICAgIEdD
M0RlbnVtIG1fdGV4dHVyZUZvcm1hdDsKKwogICAgIEludFNpemUgbV90aWxlU2l6ZTsKICAgICBJ
bnRQb2ludCBtX2xheWVyUG9zaXRpb247CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNvbG9yLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0
Zm9ybUNvbG9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFBsYXRmb3JtQ29sb3JfaAorI2RlZmluZSBQbGF0Zm9ybUNvbG9yX2gKKworI2luY2x1ZGUgIkV4
dGVuc2lvbnMzRC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisKKyNpZiBVU0Uo
U0tJQSkKKyNpbmNsdWRlICJTa1R5cGVzLmgiIAorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgUGxhdGZvcm1Db2xvciB7CitwdWJsaWM6CisgICAgc3RhdGljIEdyYXBoaWNz
Q29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0IGZvcm1hdCgpCisgICAgeworI2lmIFVTRShTS0lB
KQorICAgICAgICByZXR1cm4gU0tfQjMyX1NISUZUID8gR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJj
ZUZvcm1hdFJHQkE4IDogR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEJHUkE4OworI2Vs
aWYgVVNFKENHKQorICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1h
dEJHUkE4OworI2VuZGlmCisgICAgfQorCisgICAgLy8gUmV0dXJucyB0aGUgbW9zdCBlZmZpY2ll
bnQgdGV4dHVyZSBmb3JtYXQgZm9yIHRoaXMgcGxhdGZvcm0uCisgICAgc3RhdGljIEdDM0RlbnVt
IGJlc3RUZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwor
ICAgICAgICBzd2l0Y2ggKGZvcm1hdCgpKSB7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlNvdXJjZUZvcm1hdFJHQkE4OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEJHUkE4OgorICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9C
R1JBODg4OCIpKQorICAgICAgICAgICAgICAgIHRleHR1cmVGb3JtYXQgPSBFeHRlbnNpb25zM0Q6
OkJHUkFfRVhUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgIH0KKworICAgIC8vIFJldHVybiB0
cnVlIGlmIHRoZSBnaXZlbiB0ZXh0dXJlIGZvcm1hdCBoYXMgdGhlIHNhbWUgY29tcG9uZW50IG9y
ZGVyCisgICAgLy8gYXMgdGhlIGNvbG9yIG9uIHRoaXMgcGxhdGZvcm0uCisgICAgc3RhdGljIGJv
b2wgc2FtZUNvbXBvbmVudE9yZGVyKEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpCisgICAgeworICAg
ICAgICBzd2l0Y2ggKGZvcm1hdCgpKSB7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlNvdXJjZUZvcm1hdFJHQkE4OgorICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQgPT0g
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlNvdXJjZUZvcm1hdEJHUkE4OgorICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQgPT0g
RXh0ZW5zaW9uczNEOjpCR1JBX0VYVDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKClByb3BlcnR5
IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Bs
YXRmb3JtQ29sb3IuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJv
bWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA4OTQzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk0LDcgKzE5NCw3IEBAIFN0cmluZyBGcmFnbWVudFNoYWRlclJHQkFU
ZXhBbHBoYTo6Z2V0U2gKICAgICApOwogfQogCi1TdHJpbmcgRnJhZ21lbnRTaGFkZXJCR1JBVGV4
QWxwaGE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CitTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JB
VGV4U3dpenpsZUFscGhhOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBT
SEFERVIoCiAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJD
aHJvbWl1bS5oCShyZXZpc2lvbiA4OTQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3
ICsxMTksOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0Owog
fTsKIAotY2xhc3MgRnJhZ21lbnRTaGFkZXJCR1JBVGV4QWxwaGEgOiBwdWJsaWMgRnJhZ21lbnRU
ZXhBbHBoYUJpbmRpbmcgeworLy8gU3dpenpsZXMgdGhlIHJlZCBhbmQgYmx1ZSBjb21wb25lbnQg
b2Ygc2FtcGxlZCB0ZXhlbC4KK2NsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3aXp6bGVBbHBo
YSA6IHB1YmxpYyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7CiBwdWJsaWM6CiAgICAgU3RyaW5n
IGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogfTsKQEAgLTE0MCwxMiArMTQxLDYgQEAgcHJpdmF0
ZToKICAgICBpbnQgbV9hbHBoYUxvY2F0aW9uOwogfTsKIAotI2lmIFVTRShTS0lBKSAmJiBTS19C
MzJfU0hJRlQKLXR5cGVkZWYgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGEgRnJhZ21lbnRTaGFk
ZXJUZXhBbHBoYTsKLSNlbHNlCi10eXBlZGVmIEZyYWdtZW50U2hhZGVyQkdSQVRleEFscGhhIEZy
YWdtZW50U2hhZGVyVGV4QWxwaGE7Ci0jZW5kaWYKLQogY2xhc3MgRnJhZ21lbnRTaGFkZXJZVVZW
aWRlbyB7CiBwdWJsaWM6CiAgICAgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbygpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxh
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaAkocmV2aXNpb24gODk0MzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIGJvb2wgZW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlIHx8IG1fc2hvd0ZQU0NvdW50
ZXI7IH0KICAgICB2b2lkIGRyYXcoKTsKIAotICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVy
dGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlckJHUkFUZXhBbHBoYT4gUHJvZ3JhbTsKKyAg
ICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFk
ZXJSR0JBVGV4U3dpenpsZUFscGhhPiBQcm9ncmFtOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IENDSGVhZHNVcERpc3BsYXkoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBvd25lcik7Cg==
</data>
<flag name="review"
          id="92427"
          type_id="1"
          status="+"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="92610"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98414</attachid>
            <date>2011-06-23 15:05:25 -0700</date>
            <delta_ts>2011-06-23 16:47:52 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>bgra.patch</filename>
            <type>text/plain</type>
            <size>34853</size>
            <attacher name="Alok Priyadarshi">alokp</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NjIwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMDYtMjMgIEFsb2sgUHJp
eWFkYXJzaGkgIDxhbG9rcEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBSZWQgYW5kIEJsdWUgY2hhbm5lbHMg
YXJlIHN3YXBwZWQgaW4gaW1hZ2VzIHdpdGggYWNjZWxlcmF0ZWQgZHJhd2luZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE0NDIKKworICAgICAgICBX
ZSB3ZXJlIHVwbG9hZGluZyBCR1JBIHBpeGVscyBpbnRvIFJHQkEgdGV4dHVyZXMgYW5kIHN3YXBw
aW5nIHRoZSBjb21wb25lbnRzIGluIHRoZSBwaXhlbCBzaGFkZXIuCisgICAgICAgIFRoaXMgc3Ry
YXRlZ3kgZG9lcyBub3Qgd29yayB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcgYmVjYXVzZSB3ZSBh
cmUgZGlyZWN0bHkgcmVuZGVyaW5nIHRvIHRoZSB0ZXh0dXJlLCBub3QgdXBsb2FkaW5nIHBpeGVs
cy4KKyAgICAgICAgVGhpcyBwYXRjaCB1c2VzIEJHUkEgdGV4dHVyZXMgaWYgYXZhaWxhYmxlLiBJ
ZiBub3QgaXQgZmFsbHMgYmFjayB0byB0aGUgb3JpZ2luYWwgc2NoZW1lIG9mIHN3YXBwaW5nIHRo
ZSBjb21wb25lbnRzIGluIHRoZSBwaXhlbCBzaGFkZXIuIAorCisgICAgICAgIFRlc3RzOiBjb21w
b3NpdGluZy9jb2xvci1tYXRjaGluZy9pbWFnZS1jb2xvci1tYXRjaGluZy5odG1sIChleGlzdGlu
ZykKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkVGV4ZWxGb3JtYXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2tp
YUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxl
clByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxl
clByb2dyYW1Td2l6emxlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0
dXJlOjpmb3JtYXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGV4dHVyZVN1YkltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVN1Yklt
YWdlOjp1cGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVw
bG9hZFdpdGhUZXhTdWJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJ
bWFnZTo6dXBsb2FkV2l0aE1hcFRleFN1YkltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnNhbXBsZWRUZXhlbEZv
cm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyQml0bWFwOjp1cGRh
dGVUZXh0dXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyU2tQ
aWN0dXJlOjpzYW1wbGVkVGV4ZWxGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0
dXJlVXBkYXRlclNrUGljdHVyZTo6Y3JlYXRlRnJhbWVCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21pdW0p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjp1cGRhdGVSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXJDaHJvbWl1bTo6ZHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclRpbGVyQ2hyb21pdW06Omdyb3dMYXllclRvQ29udGFpbik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUaWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ29sb3IuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yOjpmb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1Db2xvcjo6YmVzdFRleHR1cmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1Db2xvcjo6c2FtZUNvbXBvbmVudE9yZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVu
dFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGE6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5Lmg6CisKIDIwMTEt
MDYtMjMgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2
aXNpb24gODk0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29w
eSkKQEAgLTQxMjcsNiArNDEyNyw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTWVkaWFQbGF5ZXJQcml2YXRlQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1DYW52YXMuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNhbnZhcy5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNvbG9yLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtSWNvbi5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUltYWdlLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1JbWFnZS5oJywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5
ZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAkocmV2aXNpb24gODk0MzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKICNpbmNsdWRl
ICJMYXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1LDYgKzU2LDEyIEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRh
dGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAKKyAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZv
cm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBQbGF0Zm9ybUNvbG9yOjpzYW1lQ29tcG9uZW50T3JkZXIodGV4dHVyZUZv
cm1hdCkgPworICAgICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhl
bEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JB
OworICAgIH0KKwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxz
KQogICAgIHsKICAgICAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUp
OwpAQCAtNzMsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsaXBwZWREZXN0UmVjdC5tb3Zl
KGNsaXBwZWRTb3VyY2VSZWN0LmxvY2F0aW9uKCkgLSBzb3VyY2VSZWN0LmxvY2F0aW9uKCkpOwog
ICAgICAgICBjbGlwcGVkRGVzdFJlY3Quc2V0U2l6ZShjbGlwcGVkU291cmNlUmVjdC5zaXplKCkp
OwogCi0gICAgICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKG1faW1hZ2UucGl4ZWxzKCksIGltYWdl
UmVjdCgpLCBjbGlwcGVkU291cmNlUmVjdCwgY2xpcHBlZERlc3RSZWN0LCBjb250ZXh0KCkpOwor
ICAgICAgICBtX3RleFN1YkltYWdlLnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3Qo
KSwgY2xpcHBlZFNvdXJjZVJlY3QsIGNsaXBwZWREZXN0UmVjdCwgdGV4dHVyZS0+Zm9ybWF0KCks
IGNvbnRleHQoKSk7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA4OTQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNSwyMCArMTE1LDMzIEBAIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5
ZXJSZW5kZXJlckNocm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgYWNjZWxlcmF0ZURyYXdpbmcpCiAgICAgOiBtX3ZpZXdwb3J0U2Nyb2xsUG9zaXRp
b24oSW50UG9pbnQoLTEsIC0xKSkKICAgICAsIG1fcm9vdExheWVyKDApCi0gICAgLCBtX2FjY2Vs
ZXJhdGVEcmF3aW5nKGFjY2VsZXJhdGVEcmF3aW5nKQorICAgICwgbV9hY2NlbGVyYXRlRHJhd2lu
ZyhmYWxzZSkKICAgICAsIG1fY3VycmVudFJlbmRlclN1cmZhY2UoMCkKICAgICAsIG1fb2Zmc2Ny
ZWVuRnJhbWVidWZmZXJJZCgwKQogICAgICwgbV9jb21wb3NpdGVPZmZzY3JlZW4oZmFsc2UpCiAg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fY2hpbGRDb250ZXh0c1dlcmVDb3BpZWQo
ZmFsc2UpCiAgICAgLCBtX2NvbnRleHRTdXBwb3J0c0xhdGNoKGZhbHNlKQorICAgICwgbV9jb250
ZXh0U3VwcG9ydHNUZXh0dXJlRm9ybWF0QkdSQShmYWxzZSkKKyAgICAsIG1fY29udGV4dFN1cHBv
cnRzUmVhZEZvcm1hdEJHUkEoZmFsc2UpCiAgICAgLCBtX2FuaW1hdGluZyhmYWxzZSkKICAgICAs
IG1fZGVmYXVsdFJlbmRlclN1cmZhY2UoMCkKIHsKLSAgICBtX2NvbnRleHRTdXBwb3J0c0xhdGNo
ID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9sYXRj
aCIpOwotICAgIG1fY29udGV4dFN1cHBvcnRzTWFwU3ViID0gbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9tYXBfc3ViIik7CisgICAgV2ViQ29yZTo6RXh0
ZW5zaW9uczNEKiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7CisgICAg
bV9jb250ZXh0U3VwcG9ydHNMYXRjaCA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlV
TV9sYXRjaCIpOworICAgIG1fY29udGV4dFN1cHBvcnRzTWFwU3ViID0gZXh0ZW5zaW9ucy0+c3Vw
cG9ydHMoIkdMX0NIUk9NSVVNX21hcF9zdWIiKTsKICAgICBpZiAobV9jb250ZXh0U3VwcG9ydHNN
YXBTdWIpCi0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVk
KCJHTF9DSFJPTUlVTV9tYXBfc3ViIik7CisgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJs
ZWQoIkdMX0NIUk9NSVVNX21hcF9zdWIiKTsKKyAgICBtX2NvbnRleHRTdXBwb3J0c1RleHR1cmVG
b3JtYXRCR1JBID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9C
R1JBODg4OCIpOworICAgIGlmIChtX2NvbnRleHRTdXBwb3J0c1RleHR1cmVGb3JtYXRCR1JBKQor
ICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRf
QkdSQTg4ODgiKTsKKyAgICBtX2NvbnRleHRTdXBwb3J0c1JlYWRGb3JtYXRCR1JBID0gZXh0ZW5z
aW9ucy0+c3VwcG9ydHMoIkdMX0VYVF9yZWFkX2Zvcm1hdF9iZ3JhIik7CisgICAgaWYgKG1fY29u
dGV4dFN1cHBvcnRzUmVhZEZvcm1hdEJHUkEpCisgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVu
YWJsZWQoIkdMX0VYVF9yZWFkX2Zvcm1hdF9iZ3JhIik7CisKKyNpZiBVU0UoU0tJQSkKKyAgICBt
X2FjY2VsZXJhdGVEcmF3aW5nID0gYWNjZWxlcmF0ZURyYXdpbmcgJiYgc2tpYUNvbnRleHQoKTsK
KyNlbmRpZgogICAgIG1faGFyZHdhcmVDb21wb3NpdGluZyA9IGluaXRpYWxpemVTaGFyZWRPYmpl
Y3RzKCk7CiAKICAgICBtX3Jvb3RMYXllckNvbnRlbnRUaWxlciA9IExheWVyVGlsZXJDaHJvbWl1
bTo6Y3JlYXRlKHRoaXMsIGNyZWF0ZVJvb3RMYXllclRleHR1cmVVcGRhdGVyKGNvbnRlbnRQYWlu
dCksIEludFNpemUoMjU2LCAyNTYpLCBMYXllclRpbGVyQ2hyb21pdW06Ok5vQm9yZGVyVGV4ZWxz
KTsKQEAgLTE1MSwxMSArMTY0LDggQEAgR3JhcGhpY3NDb250ZXh0M0QqIExheWVyUmVuZGVyZXJD
aHJvbWl1bQogI2lmIFVTRShTS0lBKQogR3JDb250ZXh0KiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnNraWFDb250ZXh0KCkKIHsKLSAgICBpZiAoIW1fc2tpYUNvbnRleHQpIHsKLSAgICAgICAgV2Vi
Q29yZTo6RXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCk7Ci0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2Zv
cm1hdF9CR1JBODg4OCIpOwotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9F
WFRfcmVhZF9mb3JtYXRfYmdyYSIpOwotCisgICAgaWYgKCFtX3NraWFDb250ZXh0ICYmIG1fY29u
dGV4dFN1cHBvcnRzVGV4dHVyZUZvcm1hdEJHUkEgJiYgbV9jb250ZXh0U3VwcG9ydHNSZWFkRm9y
bWF0QkdSQSkgeworICAgICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAg
ICAgICBtX3NraWFDb250ZXh0ID0gYWRvcHRQdHIoR3JDb250ZXh0OjpDcmVhdGVHTFNoYWRlckNv
bnRleHQoKSk7CiAgICAgICAgIC8vIExpbWl0IHRoZSBudW1iZXIgb2YgdGV4dHVyZXMgd2UgaG9s
ZCBpbiB0aGUgYml0bWFwLT50ZXh0dXJlIGNhY2hlLgogICAgICAgICBzdGF0aWMgY29uc3QgaW50
IG1heFRleHR1cmVDYWNoZUNvdW50ID0gNTEyOwpAQCAtMTE0NiwxMiArMTE1NiwyMyBAQCBjb25z
dCBMYXllclRpbGVyQ2hyb21pdW06OlByb2dyYW0qIExheWVyCiB7CiAgICAgQVNTRVJUKG1fdGls
ZXJQcm9ncmFtKTsKICAgICBpZiAoIW1fdGlsZXJQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0g
ICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OmJvcmRlclByb2dyYW06
OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtOjppbml0aWFsaXplIiwgdGhpcywgMCk7CiAgICAgICAg
IG1fdGlsZXJQcm9ncmFtLT5pbml0aWFsaXplKCk7CiAgICAgfQogICAgIHJldHVybiBtX3RpbGVy
UHJvZ3JhbS5nZXQoKTsKIH0KIAorY29uc3QgTGF5ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtU3dp
enpsZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2l6emxlKCkKK3sKKyAg
ICBpZiAoIW1fdGlsZXJQcm9ncmFtU3dpenpsZSkKKyAgICAgICAgbV90aWxlclByb2dyYW1Td2l6
emxlID0gYWRvcHRQdHIobmV3IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbVN3aXp6bGUobV9j
b250ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbVN3aXp6bGUtPmluaXRpYWxp
emVkKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGls
ZXJQcm9ncmFtU3dpenpsZTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBtX3RpbGVy
UHJvZ3JhbVN3aXp6bGUtPmluaXRpYWxpemUoKTsKKyAgICB9CisgICAgcmV0dXJuIG1fdGlsZXJQ
cm9ncmFtU3dpenpsZS5nZXQoKTsKK30KKwogY29uc3QgQ0NDYW52YXNMYXllckltcGw6OlByb2dy
YW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2FudmFzTGF5ZXJQcm9ncmFtKCkKIHsKICAgICBp
ZiAoIW1fY2FudmFzTGF5ZXJQcm9ncmFtKQpAQCAtMTIxMSw2ICsxMjMyLDcgQEAgdm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZQogICAgIG1fcmVuZGVyU3VyZmFjZVByb2dy
YW0uY2xlYXIoKTsKICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbS5jbGVhcigpOwogICAg
IG1fdGlsZXJQcm9ncmFtLmNsZWFyKCk7CisgICAgbV90aWxlclByb2dyYW1Td2l6emxlLmNsZWFy
KCk7CiAgICAgaWYgKG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkKICAgICAgICAgR0xDKG1fY29u
dGV4dC5nZXQoKSwgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX29mZnNjcmVlbkZyYW1l
YnVmZmVySWQpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgJKHJl
dmlzaW9uIDg5NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw2ICsxMjks
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpQcm9ncmFtKiBy
ZW5kZXJTdXJmYWNlUHJvZ3JhbSgpOwogICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bTo6
TWFza1Byb2dyYW0qIHJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbSgpOwogICAgIGNvbnN0IExheWVy
VGlsZXJDaHJvbWl1bTo6UHJvZ3JhbSogdGlsZXJQcm9ncmFtKCk7CisgICAgY29uc3QgTGF5ZXJU
aWxlckNocm9taXVtOjpQcm9ncmFtU3dpenpsZSogdGlsZXJQcm9ncmFtU3dpenpsZSgpOwogICAg
IGNvbnN0IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtKiBjYW52YXNMYXllclByb2dyYW0oKTsK
ICAgICBjb25zdCBDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbSogcGx1Z2luTGF5ZXJQcm9ncmFt
KCk7CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJS
R0JBUHJvZ3JhbSgpOwpAQCAtMjI0LDYgKzIyNSw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJl
bmRlclN1cmZhY2VDaHJvbWl1bTo6UHJvZ3JhbT4gbV9yZW5kZXJTdXJmYWNlUHJvZ3JhbTsKICAg
ICBPd25QdHI8UmVuZGVyU3VyZmFjZUNocm9taXVtOjpNYXNrUHJvZ3JhbT4gbV9yZW5kZXJTdXJm
YWNlTWFza1Byb2dyYW07CiAgICAgT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbT4g
bV90aWxlclByb2dyYW07CisgICAgT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbVN3
aXp6bGU+IG1fdGlsZXJQcm9ncmFtU3dpenpsZTsKICAgICBPd25QdHI8Q0NDYW52YXNMYXllcklt
cGw6OlByb2dyYW0+IG1fY2FudmFzTGF5ZXJQcm9ncmFtOwogICAgIE93blB0cjxDQ1ZpZGVvTGF5
ZXJJbXBsOjpSR0JBUHJvZ3JhbT4gbV92aWRlb0xheWVyUkdCQVByb2dyYW07CiAgICAgT3duUHRy
PENDVmlkZW9MYXllckltcGw6OllVVlByb2dyYW0+IG1fdmlkZW9MYXllcllVVlByb2dyYW07CkBA
IC0yNDcsNiArMjQ5LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9jb250ZXh0U3VwcG9ydHNM
YXRjaDsKICAgICBib29sIG1fY29udGV4dFN1cHBvcnRzTWFwU3ViOworICAgIGJvb2wgbV9jb250
ZXh0U3VwcG9ydHNUZXh0dXJlRm9ybWF0QkdSQTsKKyAgICBib29sIG1fY29udGV4dFN1cHBvcnRz
UmVhZEZvcm1hdEJHUkE7CiAKICAgICBib29sIG1fYW5pbWF0aW5nOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmUuaAkocmV2aXNpb24gODk0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcs
NyBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5MYXllclRleHR1cmUoKTsKIAorICAgIHVuc2lnbmVk
IGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAgICAgYm9vbCBpc1ZhbGlkKGNv
bnN0IEludFNpemUmLCB1bnNpZ25lZCBmb3JtYXQpOwogICAgIGJvb2wgcmVzZXJ2ZShjb25zdCBJ
bnRTaXplJiwgdW5zaWduZWQgZm9ybWF0KTsKICAgICBib29sIGlzUmVzZXJ2ZWQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3Vi
SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcAkocmV2aXNpb24gODk0MzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJ
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE3ICs1NSwxNyBAQCB2b2lkIExheWVyVGV4
dHVyZVN1YkltYWdlOjpzZXRTdWJJbWFnZVNpCiAKIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6
OnVwbG9hZChjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQp
CiB7CiAgICAgaWYgKG1fdXNlTWFwVGV4U3ViSW1hZ2UpCi0gICAgICAgIHVwbG9hZFdpdGhNYXBU
ZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgY29udGV4
dCk7CisgICAgICAgIHVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBz
b3VyY2VSZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKICAgICBlbHNlCi0gICAgICAg
IHVwbG9hZFdpdGhUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCwgY29udGV4dCk7CisgICAgICAgIHVwbG9hZFdpdGhUZXhTdWJJbWFnZShpbWFnZSwgaW1h
Z2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKIH0KIAogdm9p
ZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4
X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJUZXh0
dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZSIsIHRoaXMsIDApOwogICAgIGlmICgh
bV9zdWJJbWFnZSkKQEAgLTg3LDEyICs4NywxMiBAQCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdl
Ojp1cGxvYWRXaXRoVGV4CiAKICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmbV9zdWJJbWFnZVswXTsK
ICAgICB9Ci0gICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCks
IGRlc3RSZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIHBpeGVsU291cmNlKTsKKyAgICBjb250ZXh0LT50ZXhTdWJJ
bWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRl
c3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIGZvcm1hdCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIHBpeGVsU291cmNlKTsKIH0KIAogdm9p
ZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRleFN1YkltYWdlKGNvbnN0IHVp
bnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVu
dW0gZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBUUkFDRV9FVkVO
VCgiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSIsIHRoaXMs
IDApOwogICAgIC8vIE9mZnNldCBmcm9tIGltYWdlLXJlY3QgdG8gc291cmNlLXJlY3QuCkBAIC0x
MDAsMTAgKzEwMCwxMCBAQCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFw
CiAKICAgICAvLyBVcGxvYWQgdGlsZSBkYXRhIHZpYSBhIG1hcHBlZCB0cmFuc2ZlciBidWZmZXIK
ICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVu
c2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKLSAgICB1aW50OF90
KiBwaXhlbERlc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3Vi
SW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVj
dC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCks
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllU
RSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKKyAgICB1aW50OF90KiBwaXhl
bERlc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2Uy
RENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCks
IGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIGZvcm1h
dCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVt
OjpXUklURV9PTkxZKSk7CiAKICAgICBpZiAoIXBpeGVsRGVzdCkgewotICAgICAgICB1cGxvYWRX
aXRoVGV4U3ViSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGNv
bnRleHQpOworICAgICAgICB1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwg
c291cmNlUmVjdCwgZGVzdFJlY3QsIGZvcm1hdCwgY29udGV4dCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVN1YkltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaAkocmV2aXNpb24g
ODk0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVTdWJJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVz
M0QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1
ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgpAQCAtNDUsMTUgKzQ2LDE1IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFN1YkltYWdlU2l6ZShjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCB1cGxvYWQoY29u
c3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAg
ICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwK
LSAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRCopOworICAgICAgICAgICAgICAgIEdD
M0RlbnVtIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0QqKTsKIAogcHJpdmF0ZToKICAgICB2b2lk
IHVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVj
dCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZv
aWQgdXBsb2FkV2l0aE1hcFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJ
bnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdyYXBoaWNzQ29udGV4
dDNEKik7CiAKICAgICBib29sIG1fdXNlTWFwVGV4U3ViSW1hZ2U7CiAgICAgSW50U2l6ZSBtX3N1
YkltYWdlU2l6ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgJKHJldmlzaW9u
IDg5NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVz
M0QuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsK
QEAgLTQ1LDggKzQ3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgQm90dG9tVXBPcmllbnRhdGlvbiwK
ICAgICAgICAgVG9wRG93bk9yaWVudGF0aW9uCiAgICAgfTsKKyAgICBlbnVtIFNhbXBsZWRUZXhl
bEZvcm1hdCB7CisgICAgICAgIFNhbXBsZWRUZXhlbEZvcm1hdFJHQkEsCisgICAgICAgIFNhbXBs
ZWRUZXhlbEZvcm1hdEJHUkEKKyAgICB9OwogICAgIC8vIFJldHVybnMgdGhlIG9yaWVudGF0aW9u
IG9mIHRoZSB0ZXh0dXJlIHVwbG9hZGVkIGJ5IHRoaXMgaW50ZXJmYWNlLgogICAgIHZpcnR1YWwg
T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSA9IDA7CisgICAgLy8gUmV0dXJucyB0aGUgZm9ybWF0
IG9mIHRoZSB0ZXhlbCB1cGxvYWRlZCBieSB0aGlzIGludGVyZmFjZS4KKyAgICAvLyBUaGlzIGZv
cm1hdCBzaG91bGQgbm90IGJlIGNvbmZ1c2VkIGJ5IHRleHR1cmUgaW50ZXJuYWwgZm9ybWF0Lgor
ICAgIC8vIFRoaXMgZm9ybWF0IHNwZWNpZmllcyB0aGUgY29tcG9uZW50IG9yZGVyIGluIHRoZSBz
YW1wbGVkIHRleGVsLgorICAgIC8vIElmIHRoZSBmb3JtYXQgaXMgVGV4ZWxGb3JtYXRCR1JBLCB2
ZWM0LnggaXMgYmx1ZSBhbmQgdmVjNC56IGlzIHJlZC4KKyAgICB2aXJ0dWFsIFNhbXBsZWRUZXhl
bEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KExheWVyVGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXJDYW52YXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwCShyZXZpc2lvbiA4OTQz
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4
dHVyZVVwZGF0ZXJDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21p
dW0uaCIKICNpbmNsdWRlICJMYXllclRleHR1cmUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbG9y
LmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogCiAjaWYgVVNFKFNLSUEpCkBAIC02OCw2ICs2
OSwxMyBAQCBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwOjpMYXllclRleHR1cmVVCiB7CiB9CiAK
K0xheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBMYXllclRleHR1cmVVcGRh
dGVyQml0bWFwOjpzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkKK3sK
KyAgICAvLyBUaGUgY29tcG9uZW50IG9yZGVyIG1heSBiZSBiZ3JhIGlmIHdlIHVwbG9hZGVkIGJn
cmEgcGl4ZWxzIHRvIHJnYmEgdGV4dHVyZXMuCisgICAgcmV0dXJuIFBsYXRmb3JtQ29sb3I6OnNh
bWVDb21wb25lbnRPcmRlcih0ZXh0dXJlRm9ybWF0KSA/CisgICAgICAgICAgICBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKK30KKwogdm9pZCBMYXllclRleHR1cmVVcGRhdGVyQml0
bWFwOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IElu
dFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKQogewogICAgIG1fdGV4U3ViSW1hZ2Uu
c2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKQEAgLTg3LDcgKzk1LDcgQEAgdm9pZCBMYXllclRl
eHR1cmVVcGRhdGVyQml0bWFwOjp1cGRhdGVUZQogICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9j
a2VyIGxvY2tlcigmbV9jYW52YXMpOwogCiAgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoKTsKLSAg
ICBtX3RleFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNv
dXJjZVJlY3QsIGRlc3RSZWN0LCBjb250ZXh0KCkpOworICAgIG1fdGV4U3ViSW1hZ2UudXBsb2Fk
KGxvY2tlci5waXhlbHMoKSwgY29udGVudFJlY3QoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QsIHRl
eHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KCkpOwogfQogCiAjaWYgVVNFKFNLSUEpCkBAIC0xMDUs
NiArMTEzLDEyIEBAIExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6On5MYXllclRleHQKICAg
ICBkZWxldGVGcmFtZUJ1ZmZlcigpOwogfQogCitMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVk
VGV4ZWxGb3JtYXQgTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6c2FtcGxlZFRleGVsRm9y
bWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpCit7CisgICAgLy8gSGVyZSB3ZSBkaXJlY3RseSBy
ZW5kZXIgdG8gdGhlIHRleHR1cmUsIHNvIHRoZSBjb21wb25lbnQgb3JkZXIgaXMgYWx3YXlzIGNv
cnJlY3QuCisgICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1h
dFJHQkE7Cit9CisKIHZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6cHJlcGFyZVRv
VXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwgaW50IGJvcmRlclRleGVscykKIHsKICAgICAvLyBOZWVkIHRvIHJlY3JlYXRlIEZCTyBpZiB0
aWxlLXNpemUgY2hhbmdlZC4KQEAgLTE3NCwxMiArMTg4LDYgQEAgYm9vbCBMYXllclRleHR1cmVV
cGRhdGVyU2tQaWN0dXJlOjpjcmVhdAogICAgIEFTU0VSVCghbV9mYm8pOwogICAgIEFTU0VSVCgh
bV9idWZmZXJTaXplLmlzRW1wdHkoKSk7CiAKLSAgICAvLyBTS0lBIG5lZWRzIHN0ZW5jaWwgYnVm
ZmVyIGZvciBwYXRoIHJlbmRlcmluZy4KLSAgICAvLyBNYWtlIHN1cmUgaXQgaXMgYXZhaWxhYmxl
LgotICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGNvbnRleHRBdHRyaWJzID0gY29u
dGV4dCgpLT5nZXRDb250ZXh0QXR0cmlidXRlcygpOwotICAgIGlmICghY29udGV4dEF0dHJpYnMu
c3RlbmNpbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgLy8gU0tJQSBvbmx5IG5lZWRz
IGNvbG9yIGFuZCBzdGVuY2lsIGJ1ZmZlcnMsIG5vdCBkZXB0aCBidWZmZXIuCiAgICAgLy8gQnV0
IGl0IGlzIHZlcnkgdW5jb21tb24gZm9yIGNhcmRzIHRvIHN1cHBvcnQgY29sb3IgKyBzdGVuY2ls
IEZCTyBjb25maWcuCiAgICAgLy8gVGhlIG1vc3QgY29tbW9uIGNvbmZpZyBpcyBjb2xvciArIHBh
Y2tlZC1kZXB0aC1zdGVuY2lsLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXJDYW52YXMuaAkocmV2aXNpb24gODk0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkxheWVyVGV4dHVyZVVw
ZGF0ZXJCaXRtYXAoKSB7IH0KIAogICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24o
KSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9Cisg
ICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVt
IHRleHR1cmVGb3JtYXQpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVy
VGV4ZWxzKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoTGF5ZXJUZXh0dXJl
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwog
CkBAIC04NSw2ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MYXllclRleHR1cmVVcGRh
dGVyU2tQaWN0dXJlKCk7CiAKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkg
eyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VG9wRG93bk9yaWVudGF0aW9uOyB9CisgICAg
dmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRl
eHR1cmVGb3JtYXQpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4
ZWxzKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoTGF5ZXJUZXh0dXJlKiwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVy
Q2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDg5NDMyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9t
aXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkxheWVy
UmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZS5oIgogI2luY2x1ZGUg
IkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5j
bHVkZSAiVHJhY2VFdmVudC5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNTEsNyArNTIs
OCBAQCBQYXNzT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bT4gTGF5ZXJUaWxlCiB9CiAKIExheWVy
VGlsZXJDaHJvbWl1bTo6TGF5ZXJUaWxlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bSog
bGF5ZXJSZW5kZXJlciwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiB0ZXh0dXJlVXBk
YXRlciwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9uIGJvcmRlcikK
LSAgICA6IG1fc2tpcHNEcmF3KGZhbHNlKQorICAgIDogbV90ZXh0dXJlRm9ybWF0KFBsYXRmb3Jt
Q29sb3I6OmJlc3RUZXh0dXJlRm9ybWF0KGxheWVyUmVuZGVyZXItPmNvbnRleHQoKSkpCisgICAg
LCBtX3NraXBzRHJhdyhmYWxzZSkKICAgICAsIG1fdGlsaW5nRGF0YShtYXgodGlsZVNpemUud2lk
dGgoKSwgdGlsZVNpemUuaGVpZ2h0KCkpLCAwLCAwLCBib3JkZXIgPT0gSGFzQm9yZGVyVGV4ZWxz
KQogICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKICAgICAsIG1fbGF5ZXJS
ZW5kZXJlcihsYXllclJlbmRlcmVyKQpAQCAtMjQ1LDEwICsyNDcsMTAgQEAgdm9pZCBMYXllclRp
bGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZQogICAgICAgICAgICAgVGlsZSogdGlsZSA9IHRp
bGVBdChpLCBqKTsKICAgICAgICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAgICAgICB0aWxl
ID0gY3JlYXRlVGlsZShpLCBqKTsKLSAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5p
c1ZhbGlkKG1fdGlsZVNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkKKyAgICAgICAgICAg
IGlmICghdGlsZS0+dGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZVNpemUsIG1fdGV4dHVyZUZvcm1h
dCkpCiAgICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eUxheWVyUmVjdCA9IHRpbGVMYXllclJl
Y3QodGlsZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGlsZS0+dGV4dHVy
ZSgpLT5yZXNlcnZlKG1fdGlsZVNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAg
ICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPnJlc2VydmUobV90aWxlU2l6ZSwgbV90ZXh0dXJl
Rm9ybWF0KTsKICAgICAgICAgICAgIGRpcnR5TGF5ZXJSZWN0LnVuaXRlKHRpbGUtPm1fZGlydHlM
YXllclJlY3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjk0LDcgKzI5Niw3IEBAIHZvaWQgTGF5
ZXJUaWxlckNocm9taXVtOjp1cGRhdGVSZWN0KCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICAgICAgaWYgKCF0aWxlLT50ZXh0dXJlKCktPmlzUmVzZXJ2ZWQoKSkgewotICAg
ICAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5yZXNlcnZlKG1fdGlsZVNpemUsIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBKSkgeworICAgICAgICAgICAgICAgIGlmICghdGlsZS0+dGV4
dHVyZSgpLT5yZXNlcnZlKG1fdGlsZVNpemUsIG1fdGV4dHVyZUZvcm1hdCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICByZXNl
dCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zNDEsOCArMzQzLDMzIEBAIHZv
aWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KGNvbnN0IEludFIKICAgICBpZiAobV9za2lwc0Ry
YXcgfHwgIW1fdGlsZXMuc2l6ZSgpIHx8IGNvbnRlbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgc3dpdGNoIChtX3RleHR1cmVVcGRhdGVyLT5zYW1wbGVkVGV4ZWxGb3Jt
YXQobV90ZXh0dXJlRm9ybWF0KSkgeworICAgIGNhc2UgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2Ft
cGxlZFRleGVsRm9ybWF0UkdCQToKKyAgICAgICAgZHJhd1RpbGVzKGNvbnRlbnRSZWN0LCBnbG9i
YWxUcmFuc2Zvcm0sIG9wYWNpdHksIGxheWVyUmVuZGVyZXIoKS0+dGlsZXJQcm9ncmFtKCkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhl
bEZvcm1hdEJHUkE6CisgICAgICAgIGRyYXdUaWxlcyhjb250ZW50UmVjdCwgZ2xvYmFsVHJhbnNm
b3JtLCBvcGFjaXR5LCBsYXllclJlbmRlcmVyKCktPnRpbGVyUHJvZ3JhbVN3aXp6bGUoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KK30KKwordm9pZCBMYXllclRpbGVyQ2hyb21pdW06Omdyb3dMYXllclRvQ29udGFp
bihjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKK3sKKyAgICAvLyBHcm93IHRoZSB0aWxlIGFy
cmF5IHRvIGNvbnRhaW4gdGhpcyBjb250ZW50IHJlY3QuCisgICAgSW50UmVjdCBsYXllclJlY3Qg
PSBjb250ZW50UmVjdFRvTGF5ZXJSZWN0KGNvbnRlbnRSZWN0KTsKKyAgICBJbnRTaXplIHJlY3RT
aXplID0gSW50U2l6ZShsYXllclJlY3QubWF4WCgpLCBsYXllclJlY3QubWF4WSgpKTsKKworICAg
IEludFNpemUgb2xkTGF5ZXJTaXplKG1fdGlsaW5nRGF0YS50b3RhbFNpemVYKCksIG1fdGlsaW5n
RGF0YS50b3RhbFNpemVZKCkpOworICAgIEludFNpemUgbmV3U2l6ZSA9IHJlY3RTaXplLmV4cGFu
ZGVkVG8ob2xkTGF5ZXJTaXplKTsKKyAgICBtX3RpbGluZ0RhdGEuc2V0VG90YWxTaXplKG5ld1Np
emUud2lkdGgoKSwgbmV3U2l6ZS5oZWlnaHQoKSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPgor
dm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXdUaWxlcyhjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGdsb2JhbFRyYW5zZm9ybSwgZmxvYXQg
b3BhY2l0eSwgY29uc3QgVCogcHJvZ3JhbSkKK3sKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7Ci0gICAgY29uc3QgTGF5ZXJUaWxlckNocm9t
aXVtOjpQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlcigpLT50aWxlclByb2dyYW0oKTsK
ICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkp
KTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50
U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKQEAgLTM4OSwy
MiArNDE2LDEyIEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KGNvbnN0IEludFIKICAg
ICB9CiB9CiAKLXZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpncm93TGF5ZXJUb0NvbnRhaW4oY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QpCi17Ci0gICAgLy8gR3JvdyB0aGUgdGlsZSBhcnJheSB0
byBjb250YWluIHRoaXMgY29udGVudCByZWN0LgotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY29u
dGVudFJlY3RUb0xheWVyUmVjdChjb250ZW50UmVjdCk7Ci0gICAgSW50U2l6ZSByZWN0U2l6ZSA9
IEludFNpemUobGF5ZXJSZWN0Lm1heFgoKSwgbGF5ZXJSZWN0Lm1heFkoKSk7Ci0KLSAgICBJbnRT
aXplIG9sZExheWVyU2l6ZShtX3RpbGluZ0RhdGEudG90YWxTaXplWCgpLCBtX3RpbGluZ0RhdGEu
dG90YWxTaXplWSgpKTsKLSAgICBJbnRTaXplIG5ld1NpemUgPSByZWN0U2l6ZS5leHBhbmRlZFRv
KG9sZExheWVyU2l6ZSk7Ci0gICAgbV90aWxpbmdEYXRhLnNldFRvdGFsU2l6ZShuZXdTaXplLndp
ZHRoKCksIG5ld1NpemUuaGVpZ2h0KCkpOwotfQotCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KIHZvaWQg
TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhUcmFuc2xh
dGVYLCBmbG9hdCB0ZXhUcmFuc2xhdGVZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IHRleFNjYWxlWCwgZmxvYXQgdGV4U2NhbGVZLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExheWVyVGlsZXJDaHJvbWl1bTo6UHJvZ3JhbSog
cHJvZ3JhbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhUcmFuc2xhdGVYLCBmbG9hdCB0ZXhUcmFu
c2xhdGVZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
dGV4U2NhbGVYLCBmbG9hdCB0ZXhTY2FsZVksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUKiBwcm9ncmFtKQogewogICAgIHN0YXRpYyBmbG9hdCBnbE1h
dHJpeFsxNl07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA4
OTQzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGlsZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCwxMCBAQCBwdWJsaWM6
CiAKICAgICBib29sIHNraXBzRHJhdygpIGNvbnN0IHsgcmV0dXJuIG1fc2tpcHNEcmF3OyB9CiAK
LSAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwg
RnJhZ21lbnRTaGFkZXJUZXhBbHBoYT4gUHJvZ3JhbTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5k
aW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxw
aGE+IFByb2dyYW07CisgICAgLy8gU2hhZGVyIHByb2dyYW0gdGhhdCBzd2FwcyByZWQgYW5kIGJs
dWUgY29tcG9uZW50cyBvZiB0ZXh0dXJlLgorICAgIC8vIFVzZWQgd2hlbiB0ZXh0dXJlIGZvcm1h
dCBkb2VzIG5vdCBtYXRjaCBuYXRpdmUgY29sb3IgZm9ybWF0LgorICAgIHR5cGVkZWYgUHJvZ3Jh
bUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRlclJHQkFU
ZXhTd2l6emxlQWxwaGE+IFByb2dyYW1Td2l6emxlOwogCiAgICAgLy8gSWYgdGhpcyB0aWxlciBo
YXMgZXhhY3RseSBvbmUgdGlsZSwgcmV0dXJuIGl0cyB0ZXh0dXJlLiBPdGhlcndpc2UsIG51bGwu
CiAgICAgTGF5ZXJUZXh0dXJlKiBnZXRTaW5nbGVUZXh0dXJlKCk7CkBAIC0xMDAsMTEgKzEwMywx
NiBAQCBwcml2YXRlOgogICAgICAgICBpbnQgbV9qOwogICAgIH07CiAKKyAgICAvLyBEcmF3IGFs
bCB0aWxlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0LgorICAgIHRlbXBsYXRlIDxj
bGFzcyBUPgorICAgIHZvaWQgZHJhd1RpbGVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IFQqIHByb2dy
YW0pOworCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CiAgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFk
KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHByb2plY3Rp
b25NYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFj
aXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhUcmFuc2xhdGVYLCBmbG9h
dCB0ZXhUcmFuc2xhdGVZLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ZXhTY2Fs
ZVgsIGZsb2F0IHRleFNjYWxlWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5
ZXJUaWxlckNocm9taXVtOjpQcm9ncmFtKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQqIHByb2dyYW0pOwogCiAgICAgLy8gR3JvdyBsYXllciBzaXplIHRvIGNvbnRhaW4gdGhp
cyByZWN0YW5nbGUuCiAgICAgdm9pZCBncm93TGF5ZXJUb0NvbnRhaW4oY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QpOwpAQCAtMTIzLDYgKzEzMSw4IEBAIHByaXZhdGU6CiAgICAgSW50UmVjdCB0
aWxlQ29udGVudFJlY3QoY29uc3QgVGlsZSopIGNvbnN0OwogICAgIEludFJlY3QgdGlsZUxheWVy
UmVjdChjb25zdCBUaWxlKikgY29uc3Q7CiAKKyAgICBHQzNEZW51bSBtX3RleHR1cmVGb3JtYXQ7
CisKICAgICBJbnRTaXplIG1fdGlsZVNpemU7CiAgICAgSW50UG9pbnQgbV9sYXllclBvc2l0aW9u
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0
Zm9ybUNvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUNvbG9yX2gKKyNkZWZp
bmUgUGxhdGZvcm1Db2xvcl9oCisKKyNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgorCisjaWYgVVNFKFNLSUEpCisjaW5jbHVkZSAiU2tUeXBl
cy5oIiAKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtQ29s
b3IgeworcHVibGljOgorICAgIHN0YXRpYyBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRGF0YUZv
cm1hdCBmb3JtYXQoKQorICAgIHsKKyNpZiBVU0UoU0tJQSkKKyAgICAgICAgcmV0dXJuIFNLX0Iz
Ml9TSElGVCA/IEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JBOCA6IEdyYXBoaWNz
Q29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JBODsKKyNlbGlmIFVTRShDRykKKyAgICAgICAgcmV0
dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JBODsKKyNlbmRpZgorICAgIH0K
KworICAgIC8vIFJldHVybnMgdGhlIG1vc3QgZWZmaWNpZW50IHRleHR1cmUgZm9ybWF0IGZvciB0
aGlzIHBsYXRmb3JtLgorICAgIHN0YXRpYyBHQzNEZW51bSBiZXN0VGV4dHVyZUZvcm1hdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICB7CisgICAgICAgIEdDM0RlbnVtIHRleHR1cmVG
b3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKKyAgICAgICAgc3dpdGNoIChmb3JtYXQo
KSkgeworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JBODoK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3Vy
Y2VGb3JtYXRCR1JBODoKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKSkKKyAgICAgICAgICAg
ICAgICB0ZXh0dXJlRm9ybWF0ID0gRXh0ZW5zaW9uczNEOjpCR1JBX0VYVDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGV4dHVy
ZUZvcm1hdDsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGV4dHVy
ZSBmb3JtYXQgaGFzIHRoZSBzYW1lIGNvbXBvbmVudCBvcmRlcgorICAgIC8vIGFzIHRoZSBjb2xv
ciBvbiB0aGlzIHBsYXRmb3JtLgorICAgIHN0YXRpYyBib29sIHNhbWVDb21wb25lbnRPcmRlcihH
QzNEZW51bSB0ZXh0dXJlRm9ybWF0KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChmb3JtYXQoKSkg
eworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JBODoKKyAg
ICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JB
OworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRCR1JBODoKKyAg
ICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0ID09IEV4dGVuc2lvbnMzRDo6QkdSQV9FWFQ7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNvbG9yLmgKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVt
LmNwcAkocmV2aXNpb24gODk0MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NCw3ICsx
OTQsNyBAQCBTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGE6OmdldFNoCiAgICAgKTsK
IH0KIAotU3RyaW5nIEZyYWdtZW50U2hhZGVyQkdSQVRleEFscGhhOjpnZXRTaGFkZXJTdHJpbmco
KSBjb25zdAorU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3aXp6bGVBbHBoYTo6Z2V0U2hh
ZGVyU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gU0hBREVSKAogICAgICAgICBwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAkocmV2aXNpb24gODk0
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJD
aHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDggQEAgcHVibGljOgogICAg
IFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIH07CiAKLWNsYXNzIEZyYWdtZW50U2hh
ZGVyQkdSQVRleEFscGhhIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKKy8vIFN3
aXp6bGVzIHRoZSByZWQgYW5kIGJsdWUgY29tcG9uZW50IG9mIHNhbXBsZWQgdGV4ZWwuCitjbGFz
cyBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGEgOiBwdWJsaWMgRnJhZ21lbnRUZXhB
bHBoYUJpbmRpbmcgewogcHVibGljOgogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25z
dDsKIH07CkBAIC0xNDAsMTIgKzE0MSw2IEBAIHByaXZhdGU6CiAgICAgaW50IG1fYWxwaGFMb2Nh
dGlvbjsKIH07CiAKLSNpZiBVU0UoU0tJQSkgJiYgU0tfQjMyX1NISUZUCi10eXBlZGVmIEZyYWdt
ZW50U2hhZGVyUkdCQVRleEFscGhhIEZyYWdtZW50U2hhZGVyVGV4QWxwaGE7Ci0jZWxzZQotdHlw
ZWRlZiBGcmFnbWVudFNoYWRlckJHUkFUZXhBbHBoYSBGcmFnbWVudFNoYWRlclRleEFscGhhOwot
I2VuZGlmCi0KIGNsYXNzIEZyYWdtZW50U2hhZGVyWVVWVmlkZW8gewogcHVibGljOgogICAgIEZy
YWdtZW50U2hhZGVyWVVWVmlkZW8oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5
LmgJKHJldmlzaW9uIDg5NDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2
MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Nob3dQ
bGF0Zm9ybUxheWVyVHJlZSB8fCBtX3Nob3dGUFNDb3VudGVyOyB9CiAgICAgdm9pZCBkcmF3KCk7
CiAKLSAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21l
bnRTaGFkZXJCR1JBVGV4QWxwaGE+IFByb2dyYW07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGlu
ZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3aXp6bGVBbHBoYT4g
UHJvZ3JhbTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDQ0hlYWRzVXBEaXNwbGF5KExheWVy
UmVuZGVyZXJDaHJvbWl1bSogb3duZXIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>