<?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>94725</bug_id>
          
          <creation_ts>2012-08-22 10:37:14 -0700</creation_ts>
          <short_desc>[CSS Shaders] Refactor CustomFilterMesh and CustomFilter*Program</short_desc>
          <delta_ts>2012-09-08 00:31:44 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>93869</dependson>
    
    <dependson>96146</dependson>
          <blocked>94728</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Joshua Netterfield">jnetterfield</reporter>
          <assigned_to name="Arvid Nilsson">anilsson</assigned_to>
          <cc>achicu</cc>
    
    <cc>anilsson</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>jpetsovits</cc>
    
    <cc>mifenton</cc>
    
    <cc>mvujovic</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>702045</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-22 10:37:14 -0700</bug_when>
    <thetext>The BlackBerry port does not use a hidden GraphicsContext3D to render CSS shaders, but would like to share as much code with other ports as possible. In order to share the most code possible, a small refactoring of CustomFilterMesh and CustomFilter*Program is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709768</commentid>
    <comment_count>1</comment_count>
      <attachid>161729</attachid>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-31 10:28:59 -0700</bug_when>
    <thetext>Created attachment 161729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709838</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-31 11:31:26 -0700</bug_when>
    <thetext>Max, could you comment on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709842</commentid>
    <comment_count>3</comment_count>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-08-31 11:34:12 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Max, could you comment on this?

Sure, I&apos;ll take a look. I think Alex is looking at this right now as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709866</commentid>
    <comment_count>4</comment_count>
      <attachid>161729</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-08-31 12:04:10 -0700</bug_when>
    <thetext>Comment on attachment 161729
Patch

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

Looks good! Thanks for working on this. I just had different view on the overall architecture for this.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.cpp:145
&gt; +    m_positionAttribLocation = getAttribLocation(&quot;a_position&quot;);

This is the only common part of this two implementations. Initially I thought the CustomFilterValidatedProgram would have references to two different Compiled Programs:
1. CustomFilterCompiledProgram as it is today - This will be used whenever it decides to run the shader in software, ie SVG when the feCustom tag will be implemented.
2. CustomFilterPlatformCompiledProgram which would be used and owned by the platform.

This will eliminate the need to have all this virtual functions and if you look at it the reused part is really small.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.h:86
&gt; +    virtual Platform3DObject compileShader(GC3Denum shaderType, const String&amp; shaderString) = 0;

Some platforms might not have access to Platform3DObject. That&apos;s also an argument for having two different classes for the CompiledPrograms.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.h:122
&gt; +class CustomFilterCompiledProgramGC3D : public CustomFilterCompiledProgram {

If you follow my pattern CustomFilterCompiledProgramGC3D will not exist anymore.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterGlobalContext.cpp:77
&gt;  void CustomFilterGlobalContext::prepareContextIfNeeded(HostWindow* hostWindow)

I think hostWindow will become unused parameter.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp:108
&gt; +        m_compiledProgram = CustomFilterCompiledProgramOpenGLCommon::create(m_validatedVertexShader, m_validatedFragmentShader);

I think this should go into something named CustomFilterValidatedProgram::platformCompiledProgram() which will do nothing on other platforms for now and on Blackberry will create the CustomFilterCompiledProgramOpenGLCommon.

You can have a typedef in the ValidatedProgram for the CustomFilterPlatformCompiledProgram to  CustomFilterCompiledProgramOpenGLCommon on Blackberry.

Note that compiledProgram will co-exist with platformCompiledProgram.

&gt; Source/WebCore/platform/graphics/filters/FECustomFilter.cpp:206
&gt; +    m_mesh = CustomFilterMeshGC3D::create(m_context.get(), m_meshColumns, m_meshRows, 

I think we could use a different pattern on CustomFilterMesh. Let&apos;s extract that into two different classes:
CustomFilterMesh will just be the generator of the mesh coordinates. While the actual loading into GPU and reference keeping will be moved to an object called CustomFilterMeshOwnerGC3D or CustomFilterMeshOwnerOpenGLCommon. The last two classes do not need to be related as they are used in different contexts.  

The construction pattern of CustomFilterMeshOwnerGC3D would look like: CustomFilterMeshOwnerGC3D::create(CustomFilterMesh::create(...)); The same can be applied for CustomFilterMeshOwnerOpenGLCommon.

This way CustomFilterMesh will just work in the CPU memory. The Owner will upload it on the GPU and keep a reference to the native vertex buffers. The Owner will not really need to keep the Mesh object alive after it uploads to GPU.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709893</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-31 12:35:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 161729 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161729&amp;action=review
&gt; 
&gt; Looks good! Thanks for working on this. I just had different view on the overall architecture for this.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.cpp:145
&gt; &gt; +    m_positionAttribLocation = getAttribLocation(&quot;a_position&quot;);
&gt; 
&gt; This is the only common part of this two implementations. Initially I thought the CustomFilterValidatedProgram would have references to two different Compiled Programs:
&gt; 1. CustomFilterCompiledProgram as it is today - This will be used whenever it decides to run the shader in software, ie SVG when the feCustom tag will be implemented.
&gt; 2. CustomFilterPlatformCompiledProgram which would be used and owned by the platform.
&gt; 
&gt; This will eliminate the need to have all this virtual functions and if you look at it the reused part is really small.

I wrote this first, but then didn&apos;t like it, so wrote what you see now. The difference was a bit more extreme two weeks ago, but there&apos;s still more code in common (40 lines) than not in common (36 lines). If any of the parameters change, you&apos;d have to change it in two places, so it&apos;s a bit awkward. It&apos;s not a huge deal obviously, so if you prefer that, I can revert it to what I made before?

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.h:86
&gt; &gt; +    virtual Platform3DObject compileShader(GC3Denum shaderType, const String&amp; shaderString) = 0;
&gt; 
&gt; Some platforms might not have access to Platform3DObject. That&apos;s also an argument for having two different classes for the CompiledPrograms.

I think all platforms typedef Platform3DObject as GC3Duint, as defined in GraphicsTypes3D.h. Is this not the case? Is code in -OpenGLCommon not cross-platform?

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.h:122
&gt; &gt; +class CustomFilterCompiledProgramGC3D : public CustomFilterCompiledProgram {
&gt; 
&gt; If you follow my pattern CustomFilterCompiledProgramGC3D will not exist anymore.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterGlobalContext.cpp:77
&gt; &gt;  void CustomFilterGlobalContext::prepareContextIfNeeded(HostWindow* hostWindow)
&gt; 
&gt; I think hostWindow will become unused parameter.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp:108
&gt; &gt; +        m_compiledProgram = CustomFilterCompiledProgramOpenGLCommon::create(m_validatedVertexShader, m_validatedFragmentShader);
&gt; 
&gt; I think this should go into something named CustomFilterValidatedProgram::platformCompiledProgram() which will do nothing on other platforms for now and on Blackberry will create the CustomFilterCompiledProgramOpenGLCommon.

Will do.

&gt; 
&gt; You can have a typedef in the ValidatedProgram for the CustomFilterPlatformCompiledProgram to  CustomFilterCompiledProgramOpenGLCommon on Blackberry.
&gt; 
&gt; Note that compiledProgram will co-exist with platformCompiledProgram.

There isn&apos;t currently non-accelerated filter effects, but for other platforms this would be true.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/FECustomFilter.cpp:206
&gt; &gt; +    m_mesh = CustomFilterMeshGC3D::create(m_context.get(), m_meshColumns, m_meshRows, 
&gt; 
&gt; I think we could use a different pattern on CustomFilterMesh. Let&apos;s extract that into two different classes:
&gt; CustomFilterMesh will just be the generator of the mesh coordinates. While the actual loading into GPU and reference keeping will be moved to an object called CustomFilterMeshOwnerGC3D or CustomFilterMeshOwnerOpenGLCommon. The last two classes do not need to be related as they are used in different contexts. 

Ok, that&apos;s just a matter of renaming things I think.
 
&gt; 
&gt; The construction pattern of CustomFilterMeshOwnerGC3D would look like: CustomFilterMeshOwnerGC3D::create(CustomFilterMesh::create(...)); The same can be applied for CustomFilterMeshOwnerOpenGLCommon.
&gt; 
&gt; This way CustomFilterMesh will just work in the CPU memory. The Owner will upload it on the GPU and keep a reference to the native vertex buffers. The Owner will not really need to keep the Mesh object alive after it uploads to GPU.

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709896</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-31 12:38:00 -0700</bug_when>
    <thetext>Hmm... I&apos;m making the changes, and it&apos;s about 100 lines more? Is that okay?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709914</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-31 13:02:42 -0700</bug_when>
    <thetext>I&apos;m sorry to leave it like this, but they&apos;re kicking me out. Arvid has agreed to look at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709917</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-31 13:10:59 -0700</bug_when>
    <thetext>^ I&apos;m a co-op.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709929</commentid>
    <comment_count>9</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-08-31 13:30:24 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I&apos;m sorry to leave it like this, but they&apos;re kicking me out. Arvid has agreed to look at this.

Thanks for all your hard work, it&apos;s great stuff! I&apos;ll try to adapt your patches to the reviewers&apos; suggestions and make sure you&apos;re credited as the originator! Best of luck in your studies :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709987</commentid>
    <comment_count>10</comment_count>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-08-31 14:27:53 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; I&apos;m sorry to leave it like this, but they&apos;re kicking me out. Arvid has agreed to look at this.
&gt; 
&gt; Thanks for all your hard work, it&apos;s great stuff! I&apos;ll try to adapt your patches to the reviewers&apos; suggestions and make sure you&apos;re credited as the originator! Best of luck in your studies :)

Yup, thanks Joshua! We appreciate all your help on shaders :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710633</commentid>
    <comment_count>11</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-03 07:16:16 -0700</bug_when>
    <thetext>I&apos;m looking into this and Joshua&apos;s other unlanded patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710701</commentid>
    <comment_count>12</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-03 10:07:02 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 161729 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161729&amp;action=review
&gt; &gt; 
Thank you for working on CSS Shaders! Sorry about all delay with my comments, but I need to make sure we can reuse this on other platforms too.

&gt; &gt; Looks good! Thanks for working on this. I just had different view on the overall architecture for this.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.cpp:145
&gt; &gt; &gt; +    m_positionAttribLocation = getAttribLocation(&quot;a_position&quot;);
&gt; &gt; 
&gt; &gt; This is the only common part of this two implementations. Initially I thought the CustomFilterValidatedProgram would have references to two different Compiled Programs:
&gt; &gt; 1. CustomFilterCompiledProgram as it is today - This will be used whenever it decides to run the shader in software, ie SVG when the feCustom tag will be implemented.
&gt; &gt; 2. CustomFilterPlatformCompiledProgram which would be used and owned by the platform.
&gt; &gt; 
&gt; &gt; This will eliminate the need to have all this virtual functions and if you look at it the reused part is really small.
&gt; 
&gt; I wrote this first, but then didn&apos;t like it, so wrote what you see now. The difference was a bit more extreme two weeks ago, but there&apos;s still more code in common (40 lines) than not in common (36 lines). If any of the parameters change, you&apos;d have to change it in two places, so it&apos;s a bit awkward. It&apos;s not a huge deal obviously, so if you prefer that, I can revert it to what I made before?

I think this would be a better way to do it, even if we duplicate the parameters. That&apos;s because other platforms might choose to implement the rendering in platform code that is not part of WebKit, so this part of the code would duplicate anyway.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.h:86
&gt; &gt; &gt; +    virtual Platform3DObject compileShader(GC3Denum shaderType, const String&amp; shaderString) = 0;
&gt; &gt; 
&gt; &gt; Some platforms might not have access to Platform3DObject. That&apos;s also an argument for having two different classes for the CompiledPrograms.
&gt; 
&gt; I think all platforms typedef Platform3DObject as GC3Duint, as defined in GraphicsTypes3D.h. Is this not the case? Is code in -OpenGLCommon not cross-platform?
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterCompiledProgram.h:122
&gt; &gt; &gt; +class CustomFilterCompiledProgramGC3D : public CustomFilterCompiledProgram {
&gt; &gt; 
&gt; &gt; If you follow my pattern CustomFilterCompiledProgramGC3D will not exist anymore.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterGlobalContext.cpp:77
&gt; &gt; &gt;  void CustomFilterGlobalContext::prepareContextIfNeeded(HostWindow* hostWindow)
&gt; &gt; 
&gt; &gt; I think hostWindow will become unused parameter.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp:108
&gt; &gt; &gt; +        m_compiledProgram = CustomFilterCompiledProgramOpenGLCommon::create(m_validatedVertexShader, m_validatedFragmentShader);
&gt; &gt; 
&gt; &gt; I think this should go into something named CustomFilterValidatedProgram::platformCompiledProgram() which will do nothing on other platforms for now and on Blackberry will create the CustomFilterCompiledProgramOpenGLCommon.
&gt; 
&gt; Will do.
&gt; 
&gt; &gt; 
&gt; &gt; You can have a typedef in the ValidatedProgram for the CustomFilterPlatformCompiledProgram to  CustomFilterCompiledProgramOpenGLCommon on Blackberry.
&gt; &gt; 
&gt; &gt; Note that compiledProgram will co-exist with platformCompiledProgram.
&gt; 
&gt; There isn&apos;t currently non-accelerated filter effects, but for other platforms this would be true.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/filters/FECustomFilter.cpp:206
&gt; &gt; &gt; +    m_mesh = CustomFilterMeshGC3D::create(m_context.get(), m_meshColumns, m_meshRows, 
&gt; &gt; 
&gt; &gt; I think we could use a different pattern on CustomFilterMesh. Let&apos;s extract that into two different classes:
&gt; &gt; CustomFilterMesh will just be the generator of the mesh coordinates. While the actual loading into GPU and reference keeping will be moved to an object called CustomFilterMeshOwnerGC3D or CustomFilterMeshOwnerOpenGLCommon. The last two classes do not need to be related as they are used in different contexts. 
&gt; 
&gt; Ok, that&apos;s just a matter of renaming things I think.
&gt; 
&gt; &gt; 
&gt; &gt; The construction pattern of CustomFilterMeshOwnerGC3D would look like: CustomFilterMeshOwnerGC3D::create(CustomFilterMesh::create(...)); The same can be applied for CustomFilterMeshOwnerOpenGLCommon.
&gt; &gt; 
&gt; &gt; This way CustomFilterMesh will just work in the CPU memory. The Owner will upload it on the GPU and keep a reference to the native vertex buffers. The Owner will not really need to keep the Mesh object alive after it uploads to GPU.
&gt; 
&gt; Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711549</commentid>
    <comment_count>13</comment_count>
      <attachid>162128</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-04 16:24:17 -0700</bug_when>
    <thetext>Created attachment 162128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711551</commentid>
    <comment_count>14</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-04 16:29:05 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=162128) [details]
&gt; Patch

Note, this patch lacks a hunk that adds CustomFilterMeshGenerator.h/cpp to the xcodeproj, because I can&apos;t generate the proper hashes on my Linux machine. I&apos;ll need to use a Mac for that at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711565</commentid>
    <comment_count>15</comment_count>
      <attachid>162128</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-04 16:42:02 -0700</bug_when>
    <thetext>Comment on attachment 162128
Patch

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

It looks good! Thanks!

&gt; Source/WebCore/platform/graphics/filters/CustomFilterGlobalContext.cpp:91
&gt; +    // FIXME: We should consider separating filter validation into a separate class that has no GraphicsContext3D dependency.

I think the assert was not needed anymore in here, so it&apos;s safe to remove the fixme too. Could you please move the assert to CustomFilterValidatedProgram::compiledProgram() instead ?

ASSERT(m_globalContext-&gt;context());

&gt; Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.h:86
&gt; +    PlatformCompiledProgramPtr platformCompiledProgram();

I think you return a RefPtr&lt;WebCore::LayerCompiledProgram&gt; in here. I suppose we want a PassRefPtr&lt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711567</commentid>
    <comment_count>16</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-04 16:47:37 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=162128) [details]
&gt; Patch

I was also gonna say, the code in https://bugs.webkit.org/show_bug.cgi?id=94728 shows how we&apos;ll leverage this refactoring in the BlackBerry port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711571</commentid>
    <comment_count>17</comment_count>
      <attachid>162128</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-04 16:49:48 -0700</bug_when>
    <thetext>Comment on attachment 162128
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.h:86
&gt;&gt; +    PlatformCompiledProgramPtr platformCompiledProgram();
&gt; 
&gt; I think you return a RefPtr&lt;WebCore::LayerCompiledProgram&gt; in here. I suppose we want a PassRefPtr&lt;&gt;.

The reason I do it like this is to avoid having two typedefs for a pointer type. The BlackBerry port doesn&apos;t mind the additional refcount churn here.
Otherwise, I&apos;d have to do something which I think looks silly:


#if PLATFORM(BLACKBERRY)
namespace WebCore {
class LayerCompiledProgram;
}
typedef WebCore::LayerCompiledProgram PlatformCompiledProgram;
typedef RefPtr&lt;WebCore::LayerCompiledProgram&gt; PlatformCompiledProgramPtr;
typedef PassRefPtr&lt;WebCore::LayerCompiledProgram&gt; PlatformCompiledProgramPassPtr;
#else
typedef void PlatformCompiledProgram;
typedef PlatformCompiledProgram* PlatformCompiledProgramPtr;
typedef PlatformCompiledProgram* PlatformCompiledProgramPassPtr;
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711575</commentid>
    <comment_count>18</comment_count>
      <attachid>162128</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-04 16:56:56 -0700</bug_when>
    <thetext>Comment on attachment 162128
Patch

Attachment 162128 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13753582</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711593</commentid>
    <comment_count>19</comment_count>
      <attachid>162137</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-04 17:29:14 -0700</bug_when>
    <thetext>Created attachment 162137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711678</commentid>
    <comment_count>20</comment_count>
      <attachid>162137</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-04 19:54:41 -0700</bug_when>
    <thetext>Comment on attachment 162137
Patch

Attachment 162137 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13746702</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714650</commentid>
    <comment_count>21</comment_count>
      <attachid>162798</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-07 10:07:05 -0700</bug_when>
    <thetext>Created attachment 162798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714657</commentid>
    <comment_count>22</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-07 10:10:06 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Created an attachment (id=162798) [details]
&gt; Patch

This is the same patch as last time, only now I managed to update the xcodeproj. Hope it passes mac ews now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714707</commentid>
    <comment_count>23</comment_count>
      <attachid>162798</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-07 10:35:33 -0700</bug_when>
    <thetext>Comment on attachment 162798
Patch

Thanks! Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714745</commentid>
    <comment_count>24</comment_count>
      <attachid>162798</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-09-07 10:59:14 -0700</bug_when>
    <thetext>Comment on attachment 162798
Patch

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

Looks good.

&gt; Source/WebCore/platform/graphics/filters/blackberry/CustomFilterValidatedProgramBlackBerry.cpp:2
&gt; + * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved.

Should likely be BB.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714749</commentid>
    <comment_count>25</comment_count>
      <attachid>162820</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-07 11:03:41 -0700</bug_when>
    <thetext>Created attachment 162820
Patch

Fix copyright header for BlackBerry-specific file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714754</commentid>
    <comment_count>26</comment_count>
      <attachid>162820</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-07 11:05:55 -0700</bug_when>
    <thetext>Comment on attachment 162820
Patch

Argh, what happened to the xcodeproj diff =(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714760</commentid>
    <comment_count>27</comment_count>
      <attachid>162823</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-07 11:10:22 -0700</bug_when>
    <thetext>Created attachment 162823
Patch

Fix copyright header in BB specific file without changing anything about the xcode project file diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714781</commentid>
    <comment_count>28</comment_count>
      <attachid>162823</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-09-07 11:22:11 -0700</bug_when>
    <thetext>Comment on attachment 162823
Patch

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714896</commentid>
    <comment_count>29</comment_count>
      <attachid>162823</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 13:19:04 -0700</bug_when>
    <thetext>Comment on attachment 162823
Patch

Clearing flags on attachment: 162823

Committed r127911: &lt;http://trac.webkit.org/changeset/127911&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714897</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 13:19:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714948</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 14:03:06 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 96146</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714964</commentid>
    <comment_count>32</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-07 14:14:54 -0700</bug_when>
    <thetext>Broke the build: http://build.webkit.org/builders/Chromium%20Mac%20Release/builds/44069/steps/compile-webkit/logs/stdio

Failure:


CompileC ../../WebKit/chromium/xcodebuild/WebCore.build/Release/webcore_platform.build/Objects-normal/i386/CustomFilterValidatedProgram.o ../platform/graphics/filters/CustomFilterValidatedProgram.cpp normal i386 c++ com.apple.compilers.llvmgcc42
    cd /Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp
    setenv LANG en_US.US-ASCII
    /Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/third_party/llvm-build/Release+Asserts/bin/clang -x c++ -arch i386 -fmessage-length=0 -pipe -Wno-trigraphs -fno-exceptions -fno-rtti -O3 -Werror -Wnewline-eof -DCHROMIUM_BUILD -DUSE_LIBJPEG_TURBO=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_REMOTING=1 -DENABLE_WEBRTC=1 -DENABLE_CONFIGURATION_POLICY -DENABLE_INPUT_SPEECH -DENABLE_NOTIFICATIONS -DENABLE_HIDPI=1 -DENABLE_GPU=1 -DENABLE_EGLIMAGE=1 -DUSE_SKIA=1 -DENABLE_TASK_MANAGER=1 -DENABLE_WEB_INTENTS=1 -DENABLE_EXTENSIONS=1 -DENABLE_PLUGIN_INSTALLATION=1 -DENABLE_PROTECTOR_SERVICE=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_BACKGROUND=1 -DENABLE_AUTOMATION=1 -DENABLE_PRINTING=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DWEBKIT_IMPLEMENTATION=1 &quot;-DWEBCORE_NAVIGATOR_VENDOR=\&quot;Google Inc.\&quot;&quot; -DWEBCORE_NAVIGATOR_PLATFORM=&quot;MacIntel&quot; -DWebCascadeList=ChromiumWebCoreObjCWebCascadeList -DWebCoreFlippedView=ChromiumWebCoreObjCWebCoreFlippedView -DWebScrollbarPrefsObserver=ChromiumWebCoreObjCWebScrollbarPrefsObserver -DWebCoreRenderThemeNotificationObserver=ChromiumWebCoreObjCWebCoreRenderThemeNotificationObserver -DWebFontCache=ChromiumWebCoreObjCWebFontCache -DWebScrollAnimationHelperDelegate=ChromiumWebCoreObjCWebScrollAnimationHelperDelegate -DWebScrollbarPainterControllerDelegate=ChromiumWebCoreObjCWebScrollbarPainterControllerDelegate -DWebScrollbarPainterDelegate=ChromiumWebCoreObjCWebScrollbarPainterDelegate -DWebScrollbarPartAnimation=ChromiumWebCoreObjCWebScrollbarPartAnimation -DENABLE_3D_PLUGIN=1 -DENABLE_BATTERY_STATUS=0 -DENABLE_BLOB=1 -DENABLE_BLOB_SLICE=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_CSP_NEXT=1 -DENABLE_CSS3_TEXT_DECORATION=0 -DENABLE_CSS_BOX_DECORATION_BREAK=1 -DENABLE_CSS_COMPOSITING=0 -DENABLE_CSS_EXCLUSIONS=1 -DENABLE_CSS_FILTERS=1 -DENABLE_CSS_HIERARCHIES=0 -DENABLE_CSS_IMAGE_SET=1 -DENABLE_CSS_IMAGE_RESOLUTION=0 -DENABLE_CSS_REGIONS=1 -DENABLE_CSS_SHADERS=1 -DENABLE_CSS_VARIABLES=1 -DENABLE_CSS_STICKY_POSITION=1 -DENABLE_CUSTOM_SCHEME_HANDLER=0 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_DATA_TRANSFER_ITEMS=1 -DENABLE_DETAILS_ELEMENT=1 -DENABLE_DEVICE_ORIENTATION=1 -DENABLE_DIALOG_ELEMENT=1 -DENABLE_DIRECTORY_UPLOAD=1 -DENABLE_DOWNLOAD_ATTRIBUTE=1 -DENABLE_ENCRYPTED_MEDIA=1 -DENABLE_FILE_SYSTEM=1 -DENABLE_FILTERS=1 -DENABLE_FULLSCREEN_API=1 -DENABLE_GAMEPAD=1 -DENABLE_GEOLOCATION=1 -DENABLE_GESTURE_EVENTS=1 -DENABLE_ICONDATABASE=0 -DENABLE_IFRAME_SEAMLESS=1 -DENABLE_INDEXED_DATABASE=1 -DENABLE_INPUT_TYPE_DATE=1 -DENABLE_INPUT_TYPE_DATETIME=1 -DENABLE_INPUT_TYPE_DATETIMELOCAL=1 -DENABLE_INPUT_TYPE_MONTH=1 -DENABLE_INPUT_TYPE_TIME=1 -DENABLE_INPUT_TYPE_WEEK=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 -DENABLE_LEGACY_VIEWPORT_ADAPTION=1 -DENABLE_LEGACY_WEBKIT_BLOB_BUILDER=1 -DENABLE_LINK_PREFETCH=1 -DENABLE_LINK_PRERENDER=1 -DENABLE_MEDIA_SOURCE=1 -DENABLE_MEDIA_STATISTICS=1 -DENABLE_METER_ELEMENT=1 -DENABLE_MHTML=1 -DENABLE_MICRODATA=0 -DENABLE_MUTATION_OBSERVERS=1 -DENABLE_NAVIGATOR_CONTENT_UTILS=1 -DENABLE_PAGE_VISIBILITY_API=1 -DENABLE_POINTER_LOCK=1 -DENABLE_PROGRESS_ELEMENT=1 -DENABLE_QUOTA=1 -DENABLE_REQUEST_ANIMATION_FRAME=1 -DENABLE_RUBY=1 -DENABLE_SANDBOX=1 -DENABLE_SCRIPTED_SPEECH=1 -DENABLE_SHADOW_DOM=1 -DENABLE_SMOOTH_SCROLLING=1 -DENABLE_SQL_DATABASE=1 -DENABLE_STYLE_SCOPED=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_TEXT_AUTOSIZING=1 -DENABLE_TOUCH_ADJUSTMENT=1 -DENABLE_TOUCH_EVENTS=1 -DENABLE_TOUCH_ICON_LOADING=0 -DENABLE_TOUCH_SLIDER=1 -DENABLE_V8_SCRIPT_DEBUG_SERVER=1 -DENABLE_VIDEO=1 -DENABLE_VIDEO_TRACK=1 -DENABLE_VIEWPORT=1 -DENABLE_WEBGL=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_WEB_TIMING=1 -DENABLE_WIDGET_REGION=1 -DENABLE_WORKERS=1 -DENABLE_XHR_RESPONSE_BLOB=1 -DENABLE_XSLT=1 -DWTF_USE_LEVELDB=1 -DWTF_USE_BUILTIN_UTF8_CODEC=1 -DWTF_USE_OPENTYPE_SANITIZER=1 -DWTF_USE_RTL_SCROLLBAR=1 -DWTF_USE_SKIA_TEXT=1 -DWTF_USE_WEBP=1 -DWTF_USE_WEBKIT_IMAGE_DECODERS=1 -DENABLE_CALENDAR_PICKER=1 -DENABLE_DATALIST_ELEMENT=1 -DENABLE_INPUT_SPEECH=1 -DENABLE_INPUT_TYPE_COLOR=1 -DENABLE_INPUT_TYPE_TIME_MULTIPLE_FIELDS=1 -DENABLE_JAVASCRIPT_I18N_API=1 -DENABLE_LEGACY_NOTIFICATIONS=1 -DENABLE_MEDIA_CAPTURE=0 -DENABLE_MEDIA_STREAM=1 -DENABLE_NOTIFICATIONS=1 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_OVERFLOW_SCROLLING=0 -DENABLE_PAGE_POPUP=1 -DENABLE_SHARED_WORKERS=1 -DENABLE_WEB_AUDIO=1 -DENABLE_3D_RENDERING=1 -DENABLE_ACCELERATED_2D_CANVAS=1 -DWTF_USE_ACCELERATED_COMPOSITING=1 -DENABLE_RUBBER_BANDING=1 -DWTF_USE_SKIA_ON_MAC_CHROMIUM=1 -DBUILDING_CHROMIUM__=1 -DUSE_SYSTEM_MALLOC=1 -DWTF_USE_NEW_THEME=1 -DU_USING_ICU_NAMESPACE=0 -DU_STATIC_IMPLEMENTATION -DSK_BUILD_NO_IMAGE_ENCODE -DSK_DEFERRED_CANVAS_USES_GPIPE=1 -DGR_GL_CUSTOM_SETUP_HEADER=&quot;GrGLConfig_chrome.h&quot; -DGR_AGGRESSIVE_SHADER_OPTS=1 -DCHROME_PNG_WRITE_SUPPORT -DPNG_USER_CONFIG -DLIBXML_STATIC -DLIBXSLT_STATIC -D__STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -isysroot /Developer/SDKs/MacOSX10.6.sdk -fvisibility=hidden -fvisibility-inlines-hidden -fno-threadsafe-statics -mmacosx-version-min=10.6 -gdwarf-2 -Wglobal-constructors -Wall -Wendif-labels -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wheader-hygiene -Wno-char-subscripts -Wno-unused-function -Wno-unnamed-type-template-args -Wno-c++11-extensions -Wno-covered-switch-default -Wexit-time-destructors -F/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/Release -I/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/Release/include -I../../WebKit/chromium/third_party/icu/public/common -I../../WebKit/chromium/third_party/icu/public/i18n -I../../WebKit/chromium/third_party/apple_webkit -I../../WebKit/chromium/third_party/khronos -I../../WebKit/chromium -I/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/WebCore.build/DerivedSources/Release -I.. -I../.. -I../Modules/battery -I../Modules/filesystem -I../Modules/filesystem/chromium -I../Modules/gamepad -I../Modules/geolocation -I../Modules/intents -I../Modules/indexeddb -I../Modules/mediasource -I../Modules/mediastream -I../Modules/navigatorcontentutils -I../Modules/notifications -I../Modules/quota -I../Modules/speech -I../Modules/webaudio -I../Modules/webdatabase -I../Modules/webdatabase/chromium -I../Modules/websockets -I../accessibility -I../accessibility/chromium -I../bindings -I../bindings/generic -I../bindings/v8 -I../bindings/v8/custom -I../bridge -I../bridge/jni -I../bridge/jni/v8 -I../css -I../dom -I../dom/default -I../editing -I../fileapi -I../history -I../html -I../html/canvas -I../html/parser -I../html/shadow -I../html/track -I../inspector -I../loader -I../loader/appcache -I../loader/archive -I../loader/archive/cf -I../loader/archive/mhtml -I../loader/cache -I../loader/icon -I../mathml -I../page -I../page/animation -I../page/chromium -I../page/scrolling -I../platform -I../platform/animation -I../platform/audio -I../platform/audio/chromium -I../platform/chromium -I../platform/chromium/support -I../platform/graphics -I../platform/graphics/chromium -I../platform/graphics/chromium/cc -I../platform/graphics/filters -I../platform/graphics/filters/arm -I../platform/graphics/gpu -I../platform/graphics/opentype -I../platform/graphics/skia -I../platform/graphics/transforms -I../platform/image-decoders -I../platform/image-decoders/bmp -I../platform/image-decoders/gif -I../platform/image-decoders/ico -I../platform/image-decoders/jpeg -I../platform/image-decoders/png -I../platform/image-decoders/skia -I../platform/image-decoders/webp -I../platform/image-encoders/skia -I../platform/leveldb -I../platform/mediastream -I../platform/mediastream/chromium -I../platform/mock -I../platform/network -I../platform/network/chromium -I../platform/sql -I../platform/text -I../platform/text/transcoder -I../plugins -I../plugins/chromium -I../rendering -I../rendering/style -I../rendering/svg -I../storage -I../storage/chromium -I../svg -I../svg/animation -I../svg/graphics -I../svg/graphics/filters -I../svg/properties -I../../ThirdParty/glu -I../workers -I../xml -I../xml/parser -I../platform/audio/mac -I../platform/cocoa -I../platform/graphics/cg -I../platform/graphics/cocoa -I../platform/graphics/mac -I../platform/mac -I../platform/text/mac -I../platform/graphics/harfbuzz -I../platform/graphics/harfbuzz/ng -I../../WebKit/chromium/gpu -I../../WebKit/chromium/third_party/angle/include/GLSLANG -I/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/DerivedSources/Release/webkit -I/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/DerivedSources/Release/webkit/bindings -I../../WTF -I../../JavaScriptCore -I../../Platform/chromium -I/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/DerivedSources/Release/webcore_headers -I../../WebKit/chromium/skia/config -I../../WebKit/chromium/third_party/skia/src/core -I../../WebKit/chromium/third_party/skia/include/config -I../../WebKit/chromium/third_party/skia/include/core -I../../WebKit/chromium/third_party/skia/include/effects -I../../WebKit/chromium/third_party/skia/include/pdf -I../../WebKit/chromium/third_party/skia/include/gpu -I../../WebKit/chromium/third_party/skia/include/gpu/gl -I../../WebKit/chromium/third_party/skia/include/pipe -I../../WebKit/chromium/third_party/skia/include/ports -I../../WebKit/chromium/third_party/skia/include/utils -I../../WebKit/chromium/skia/ext -I../../WebKit/chromium/third_party/skia/include/utils/mac -I../../WebKit/chromium/third_party/iccjpeg -I../../WebKit/chromium/third_party/libwebp -I../../WebKit/chromium/third_party/libpng -I../../WebKit/chromium/third_party/libxml/mac/include -I../../WebKit/chromium/third_party/libxml/src/include -I../../WebKit/chromium/third_party/libxslt -I../../WebKit/chromium/third_party/npapi -I../../WebKit/chromium/third_party/npapi/bindings -I../../WebKit/chromium/third_party/ots/include -I../../WebKit/chromium/third_party/qcms/src -I../../WebKit/chromium/third_party/sqlite -I../../WebKit/chromium/third_party/zlib -I../../WebKit/chromium/v8/include -I../../WebKit/chromium/third_party/libjpeg_turbo -I../../WebKit/chromium/third_party/leveldatabase/src/include -I../../WebKit/chromium/third_party/leveldatabase/src -I../../WebKit/chromium/third_party/harfbuzz-ng/src -I/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/WebCore.build/Release/webcore_platform.build/DerivedSources/i386 -I/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/WebCore.build/Release/webcore_platform.build/DerivedSources -fno-strict-aliasing -include /Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../WebCorePrefix.h -c /Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../platform/graphics/filters/CustomFilterValidatedProgram.cpp -o /Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/WebCore.build/Release/webcore_platform.build/Objects-normal/i386/CustomFilterValidatedProgram.o

In file included from /Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../platform/graphics/filters/CustomFilterValidatedProgram.cpp:34:
../platform/graphics/filters/CustomFilterValidatedProgram.h:112:30: error: private field &apos;m_platformCompiledProgram&apos; is not used [-Werror,-Wunused-private-field]
    PlatformCompiledProgram* m_platformCompiledProgram;

Please don&apos;t mark patches that touch cross-platform code with [blackberry]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714970</commentid>
    <comment_count>33</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-07 14:16:42 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; Broke the build: http://build.webkit.org/builders/Chromium%20Mac%20Release/builds/44069/steps/compile-webkit/logs/stdio
&gt; 
&gt; Failure:
&gt; 
&gt; 
&gt; CompileC ../../WebKit/chromium/xcodebuild/WebCore.build/Release/webcore_platform.build/Objects-normal/i386/CustomFilterValidatedProgram.o ../platform/graphics/filters/CustomFilterValidatedProgram.cpp normal i386 c++ com.apple.compilers.llvmgcc42
&gt;     cd /Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp
&gt;     setenv LANG en_US.US-ASCII
&gt;     /Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/third_party/llvm-build/Release+Asserts/bin/clang -x c++ -arch i386 -fmessage-length=0 -pipe -Wno-trigraphs -fno-exceptions -fno-rtti -O3 -Werror -Wnewline-eof -DCHROMIUM_BUILD -DUSE_LIBJPEG_TURBO=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_REMOTING=1 -DENABLE_WEBRTC=1 -DENABLE_CONFIGURATION_POLICY -DENABLE_INPUT_SPEECH -DENABLE_NOTIFICATIONS -DENABLE_HIDPI=1 -DENABLE_GPU=1 -DENABLE_EGLIMAGE=1 -DUSE_SKIA=1 -DENABLE_TASK_MANAGER=1 -DENABLE_WEB_INTENTS=1 -DENABLE_EXTENSIONS=1 -DENABLE_PLUGIN_INSTALLATION=1 -DENABLE_PROTECTOR_SERVICE=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_BACKGROUND=1 -DENABLE_AUTOMATION=1 -DENABLE_PRINTING=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DWEBKIT_IMPLEMENTATION=1 &quot;-DWEBCORE_NAVIGATOR_VENDOR=\&quot;Google Inc.\&quot;&quot; -DWEBCORE_NAVIGATOR_PLATFORM=&quot;MacIntel&quot; -DWebCascadeList=ChromiumWebCoreObjCWebCascadeList -DWebCoreFlippedView=ChromiumWebCoreObjCWebCoreFlippedView -DWebScrollbarPrefsObserver=ChromiumWebCoreObjCWebScrollbarPrefsObserver -DWebCoreRenderThemeNotificationObserver=ChromiumWebCoreObjCWebCoreRenderThemeNotificationObserver -DWebFontCache=ChromiumWebCoreObjCWebFontCache -DWebScrollAnimationHelperDelegate=ChromiumWebCoreObjCWebScrollAnimationHelperDelegate -DWebScrollbarPainterControllerDelegate=ChromiumWebCoreObjCWebScrollbarPainterControllerDelegate -DWebScrollbarPainterDelegate=ChromiumWebCoreObjCWebScrollbarPainterDelegate -DWebScrollbarPartAnimation=ChromiumWebCoreObjCWebScrollbarPartAnimation -DENABLE_3D_PLUGIN=1 -DENABLE_BATTERY_STATUS=0 -DENABLE_BLOB=1 -DENABLE_BLOB_SLICE=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_CSP_NEXT=1 -DENABLE_CSS3_TEXT_DECORATION=0 -DENABLE_CSS_BOX_DECORATION_BREAK=1 -DENABLE_CSS_COMPOSITING=0 -DENABLE_CSS_EXCLUSIONS=1 -DENABLE_CSS_FILTERS=1 -DENABLE_CSS_HIERARCHIES=0 -DENABLE_CSS_IMAGE_SET=1 -DENABLE_CSS_IMAGE_RESOLUTION=0 -DENABLE_CSS_REGIONS=1 -DENABLE_CSS_SHADERS=1 -DENABLE_CSS_VARIABLES=1 -DENABLE_CSS_STICKY_POSITION=1 -DENABLE_CUSTOM_SCHEME_HANDLER=0 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_DATA_TRANSFER_ITEMS=1 -DENABLE_DETAILS_ELEMENT=1 -DENABLE_DEVICE_ORIENTATION=1 -DENABLE_DIALOG_ELEMENT=1 -DENABLE_DIRECTORY_UPLOAD=1 -DENABLE_DOWNLOAD_ATTRIBUTE=1 -DENABLE_ENCRYPTED_MEDIA=1 -DENABLE_FILE_SYSTEM=1 -DENABLE_FILTERS=1 -DENABLE_FULLSCREEN_API=1 -DENABLE_GAMEPAD=1 -DENABLE_GEOLOCATION=1 -DENABLE_GESTURE_EVENTS=1 -DENABLE_ICONDATABASE=0 -DENABLE_IFRAME_SEAMLESS=1 -DENABLE_INDEXED_DATABASE=1 -DENABLE_INPUT_TYPE_DATE=1 -DENABLE_INPUT_TYPE_DATETIME=1 -DENABLE_INPUT_TYPE_DATETIMELOCAL=1 -DENABLE_INPUT_TYPE_MONTH=1 -DENABLE_INPUT_TYPE_TIME=1 -DENABLE_INPUT_TYPE_WEEK=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 -DENABLE_LEGACY_VIEWPORT_ADAPTION=1 -DENABLE_LEGACY_WEBKIT_BLOB_BUILDER=1 -DENABLE_LINK_PREFETCH=1 -DENABLE_LINK_PRERENDER=1 -DENABLE_MEDIA_SOURCE=1 -DENABLE_MEDIA_STATISTICS=1 -DENABLE_METER_ELEMENT=1 -DENABLE_MHTML=1 -DENABLE_MICRODATA=0 -DENABLE_MUTATION_OBSERVERS=1 -DENABLE_NAVIGATOR_CONTENT_UTILS=1 -DENABLE_PAGE_VISIBILITY_API=1 -DENABLE_POINTER_LOCK=1 -DENABLE_PROGRESS_ELEMENT=1 -DENABLE_QUOTA=1 -DENABLE_REQUEST_ANIMATION_FRAME=1 -DENABLE_RUBY=1 -DENABLE_SANDBOX=1 -DENABLE_SCRIPTED_SPEECH=1 -DENABLE_SHADOW_DOM=1 -DENABLE_SMOOTH_SCROLLING=1 -DENABLE_SQL_DATABASE=1 -DENABLE_STYLE_SCOPED=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_TEXT_AUTOSIZING=1 -DENABLE_TOUCH_ADJUSTMENT=1 -DENABLE_TOUCH_EVENTS=1 -DENABLE_TOUCH_ICON_LOADING=0 -DENABLE_TOUCH_SLIDER=1 -DENABLE_V8_SCRIPT_DEBUG_SERVER=1 -DENABLE_VIDEO=1 -DENABLE_VIDEO_TRACK=1 -DENABLE_VIEWPORT=1 -DENABLE_WEBGL=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_WEB_TIMING=1 -DENABLE_WIDGET_REGION=1 -DENABLE_WORKERS=1 -DENABLE_XHR_RESPONSE_BLOB=1 -DENABLE_XSLT=1 -DWTF_USE_LEVELDB=1 -DWTF_USE_BUILTIN_UTF8_CODEC=1 -DWTF_USE_OPENTYPE_SANITIZER=1 -DWTF_USE_RTL_SCROLLBAR=1 -DWTF_USE_SKIA_TEXT=1 -DWTF_USE_WEBP=1 -DWTF_USE_WEBKIT_IMAGE_DECODERS=1 -DENABLE_CALENDAR_PICKER=1 -DENABLE_DATALIST_ELEMENT=1 -DENABLE_INPUT_SPEECH=1 -DENABLE_INPUT_TYPE_COLOR=1 -DENABLE_INPUT_TYPE_TIME_MULTIPLE_FIELDS=1 -DENABLE_JAVASCRIPT_I18N_API=1 -DENABLE_LEGACY_NOTIFICATIONS=1 -DENABLE_MEDIA_CAPTURE=0 -DENABLE_MEDIA_STREAM=1 -DENABLE_NOTIFICATIONS=1 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_OVERFLOW_SCROLLING=0 -DENABLE_PAGE_POPUP=1 -DENABLE_SHARED_WORKERS=1 -DENABLE_WEB_AUDIO=1 -DENABLE_3D_RENDERING=1 -DENABLE_ACCELERATED_2D_CANVAS=1 -DWTF_USE_ACCELERATED_COMPOSITING=1 -DENABLE_RUBBER_BANDING=1 -DWTF_USE_SKIA_ON_MAC_CHROMIUM=1 -DBUILDING_CHROMIUM__=1 -DUSE_SYSTEM_MALLOC=1 -DWTF_USE_NEW_THEME=1 -DU_USING_ICU_NAMESPACE=0 -DU_STATIC_IMPLEMENTATION -DSK_BUILD_NO_IMAGE_ENCODE -DSK_DEFERRED_CANVAS_USES_GPIPE=1 -DGR_GL_CUSTOM_SETUP_HEADER=&quot;GrGLConfig_chrome.h&quot; -DGR_AGGRESSIVE_SHADER_OPTS=1 -DCHROME_PNG_WRITE_SUPPORT -DPNG_USER_CONFIG -DLIBXML_STATIC -DLIBXSLT_STATIC -D__STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -isysroot /Developer/SDKs/MacOSX10.6.sdk -fvisibility=hidden -fvisibility-inlines-hidden -fno-threadsafe-statics -mmacosx-version-min=10.6 -gdwarf-2 -Wglobal-constructors -Wall -Wendif-labels -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wheader-hygiene -Wno-char-subscripts -Wno-unused-function -Wno-unnamed-type-template-args -Wno-c++11-extensions -Wno-covered-switch-default -Wexit-time-destructors -F/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/Release -I/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/Release/include -I../../WebKit/chromium/third_party/icu/public/common -I../../WebKit/chromium/third_party/icu/public/i18n -I../../WebKit/chromium/third_party/apple_webkit -I../../WebKit/chromium/third_party/khronos -I../../WebKit/chromium -I/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/WebCore.build/DerivedSources/Release -I.. -I../.. -I../Modules/battery -I../Modules/filesystem -I../Modules/filesystem/chromium -I../Modules/gamepad -I../Modules/geolocation -I../Modules/intents -I../Modules/indexeddb -I../Modules/mediasource -I../Modules/mediastream -I../Modules/navigatorcontentutils -I../Modules/notifications -I../Modules/quota -I../Modules/speech -I../Modules/webaudio -I../Modules/webdatabase -I../Modules/webdatabase/chromium -I../Modules/websockets -I../accessibility -I../accessibility/chromium -I../bindings -I../bindings/generic -I../bindings/v8 -I../bindings/v8/custom -I../bridge -I../bridge/jni -I../bridge/jni/v8 -I../css -I../dom -I../dom/default -I../editing -I../fileapi -I../history -I../html -I../html/canvas -I../html/parser -I../html/shadow -I../html/track -I../inspector -I../loader -I../loader/appcache -I../loader/archive -I../loader/archive/cf -I../loader/archive/mhtml -I../loader/cache -I../loader/icon -I../mathml -I../page -I../page/animation -I../page/chromium -I../page/scrolling -I../platform -I../platform/animation -I../platform/audio -I../platform/audio/chromium -I../platform/chromium -I../platform/chromium/support -I../platform/graphics -I../platform/graphics/chromium -I../platform/graphics/chromium/cc -I../platform/graphics/filters -I../platform/graphics/filters/arm -I../platform/graphics/gpu -I../platform/graphics/opentype -I../platform/graphics/skia -I../platform/graphics/transforms -I../platform/image-decoders -I../platform/image-decoders/bmp -I../platform/image-decoders/gif -I../platform/image-decoders/ico -I../platform/image-decoders/jpeg -I../platform/image-decoders/png -I../platform/image-decoders/skia -I../platform/image-decoders/webp -I../platform/image-encoders/skia -I../platform/leveldb -I../platform/mediastream -I../platform/mediastream/chromium -I../platform/mock -I../platform/network -I../platform/network/chromium -I../platform/sql -I../platform/text -I../platform/text/transcoder -I../plugins -I../plugins/chromium -I../rendering -I../rendering/style
&gt; -I../rendering/svg -I../storage -I../storage/chromium -I../svg -I../svg/animation -I../svg/graphics -I../svg/graphics/filters -I../svg/properties -I../../ThirdParty/glu -I../workers -I../xml -I../xml/parser -I../platform/audio/mac -I../platform/cocoa -I../platform/graphics/cg -I../platform/graphics/cocoa -I../platform/graphics/mac -I../platform/mac -I../platform/text/mac -I../platform/graphics/harfbuzz -I../platform/graphics/harfbuzz/ng -I../../WebKit/chromium/gpu -I../../WebKit/chromium/third_party/angle/include/GLSLANG -I/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/DerivedSources/Release/webkit -I/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/DerivedSources/Release/webkit/bindings -I../../WTF -I../../JavaScriptCore -I../../Platform/chromium -I/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/DerivedSources/Release/webcore_headers -I../../WebKit/chromium/skia/config -I../../WebKit/chromium/third_party/skia/src/core -I../../WebKit/chromium/third_party/skia/include/config -I../../WebKit/chromium/third_party/skia/include/core -I../../WebKit/chromium/third_party/skia/include/effects -I../../WebKit/chromium/third_party/skia/include/pdf -I../../WebKit/chromium/third_party/skia/include/gpu -I../../WebKit/chromium/third_party/skia/include/gpu/gl -I../../WebKit/chromium/third_party/skia/include/pipe -I../../WebKit/chromium/third_party/skia/include/ports -I../../WebKit/chromium/third_party/skia/include/utils -I../../WebKit/chromium/skia/ext -I../../WebKit/chromium/third_party/skia/include/utils/mac -I../../WebKit/chromium/third_party/iccjpeg -I../../WebKit/chromium/third_party/libwebp -I../../WebKit/chromium/third_party/libpng -I../../WebKit/chromium/third_party/libxml/mac/include -I../../WebKit/chromium/third_party/libxml/src/include -I../../WebKit/chromium/third_party/libxslt -I../../WebKit/chromium/third_party/npapi -I../../WebKit/chromium/third_party/npapi/bindings -I../../WebKit/chromium/third_party/ots/include -I../../WebKit/chromium/third_party/qcms/src -I../../WebKit/chromium/third_party/sqlite -I../../WebKit/chromium/third_party/zlib -I../../WebKit/chromium/v8/include -I../../WebKit/chromium/third_party/libjpeg_turbo -I../../WebKit/chromium/third_party/leveldatabase/src/include -I../../WebKit/chromium/third_party/leveldatabase/src -I../../WebKit/chromium/third_party/harfbuzz-ng/src -I/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/WebCore.build/Release/webcore_platform.build/DerivedSources/i386 -I/Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/WebCore.build/Release/webcore_platform.build/DerivedSources -fno-strict-aliasing -include /Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../WebCorePrefix.h -c /Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../platform/graphics/filters/CustomFilterValidatedProgram.cpp -o /Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../../WebKit/chromium/xcodebuild/WebCore.build/Release/webcore_platform.build/Objects-normal/i386/CustomFilterValidatedProgram.o
&gt; 
&gt; In file included from /Volumes/data/b/WebKit-BuildSlave/chromium-mac-release/build/Source/WebCore/WebCore.gyp/../platform/graphics/filters/CustomFilterValidatedProgram.cpp:34:
&gt; ../platform/graphics/filters/CustomFilterValidatedProgram.h:112:30: error: private field &apos;m_platformCompiledProgram&apos; is not used [-Werror,-Wunused-private-field]
&gt;     PlatformCompiledProgram* m_platformCompiledProgram;
&gt; 
&gt; Please don&apos;t mark patches that touch cross-platform code with [blackberry]

Is it automatically reverted, or do I need to do something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714977</commentid>
    <comment_count>34</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-07 14:19:11 -0700</bug_when>
    <thetext>Removing BlackBerry tag</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715013</commentid>
    <comment_count>35</comment_count>
      <attachid>162878</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-07 14:53:12 -0700</bug_when>
    <thetext>Created attachment 162878
Patch

New patch without unused variables or functions (unused on ports other than BlackBerry, that is)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715299</commentid>
    <comment_count>36</comment_count>
      <attachid>162878</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-08 00:25:37 -0700</bug_when>
    <thetext>Comment on attachment 162878
Patch

This one is green on all bots, let&apos;s go!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715302</commentid>
    <comment_count>37</comment_count>
      <attachid>162878</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-08 00:31:37 -0700</bug_when>
    <thetext>Comment on attachment 162878
Patch

Clearing flags on attachment: 162878

Committed r127964: &lt;http://trac.webkit.org/changeset/127964&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715303</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-08 00:31:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161729</attachid>
            <date>2012-08-31 10:28:59 -0700</date>
            <delta_ts>2012-09-04 16:24:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94725-20120831132654.patch</filename>
            <type>text/plain</type>
            <size>53783</size>
            <attacher name="Joshua Netterfield">jnetterfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM2OTgyYzE3NmFmMzky
ZTczYTViMGJmMDU5MWE5Yzg4ZGQyN2JlZS4uMjk4NGRkZDEzODViY2UyMDljNzNkOWJjYzcwOTdi
OTQ4OTY2MDg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OCBAQAorMjAxMi0wOC0yOSAgSm9z
aHVhIE5ldHRlcmZpZWxkICA8am5ldHRlcmZpZWxkQHJpbS5jb20+CisKKyAgICAgICAgW0NTUyBT
aGFkZXJzXSBbQmxhY2tCZXJyeV0gUmVmYWN0b3IgQ3VzdG9tRmlsdGVyTWVzaCBhbmQgQ3VzdG9t
RmlsdGVyKlByb2dyYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk0NzI1CisgICAgICAgIEludGVybmFsIFJJTSBQUiAjMjAwNzU5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIFJldmlld2VkIGludGVybmFsbHkg
YnkgSmFrb2IgUGV0c292aXRzIGFuZCBBcnZpZCBOaWxzc29uLgorCisgICAgICAgIFdpdGhvdXQg
dGhpcyBwYXRjaCwgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtIGFuZCBDdXN0b21GaWx0ZXJN
ZXNoIG9ubHkgYWN0CisgICAgICAgIG9uIGEgR3JhcGhpY3NDb250ZXh0M0QuIFRvIGltcGxlbWVu
dCBjb21wb3NpdGVkIENTUyBTaGFkZXJzLCBDdXN0b21GaWx0ZXJDb21waWxlZC0KKyAgICAgICAg
UHJvZ3JhbSBhbmQgQ3VzdG9tRmlsdGVyTWVzaCBtdXN0IGFsc28gd29yayBvbiBhbiBPcGVuR0wo
RVMpIGNvbnRleHQgd2hpY2ggaXMgbm90CisgICAgICAgIGEgR3JhcGhpY3NDb250ZXh0M0QuIAor
CisgICAgICAgIFRoZXJlIGFyZSB0d28gd2F5cyB0aGF0IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbSBjb3VsZCBiZSByZWZhY3RvcmVkIHRvIHRoaXMgZW5kOgorCisgICAgICAgICAgKDEpIExp
a2UgR3JhcGhpY3NDb250ZXh0M0QsIHdoZXJlIGltcGxlbWVudGF0aW9ucyBvZiBwbGF0Zm9ybS1z
cGVjaWZpYworICAgICAgICAgICAgICBmdW5jdGlvbnMgYXJlIGRlZmluZWQgaW4gZGlmZmVyZW50
IGZpbGVzLCBidXQgdGhlIGRlZmluaXRpb24gaXMgaW4KKyAgICAgICAgICAgICAgYSBjb21tb24g
aGVhZGVyLiBUaGUgYWR2YW50YWdlIGlzIHRoYXQgdGhpcyByZWR1Y2VzIHZpcnR1YWwgY2FsbHMK
KyAgICAgICAgICAgICAgYW5kIGlzIHBvdGVudGlhbGx5IGEgbGl0dGxlIGNsZWFuZXIsIGhvd2V2
ZXIgaXQgaXMgcG9zc2libGUgdGhhdAorICAgICAgICAgICAgICBwbGF0Zm9ybXMgd2hpY2ggc3Vw
cG9ydCBib3RoIGNvbXBvc2l0ZWQgYW5kIG5vbi1jb21wb3NpdGVkIGN1c3RvbQorICAgICAgICAg
ICAgICBmaWx0ZXIgZWZmZWN0cyB3b3VsZCB3YW50IGFjY2VzcyB0byBib3RoIHRoZSBHcmFwaGlj
c0NvbnRleHQzRAorICAgICAgICAgICAgICB2ZXJzaW9uIGFuZCB0aGUgcGxhaW4gT3BlbkdMKEVT
KSB2ZXJzaW9uLiBTb21lIENTUyBGaWx0ZXIgRWZmZWN0CisgICAgICAgICAgICAgIHBpcGVsaW5l
cyBjYW5ub3QgYmUgY29tcG9zaXRlZCBvbiBhbGwgcGxhdGZvcm1zLgorCisgICAgICAgICAgKDIp
IExpa2UgRXh0ZW5zaW9uczNELCBzbyB0aGF0IG90aGVyIHBsYXRmb3JtcyBjYW4gaW1wbGVtZW50
IGJvdGggY29tcG9zaXRlZAorICAgICAgICAgICAgICBhbmQgbm9uLWNvbXBvc2l0ZWQgY3VzdG9t
IEZpbHRlciBFZmZlY3RzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgc2Vj
b25kIG9wdGlvbi4KKworICAgICAgICBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0gYW5kIEN1
c3RvbUZpbHRlck1lc2ggYXJlIHNwbGl0IGludG8gYmFzZSBjbGFzc2VzLAorICAgICAgICB3aGlj
aCBpbXBsZW1lbnQgZnVuY3Rpb25hbGl0eSB0aGF0IGV2ZXJ5IHBsYXRmb3JtIHVzaW5nIENTUyBz
aGFkZXJzIHNob3VsZAorICAgICAgICBpbmhlcml0LCBhbmQgdHdvIG90aGVyIHR5cGVzIG9mIGNs
YXNzZXM6CisKKyAgICAgICAgICAoMSkgLUdDM0QgY2xhc3NlcywgZm9yIGZpbHRlciByZW5kZXJp
bmcgY29udGV4dHMgd2hpY2ggdXNlIEdyYXBoaWNzQ29udGV4dDNELgorICAgICAgICAgICAgICBX
aGF0IHdhcyBDdXN0b21GaWx0ZXJNZXNoIGJlZm9yZSB0aGlzIHBhdGNoIGlzIG5vdyBHcmFwaGlj
c0NvbnRleHRHQzNECisgICAgICAgICAgICAgIGFuZCB3aGF0IHdhcyBDdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW0gYmVmb3JlIHRoaXMgcGF0Y2ggaXMgbm93CisgICAgICAgICAgICAgIEN1c3Rv
bUZpbHRlckNvbXBpbGVkUHJvZ3JhbUdDM0QuIEkgY29uc2lkZXJlZCBuYW1pbmcgdGhlIGNsYXNz
ZXMKKyAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtR3JhcGhpY3NDb250
ZXh0M0QsIGJ1dCB0aGlzIHNlZW1lZCBub3QgYSBsaXR0bGUKKyAgICAgICAgICAgICAgbG9uZy4K
KworICAgICAgICAgICgyKSAtT3BlbkdMQ29tbW9uIGNsYXNzZXMsIHdoaWNoIGFjdCBkaXJlY3Rs
eSBvbiBhbiBPcGVuR0woRVMpIGNvbnRleHQuIE90aGVyIHBsYXRmb3JtcworICAgICAgICAgICAg
ICB3aGljaCB1c2UgY29tcG9zaXRlZCBzaGFkZXJzICh3aXRob3V0IEdyYXBoaWNzQ29udGV4dDNE
KSBzaG91bGQgYWxzbyBjb25zaWRlcgorICAgICAgICAgICAgICB1c2luZyB0aGlzLiBJIGNvbnNp
ZGVyZWQgbmFtaW5nIHRoaXMgY2xhc3Mgc2ltcGx5IC1PcGVuR0wsIGJ1dCBmb3IgY29uc2lzdGFu
Y3kKKyAgICAgICAgICAgICAgd2l0aCB0aGUgRXh0ZW5zaW9uczNEIHN0cnVjdHVyZSwgYW5kIHRv
IGVtcGhhc2lzZSB0aGF0IHRoaXMgY2xhc3Mgc2hvdWxkCisgICAgICAgICAgICAgIHdvcmsgb24g
Ym90aCBEZXNrdG9wIEdMIGFuZCBHTEVTLCBJIGRlY2lkZWQgYWdhaW5zdCBpdC4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIGJlY2F1c2UgdGhpcyBwYXRjaCBpbXBsZW1lbnRzIG5vIG5ldyBmdW5j
dGlvbmFsaXR5LiBPbmNlIENTUworICAgICAgICBTaGFkZXJzIGFyZSBlbmFibGVkIG9uIEJsYWNr
QmVycnksIHRob3NlIHRlc3RzIHdpbGwgcHJvdmUgdGhlIG5ldyAtT3BlbkdMQ29tbW9uCisgICAg
ICAgIGNvZGUgdG8gYmUgY29ycmVjdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpDdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlckNv
bXBpbGVkUHJvZ3JhbUdDM0Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbUdDM0Q6OkN1c3RvbUZpbHRlckNv
bXBpbGVkUHJvZ3JhbUdDM0QpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtR0MzRDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21G
aWx0ZXJDb21waWxlZFByb2dyYW1HQzNEOjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1HQzNEOjpkZWxldGVTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjppbml0aWFsaXplUGFyYW1l
dGVyTG9jYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbUdDM0Q6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZp
bHRlckNvbXBpbGVkUHJvZ3JhbUdDM0Q6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1HQzNEOjppc0dMRVMyQ29tcGxpYW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbUdDM0Q6OnVu
aWZvcm1Mb2NhdGlvbkJ5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW1HQzNEOjp+Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtR0MzRCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dy
YW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9tRmlsdGVyQ29tcGlsZWRQ
cm9ncmFtR0MzRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xDb21tb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtT3Bl
bkdMQ29tbW9uOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0wpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtT3BlbkdMQ29tbW9uOjpjb21waWxl
U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbU9w
ZW5HTENvbW1vbjo6bGlua1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
Q29tcGlsZWRQcm9ncmFtT3BlbkdMQ29tbW9uOjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtT3BlbkdMQ29tbW9uOjpnZXRBdHRyaWJM
b2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1P
cGVuR0xDb21tb246OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0
b21GaWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xDb21tb246OnVuaWZvcm1Mb2NhdGlvbkJ5TmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xD
b21tb246On5DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xDb21tb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
T3BlbkdMQ29tbW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDdXN0
b21GaWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtT3BlbkdMQ29tbW9uOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtT3BlbkdMQ29tbW9uOjppc0dM
RVMyQ29tcGxpYW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlckdsb2JhbENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
R2xvYmFsQ29udGV4dDo6cHJlcGFyZUNvbnRleHRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpnZXRWYWxpZGF0ZWRQcm9ncmFtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQu
aDoKKyAgICAgICAgKEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21GaWx0ZXJNZXNoOjpDdXN0b21GaWx0ZXJNZXNoKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR0MzRDo6Q3VzdG9tRmlsdGVyTWVzaEdD
M0QpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdDM0Q6On5DdXN0b21GaWx0
ZXJNZXNoR0MzRCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR0MzRDo6Y3Jl
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2hHQzNEOjpiaW5k
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2hHQzNEOjpidWZmZXJE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1l
c2guaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9tRmlsdGVyTWVzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjpjb2x1bW5Db3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjpyb3dDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21GaWx0ZXJNZXNoOjp+Q3VzdG9tRmlsdGVyTWVzaCk6CisgICAgICAgIChDdXN0b21G
aWx0ZXJNZXNoR0MzRCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR0MzRDo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
ck1lc2hPcGVuR0xDb21tb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaE9wZW5HTENvbW1vbjo6Q3VzdG9tRmlsdGVyTWVz
aE9wZW5HTENvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoT3BlbkdM
Q29tbW9uOjp+Q3VzdG9tRmlsdGVyTWVzaE9wZW5HTENvbW1vbik6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21GaWx0ZXJNZXNoT3BlbkdMQ29tbW9uOjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaE9wZW5HTENvbW1vbjo6YmluZEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoT3BlbkdMQ29tbW9uOjpidWZmZXJEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hPcGVu
R0xDb21tb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEN1c3RvbUZp
bHRlck1lc2hPcGVuR0xDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVz
aE9wZW5HTENvbW1vbjo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2hP
cGVuR0xDb21tb246OmZpbHRlclJlbmRlcmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxp
ZGF0ZWRQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW06OmNvbXBpbGVkUHJvZ3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmg6CisgICAgICAgIChDdXN0b21G
aWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVy
OjphcHBseVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6aW5pdGlh
bGl6ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OnJlc2l6ZUNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OmJpbmRQcm9ncmFtQW5k
QnVmZmVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZp
bHRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChGRUN1c3RvbUZpbHRlcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmg6CisgICAgICAgIChSZW5kZXJMYXllckZp
bHRlckluZm8pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZXc6OmN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQpOgorCiAyMDEy
LTA4LTMxICBNaWxpYW4gV29sZmYgIDxtaWxpYW4ud29sZmZAa2RhYi5jb20+CiAKICAgICAgICAg
W1F0XSBRTlggYnVpbGQgZmFpbHMgZHVlIHRvIG1pc3NpbmcgT3BlbkdMIEVTIGRlZmluZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggYjExM2IzZjAwZWEwMTJjMWMyZDcxZTdiM2JjZDQxZjNmYzZj
NTFkZS4uMWRjNmI1ZmE3YmM1Y2QzNzUyNzJlNDM4Zjg3NmExZTBmZTg2ZWIxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTE4NjUsOCArMTg2NSwxMCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKIAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtT3BlbkdMQ29t
bW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFs
Q29udGV4dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1l
c2guY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoT3Bl
bkdMQ29tbW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
UHJvZ3JhbS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBy
b2dyYW1JbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuaAppbmRleCAzYjI4
ZDA4YWI0N2Y5N2Y0MTcxM2FjYzU2ZDhiZjllZWE2ZmQzYTE0Li42NjM0Mjk5NjE1YzgyMjIzMjUz
MjUxZmQxMWM0YTM0MWJjNGMyOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIu
aApAQCAtMjEsNiArMjEsOCBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAm
JiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW1PcGVuR0xDb21tb24uaCIKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJNZXNoT3BlbkdMQ29t
bW9uLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheWVyRGF0YS5oIgogI2lu
Y2x1ZGUgIlRleHR1cmUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtLmNwcAppbmRleCAzYzY5NTliZmVlMGZkNWM4NGZkNjllZWRjNGViNmNiZmU3M2NkMmU3Li5i
YmI4ZGZhZjhhY2QwMmFlY2YxNzY0ZWZmOTBmMjBiNGEwNWNkMmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwCkBAIC0zNiw5ICszNiwxMCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Q3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIHZh
bGlkYXRlZEZyYWdtZW50U2hhZGVyKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBt
X3Byb2dyYW0oMCkKK0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyQ29t
cGlsZWRQcm9ncmFtKGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBjb25zdCBT
dHJpbmcmIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKQorICAgIDogbV9wcm9ncmFtKDApCisgICAg
LCBtX3ZhbGlkYXRlZFZlcnRleFNoYWRlcih2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIpCisgICAgLCBt
X3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKQogICAgICwg
bV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uKC0xKQogICAgICwgbV90ZXhBdHRyaWJMb2NhdGlvbigt
MSkKICAgICAsIG1fbWVzaEF0dHJpYkxvY2F0aW9uKC0xKQpAQCAtNTMsMzIgKzU0LDQ5IEBAIEN1
c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250CiAgICAgLCBtX2ludGVybmFsVGV4Q29vcmRBdHRyaWJMb2Nh
dGlvbigtMSkKICAgICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkKIHsKLSAgICBtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIC8vIFRvIGF2b2lkIGNhbGxpbmcgcHVyZSB2aXJ0
dWFsIGZ1bmN0aW9ucywgY2FsbCBpbml0aWFsaXplKCkgZnJvbSBjaGlsZCBjb25zdHJ1Y3Rvci4K
K30KIAotICAgIFBsYXRmb3JtM0RPYmplY3QgdmVydGV4U2hhZGVyID0gY29tcGlsZVNoYWRlcihH
cmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX1NIQURFUiwgdmFsaWRhdGVkVmVydGV4U2hhZGVyKTsK
K3ZvaWQgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjppbml0aWFsaXplKCkKK3sKKyAgICBQ
bGF0Zm9ybTNET2JqZWN0IHZlcnRleFNoYWRlciA9IGNvbXBpbGVTaGFkZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OlZFUlRFWF9TSEFERVIsIG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyKTsKICAgICBpZiAo
IXZlcnRleFNoYWRlcikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFBsYXRmb3JtM0RPYmpl
Y3QgZnJhZ21lbnRTaGFkZXIgPSBjb21waWxlU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFH
TUVOVF9TSEFERVIsIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKTsKKyAgICBQbGF0Zm9ybTNET2Jq
ZWN0IGZyYWdtZW50U2hhZGVyID0gY29tcGlsZVNoYWRlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
R01FTlRfU0hBREVSLCBtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKTsKICAgICBpZiAoIWZyYWdt
ZW50U2hhZGVyKSB7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRl
cik7CisgICAgICAgIGRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIAorCiAgICAgbV9wcm9ncmFtID0gbGlua1Byb2dyYW0odmVydGV4U2hhZGVy
LCBmcmFnbWVudFNoYWRlcik7CiAgICAgCi0gICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIodmVy
dGV4U2hhZGVyKTsKLSAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcihmcmFnbWVudFNoYWRlcik7
CisgICAgZGVsZXRlU2hhZGVyKHZlcnRleFNoYWRlcik7CisgICAgZGVsZXRlU2hhZGVyKGZyYWdt
ZW50U2hhZGVyKTsKICAgICAKICAgICBpZiAoIW1fcHJvZ3JhbSkKICAgICAgICAgcmV0dXJuOwot
ICAgIAorCiAgICAgaW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9ucygpOwogICAgIAogICAgIG1f
aXNJbml0aWFsaXplZCA9IHRydWU7CiB9CiAKLVBsYXRmb3JtM0RPYmplY3QgQ3VzdG9tRmlsdGVy
Q29tcGlsZWRQcm9ncmFtOjpjb21waWxlU2hhZGVyKEdDM0RlbnVtIHNoYWRlclR5cGUsIGNvbnN0
IFN0cmluZyYgc2hhZGVyU3RyaW5nKQorUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW0+IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbUdDM0Q6OmNyZWF0ZShQYXNzUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZFZlcnRl
eFNoYWRlciwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRGcmFnbWVudFNoYWRlcikKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbUdDM0QoY29udGV4
dCwgdmFsaWRhdGVkVmVydGV4U2hhZGVyLCB2YWxpZGF0ZWRGcmFnbWVudFNoYWRlcikpOworfQor
CitDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1HQzNEOjpDdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW1HQzNEKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZEZyYWdt
ZW50U2hhZGVyKQorICAgIDogQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtKHZhbGlkYXRlZFZl
cnRleFNoYWRlciwgdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIpCisgICAgLCBtX2NvbnRleHQoY29u
dGV4dCkKK3sKKyAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgaW5p
dGlhbGl6ZSgpOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbUdDM0Q6OmNvbXBpbGVTaGFkZXIoR0MzRGVudW0gc2hhZGVyVHlwZSwgY29uc3QgU3RyaW5n
JiBzaGFkZXJTdHJpbmcpCiB7CiAgICAgQVNTRVJUKCFzaGFkZXJTdHJpbmcuaXNOdWxsKCkpOwog
CkBAIC05OCw3ICsxMTYsNyBAQCBQbGF0Zm9ybTNET2JqZWN0IEN1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbTo6Y29tcGlsZVNoYWRlcihHQzNEZW51bSBzaGFkZXJUeXBlLAogICAgIHJldHVybiBz
aGFkZXI7CiB9CiAKLVBsYXRmb3JtM0RPYmplY3QgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
OjpsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHZlcnRleFNoYWRlciwgUGxhdGZvcm0zRE9i
amVjdCBmcmFnbWVudFNoYWRlcikKK1BsYXRmb3JtM0RPYmplY3QgQ3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtR0MzRDo6bGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCB2ZXJ0ZXhTaGFkZXIs
IFBsYXRmb3JtM0RPYmplY3QgZnJhZ21lbnRTaGFkZXIpCiB7CiAgICAgUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtID0gbV9jb250ZXh0LT5jcmVhdGVQcm9ncmFtKCk7CiAgICAgbV9jb250ZXh0LT5h
dHRhY2hTaGFkZXIocHJvZ3JhbSwgdmVydGV4U2hhZGVyKTsKQEAgLTExNywzNCArMTM1LDU0IEBA
IFBsYXRmb3JtM0RPYmplY3QgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpsaW5rUHJvZ3Jh
bShQbGF0Zm9ybTNET2JqZWN0IHZlcnRlCiAgICAgcmV0dXJuIHByb2dyYW07CiB9CiAKK3ZvaWQg
Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtR0MzRDo6ZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RP
YmplY3Qgc2hhZGVyKQoreworICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7Cit9
CisKIHZvaWQgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjppbml0aWFsaXplUGFyYW1ldGVy
TG9jYXRpb25zKCkKIHsKLSAgICBtX3Bvc2l0aW9uQXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQt
PmdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKLSAgICBtX3RleEF0
dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJh
X3RleENvb3JkIik7Ci0gICAgbV9tZXNoQXR0cmliTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldEF0
dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwgImFfbWVzaENvb3JkIik7Ci0gICAgbV90cmlhbmdsZUF0
dHJpYkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJh
X3RyaWFuZ2xlQ29vcmQiKTsKLSAgICBtX21lc2hCb3hMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0
VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfbWVzaEJveCIpOwotICAgIG1fdGlsZVNpemVM
b2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1fcHJvZ3JhbSwgInVfdGls
ZVNpemUiKTsKLSAgICBtX21lc2hTaXplTG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihtX3Byb2dyYW0sICJ1X21lc2hTaXplIik7Ci0gICAgbV9wcm9qZWN0aW9uTWF0cml4
TG9jYXRpb24gPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X3By
b2plY3Rpb25NYXRyaXgiKTsKLSAgICBtX3NhbXBsZXJTaXplTG9jYXRpb24gPSBtX2NvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sICJ1X3RleHR1cmVTaXplIik7Ci0gICAgbV9j
b250ZW50U2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9w
cm9ncmFtLCAidV9jb250ZW50VGV4dHVyZSIpOwotICAgIG1faW50ZXJuYWxUZXhDb29yZEF0dHJp
YkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sICJjc3Nf
YV90ZXhDb29yZCIpOwotICAgIG1fc2FtcGxlckxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRVbmlm
b3JtTG9jYXRpb24obV9wcm9ncmFtLCAiY3NzX3VfdGV4dHVyZSIpOworICAgIG1fcG9zaXRpb25B
dHRyaWJMb2NhdGlvbiA9IGdldEF0dHJpYkxvY2F0aW9uKCJhX3Bvc2l0aW9uIik7CisgICAgbV90
ZXhBdHRyaWJMb2NhdGlvbiA9IGdldEF0dHJpYkxvY2F0aW9uKCJhX3RleENvb3JkIik7CisgICAg
bV9tZXNoQXR0cmliTG9jYXRpb24gPSBnZXRBdHRyaWJMb2NhdGlvbigiYV9tZXNoQ29vcmQiKTsK
KyAgICBtX3RyaWFuZ2xlQXR0cmliTG9jYXRpb24gPSBnZXRBdHRyaWJMb2NhdGlvbigiYV90cmlh
bmdsZUNvb3JkIik7CisgICAgbV9tZXNoQm94TG9jYXRpb24gPSBnZXRVbmlmb3JtTG9jYXRpb24o
InVfbWVzaEJveCIpOworICAgIG1fdGlsZVNpemVMb2NhdGlvbiA9IGdldFVuaWZvcm1Mb2NhdGlv
bigidV90aWxlU2l6ZSIpOworICAgIG1fbWVzaFNpemVMb2NhdGlvbiA9IGdldFVuaWZvcm1Mb2Nh
dGlvbigidV9tZXNoU2l6ZSIpOworICAgIG1fcHJvamVjdGlvbk1hdHJpeExvY2F0aW9uID0gZ2V0
VW5pZm9ybUxvY2F0aW9uKCJ1X3Byb2plY3Rpb25NYXRyaXgiKTsKKyAgICBtX3NhbXBsZXJTaXpl
TG9jYXRpb24gPSBnZXRVbmlmb3JtTG9jYXRpb24oInVfdGV4dHVyZVNpemUiKTsKKyAgICBtX2Nv
bnRlbnRTYW1wbGVyTG9jYXRpb24gPSBnZXRVbmlmb3JtTG9jYXRpb24oInVfY29udGVudFRleHR1
cmUiKTsKKyAgICBtX2ludGVybmFsVGV4Q29vcmRBdHRyaWJMb2NhdGlvbiA9IGdldEF0dHJpYkxv
Y2F0aW9uKCJjc3NfYV90ZXhDb29yZCIpOworICAgIG1fc2FtcGxlckxvY2F0aW9uID0gZ2V0VW5p
Zm9ybUxvY2F0aW9uKCJjc3NfdV90ZXh0dXJlIik7CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0ZXh0
dXJlIGFjY2VzcyB2aWEgdV90ZXh0dXJlIGFuZCBjaGFuZ2UgdGhlIHRlc3RzIHRvIHVzZSBibGVu
ZGluZyBhbmQgY29tcG9zaXRpbmcuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkzODcxCiAgICAgaWYgKG1fc2FtcGxlckxvY2F0aW9uID09IC0xKQotICAg
ICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1f
cHJvZ3JhbSwgInVfdGV4dHVyZSIpOworICAgICAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGdldFVu
aWZvcm1Mb2NhdGlvbigidV90ZXh0dXJlIik7IAorfQorCitpbnQgQ3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtR0MzRDo6Z2V0QXR0cmliTG9jYXRpb24oY29uc3QgY2hhciogbmFtZSkKK3sKKyAg
ICByZXR1cm4gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3Byb2dyYW0sIG5hbWUpOwor
fQorCitpbnQgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtR0MzRDo6Z2V0VW5pZm9ybUxvY2F0
aW9uKGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKG1fcHJvZ3JhbSwgbmFtZSk7Cit9CisKK2Jvb2wgQ3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtR0MzRDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+aXNHTEVTMkNvbXBsaWFudCgpOwogfQogCi1pbnQgQ3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtOjp1bmlmb3JtTG9jYXRpb25CeU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQoraW50
IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbUdDM0Q6OnVuaWZvcm1Mb2NhdGlvbkJ5TmFtZShj
b25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCk7CiAgICAg
Ly8gRklYTUU6IEltcHJvdmUgdGhpcyBieSBjYWNoaW5nIHRoZSB1bmlmb3JtIGxvY2F0aW9ucy4K
ICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24obV9wcm9ncmFtLCBuYW1l
KTsKIH0KICAgICAKLUN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6fkN1c3RvbUZpbHRlckNv
bXBpbGVkUHJvZ3JhbSgpCitDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1HQzNEOjp+Q3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtR0MzRCgpCiB7CiAgICAgaWYgKG1fcHJvZ3JhbSkgewogICAg
ICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtLmgKaW5kZXggYWQ5NDVmNmNhNGQzZThkOWJlNzMzMWQ2MjEz
MTk3YjQ2MzUwNDJhOC4uNWZmMzUwMGE0NjhmYjYwNDdjZjk4ZjVkYmE2ZjI0MjZlYjY4YTFiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJDb21waWxlZFByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oCkBAIC00MCwxNSAr
NDAsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXN0b21GaWx0ZXJHbG9iYWxD
b250ZXh0OwogCisvLyBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0gYW5kIEN1c3RvbUZpbHRl
ck1lc2ggYXJlIHNwbGl0IGludG8gYmFzZSBjbGFzc2VzLAorLy8gd2hpY2ggaW1wbGVtZW50IGZ1
bmN0aW9uYWxpdHkgdGhhdCBldmVyeSBwbGF0Zm9ybSB1c2luZyBDU1Mgc2hhZGVycyBzaG91bGQK
Ky8vIGluaGVyaXQsIGFuZCB0d28gb3RoZXIgdHlwZXMgb2YgY2xhc3NlczoKKy8vCisvLyAgKDEp
IC1HQzNEIGNsYXNzZXMsIGZvciBmaWx0ZXIgcmVuZGVyaW5nIGNvbnRleHRzIHdoaWNoIHVzZSBH
cmFwaGljc0NvbnRleHQzRC4KKy8vCisvLyAgKDIpIC1PcGVuR0xDb21tb24gY2xhc3Nlcywgd2hp
Y2ggYWN0IGRpcmVjdGx5IG9uIGFuIE9wZW5HTChFUykgY29udGV4dC4gUGxhdGZvcm1zIHdoaWNo
CisvLyAgICAgIHVzZSBjb21wb3NpdGVkIHNoYWRlcnMgKHdpdGhvdXQgR3JhcGhpY3NDb250ZXh0
M0QpIG1heSBhbHNvIGNvbnNpZGVyIHVzaW5nIHRoaXMuCisvLworLy8gU29tZSBwbGF0Zm9ybXMg
bWF5IHdpc2ggdG8gdXNlIGJvdGggLUdDM0QgY2xhc3NlcyBhbmQgdGhlIC1PcGVuR0xDb21tb24g
Y2xhc3NlcywKKy8vIGZvciBleGFtcGxlIHRvIGltcGxlbWVudCBib3RoIGNvbXBvc2l0ZWQgYW5k
IG5vbi1jb21wb3NpdGVkIFNoYWRlcnMuCisKIGNsYXNzIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJv
Z3JhbTogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
PiBjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgY29uc3QgU3Ry
aW5nJiB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkRnJhZ21l
bnRTaGFkZXIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRl
ckNvbXBpbGVkUHJvZ3JhbShjb250ZXh0LCB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIHZhbGlkYXRl
ZEZyYWdtZW50U2hhZGVyKSk7Ci0gICAgfQotICAgIAotICAgIH5DdXN0b21GaWx0ZXJDb21waWxl
ZFByb2dyYW0oKTsKLSAgICAKKyAgICB2aXJ0dWFsIH5DdXN0b21GaWx0ZXJDb21waWxlZFByb2dy
YW0oKSB7IH0KKwogICAgIGludCBwb3NpdGlvbkF0dHJpYkxvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uOyB9CiAgICAgaW50IHRleEF0dHJpYkxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV90ZXhBdHRyaWJMb2NhdGlvbjsgfQogICAgIGludCBtZXNoQXR0
cmliTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX21lc2hBdHRyaWJMb2NhdGlvbjsgfQpAQCAt
NjcsMjEgKzc0LDMyIEBAIHB1YmxpYzoKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTQzNTgKICAgICBpbnQgaW50ZXJuYWxUZXhDb29yZEF0dHJpYkxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFRleENvb3JkQXR0cmliTG9jYXRpb247IH0K
IAotICAgIGludCB1bmlmb3JtTG9jYXRpb25CeU5hbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgCiAg
ICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemVkOyB9
Ci0gICAgCisKKyAgICB2aXJ0dWFsIGludCB1bmlmb3JtTG9jYXRpb25CeU5hbWUoY29uc3QgU3Ry
aW5nJikgPSAwOworICAgIC8vIFRoaXMgY2Fubm90IGJlIGNvbnN0IGJlY2F1c2UgdGhlIEdDM0Qg
aW1wbGVtZW50YXRpb24gbWFrZXMgdGhlIEdMIGNvbnRleHQgY3VycmVudC4KKwogICAgIFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3JhbTsgfQotcHJpdmF0
ZToKLSAgICBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0oUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4sIGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJp
bmcmIHZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKTsKK3Byb3RlY3RlZDoKKyAgICBDdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW0oY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIGNv
bnN0IFN0cmluZyYgdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIpOwogICAgIAotICAgIFBsYXRmb3Jt
M0RPYmplY3QgY29tcGlsZVNoYWRlcihHQzNEZW51bSBzaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcm
IHNoYWRlclN0cmluZyk7Ci0gICAgUGxhdGZvcm0zRE9iamVjdCBsaW5rUHJvZ3JhbShQbGF0Zm9y
bTNET2JqZWN0IHZlcnRleFNoYWRlciwgUGxhdGZvcm0zRE9iamVjdCBmcmFnbWVudFNoYWRlcik7
CisgICAgdmlydHVhbCBQbGF0Zm9ybTNET2JqZWN0IGNvbXBpbGVTaGFkZXIoR0MzRGVudW0gc2hh
ZGVyVHlwZSwgY29uc3QgU3RyaW5nJiBzaGFkZXJTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFsIFBs
YXRmb3JtM0RPYmplY3QgbGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCB2ZXJ0ZXhTaGFkZXIs
IFBsYXRmb3JtM0RPYmplY3QgZnJhZ21lbnRTaGFkZXIpID0gMDsKKyAgICB2aXJ0dWFsIGludCBn
ZXRBdHRyaWJMb2NhdGlvbihjb25zdCBjaGFyKikgPSAwOworICAgIHZpcnR1YWwgaW50IGdldFVu
aWZvcm1Mb2NhdGlvbihjb25zdCBjaGFyKikgPSAwOworCisgICAgdm9pZCBpbml0aWFsaXplKCk7
CiAgICAgdm9pZCBpbml0aWFsaXplUGFyYW1ldGVyTG9jYXRpb25zKCk7Ci0gICAgCi0gICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNHTEVT
MkNvbXBsaWFudCgpIGNvbnN0ID0gMDsKKwogICAgIFBsYXRmb3JtM0RPYmplY3QgbV9wcm9ncmFt
OwotICAgIAorCisgICAgY29uc3QgU3RyaW5nIG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyOworICAg
IGNvbnN0IFN0cmluZyBtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyOworCisgICAgLy8gVGhlIGZv
bGxvd2luZyBhcmUgc2V0IGluIGluaXRpYWxpemVQYXJhbWV0ZXJMb2NhdGlvbnMoKToKICAgICBp
bnQgbV9wb3NpdGlvbkF0dHJpYkxvY2F0aW9uOwogICAgIGludCBtX3RleEF0dHJpYkxvY2F0aW9u
OwogICAgIGludCBtX21lc2hBdHRyaWJMb2NhdGlvbjsKQEAgLTkzLDEzICsxMTEsMzQgQEAgcHJp
dmF0ZToKICAgICBpbnQgbV9zYW1wbGVyTG9jYXRpb247CiAgICAgaW50IG1fc2FtcGxlclNpemVM
b2NhdGlvbjsKICAgICBpbnQgbV9jb250ZW50U2FtcGxlckxvY2F0aW9uOworICAgIGludCBtX2lu
dGVybmFsVGV4QXR0cmliTG9jYXRpb247CiAgICAgLy8gRklYTUU6IEdldCByaWQgb2YgdGhlIGlu
dGVybmFsIHRleCBjb29yZCBhdHRyaWJ1dGUgImNzc19hX3RleENvb3JkIi4KICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNTgKICAgICBpbnQgbV9pbnRl
cm5hbFRleENvb3JkQXR0cmliTG9jYXRpb247Ci0gICAgCisKICAgICBib29sIG1faXNJbml0aWFs
aXplZDsKIH07CiAKK2NsYXNzIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbUdDM0QgOiBwdWJs
aWMgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IGNyZWF0ZShQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIGNv
bnN0IFN0cmluZyYgdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIpOworICAgIH5DdXN0b21GaWx0ZXJD
b21waWxlZFByb2dyYW1HQzNEKCk7Citwcml2YXRlOgorICAgIEN1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbUdDM0QoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIGNvbnN0IFN0cmluZyYg
dmFsaWRhdGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIHZhbGlkYXRlZEZyYWdtZW50U2hh
ZGVyKTsKKyAgICAKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGNvbXBpbGVTaGFkZXIoR0MzRGVudW0g
c2hhZGVyVHlwZSwgY29uc3QgU3RyaW5nJiBzaGFkZXJTdHJpbmcpOworICAgIFBsYXRmb3JtM0RP
YmplY3QgbGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCB2ZXJ0ZXhTaGFkZXIsIFBsYXRmb3Jt
M0RPYmplY3QgZnJhZ21lbnRTaGFkZXIpOworICAgIHZvaWQgZGVsZXRlU2hhZGVyKFBsYXRmb3Jt
M0RPYmplY3QpOworICAgIHZvaWQgaW5pdGlhbGl6ZVBhcmFtZXRlckxvY2F0aW9ucygpOworICAg
IGludCB1bmlmb3JtTG9jYXRpb25CeU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworICAgIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworCisgICAgYm9vbCBpc0dMRVMyQ29t
cGxpYW50KCkgY29uc3Q7CisgICAgaW50IGdldEF0dHJpYkxvY2F0aW9uKGNvbnN0IGNoYXIqKTsK
KyAgICBpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKGNvbnN0IGNoYXIqKTsKK307CisKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJD
b21waWxlZFByb2dyYW1PcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xDb21tb24u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVhODhlZGQ4OWVlMjc0M2UwNWI4YjY0YmU4MjYzZjBmNjBkNzI3ZTEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbU9wZW5HTENvbW1vbi5jcHAKQEAgLTAsMCAr
MSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggaW4gTW90aW9uIExp
bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpICYmIEVOQUJM
RShDU1NfU0hBREVSUykgJiYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUo
V0VCR0wpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xDb21t
b24uaCIKKworI2luY2x1ZGUgIkxheWVyRmlsdGVyUmVuZGVyZXIuaCIKKyNpbmNsdWRlIDx3dGYv
UmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDdXN0
b21GaWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xDb21tb246OkN1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbU9wZW5HTENvbW1vbihjb25zdCBTdHJpbmcmIHZhbGlkYXRlZFZlcnRleFNoYWRlciwg
Y29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRGcmFnbWVudFNoYWRlcikKKyAgICA6IEN1c3RvbUZpbHRl
ckNvbXBpbGVkUHJvZ3JhbSh2YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIHZhbGlkYXRlZEZyYWdtZW50
U2hhZGVyKQoreworICAgIGluaXRpYWxpemUoKTsKK30KKworCitQbGF0Zm9ybTNET2JqZWN0IEN1
c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbU9wZW5HTENvbW1vbjo6Y29tcGlsZVNoYWRlcihHQzNE
ZW51bSBzaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIGNTaGFkZXJTdHJpbmcpCit7CisgICAgUGxh
dGZvcm0zRE9iamVjdCBzaGFkZXIgPSBnbENyZWF0ZVNoYWRlcihzaGFkZXJUeXBlKTsKKworICAg
IFN0cmluZyBzaGFkZXJTdHJpbmcgPSBjU2hhZGVyU3RyaW5nOworCisgICAgY29uc3QgQ1N0cmlu
ZyYgc2hhZGVyQ1N0cmluZyA9IHNoYWRlclN0cmluZy51dGY4KCk7CisKKyAgICBjb25zdCBjaGFy
KiB4ID0gc2hhZGVyQ1N0cmluZy5kYXRhKCk7CisKKyAgICBnbFNoYWRlclNvdXJjZShzaGFkZXIs
IDEsICZ4LCAwKTsKKworICAgIGdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOworCisgICAgaW50IGNv
bXBpbGVkID0gMDsKKyAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR0xfQ09NUElMRV9TVEFUVVMs
ICZjb21waWxlZCk7CisgICAgaWYgKCFjb21waWxlZCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gc2hhZGVyOworfQorCitQbGF0Zm9ybTNET2JqZWN0IEN1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbU9wZW5HTENvbW1vbjo6bGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCB2ZXJ0
ZXhTaGFkZXIsIFBsYXRmb3JtM0RPYmplY3QgZnJhZ21lbnRTaGFkZXIpCit7CisgICAgUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtID0gZ2xDcmVhdGVQcm9ncmFtKCk7CisgICAgZ2xBdHRhY2hTaGFk
ZXIocHJvZ3JhbSwgdmVydGV4U2hhZGVyKTsKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBm
cmFnbWVudFNoYWRlcik7CisgICAgZ2xMaW5rUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIGludCBs
aW5rZWQgPSAwOworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAm
bGlua2VkKTsKKyAgICBpZiAoIWxpbmtlZCkgeworICAgICAgICAvLyBGSVhNRTogSW52YWxpZCB2
ZXJ0ZXgvZnJhZ21lbnQgc2hhZGVyIGNvbWJpbmF0aW9uLiBUaHJvdyBzb21lIGVycm9ycyBoZXJl
LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0
MTYKKyAgICAgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICByZXR1cm4gcHJvZ3JhbTsKK30KKwordm9pZCBDdXN0b21GaWx0ZXJDb21w
aWxlZFByb2dyYW1PcGVuR0xDb21tb246OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlcikKK3sKKyAgICBnbERlbGV0ZVNoYWRlcihzaGFkZXIpOworfQorCitpbnQgQ3VzdG9tRmls
dGVyQ29tcGlsZWRQcm9ncmFtT3BlbkdMQ29tbW9uOjpnZXRBdHRyaWJMb2NhdGlvbihjb25zdCBj
aGFyKiBuYW1lKQoreworICAgIHJldHVybiBnbEdldEF0dHJpYkxvY2F0aW9uKG1fcHJvZ3JhbSwg
bmFtZSk7Cit9CisKK2ludCBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xDb21tb246
OmdldFVuaWZvcm1Mb2NhdGlvbihjb25zdCBjaGFyKiBuYW1lKQoreworICAgIHJldHVybiBnbEdl
dFVuaWZvcm1Mb2NhdGlvbihtX3Byb2dyYW0sIG5hbWUpOworfQorCitpbnQgQ3VzdG9tRmlsdGVy
Q29tcGlsZWRQcm9ncmFtT3BlbkdMQ29tbW9uOjp1bmlmb3JtTG9jYXRpb25CeU5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIC8vIEZJWE1FOiBJbXByb3ZlIHRoaXMgYnkgY2FjaGluZyB0
aGUgdW5pZm9ybSBsb2NhdGlvbnMuCisgICAgcmV0dXJuIGdsR2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0oKSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKK30KKworQ3VzdG9tRmlsdGVyQ29tcGlsZWRQ
cm9ncmFtT3BlbkdMQ29tbW9uOjp+Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtT3BlbkdMQ29t
bW9uKCkKK3sKKyAgICBpZiAocHJvZ3JhbSgpKQorICAgICAgICBnbERlbGV0ZVByb2dyYW0ocHJv
Z3JhbSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUExBVEZP
Uk0oQkxBQ0tCRVJSWSkgJiYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpICYmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtT3Bl
bkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbU9wZW5HTENvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhM2Jj
NzFjNjE5OTA1MzI0MWNiNDM4MmJiYmRlYzZiNjI0OTk4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbU9wZW5HTENvbW1vbi5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgUmVzZWFyY2ggaW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KA
nSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisg
KiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJD
b21waWxlZFByb2dyYW0uaCIKKworI2lmbmRlZiBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1P
cGVuR0xDb21tb25faAorI2RlZmluZSBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xD
b21tb25faAorCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkgJiYgRU5BQkxFKENTU19TSEFERVJT
KSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShXRUJHTCkKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCisvLyBVbmxpa2UgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFt
R0MzRCwgQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtT3BlbkdMQ29tbW9uIGNhbiBvbmx5IGJl
IHVzZWQgZnJvbSB0aGUgbGF5ZXIgY29tcG9zaXRpbmcgdGhyZWFkCisvLyBmcm9tIHRoZSBjb3Jy
ZWN0IGxheWVyIGNvbnRleHQuCisKK2NsYXNzIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbU9w
ZW5HTENvbW1vbiA6IHB1YmxpYyBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIHZh
bGlkYXRlZEZyYWdtZW50U2hhZGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xDb21tb24odmFsaWRhdGVkVmVydGV4
U2hhZGVyLCB2YWxpZGF0ZWRGcmFnbWVudFNoYWRlcikpOworICAgIH0KKworICAgIH5DdXN0b21G
aWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xDb21tb24oKTsKKworICAgIHZpcnR1YWwgaW50IHVu
aWZvcm1Mb2NhdGlvbkJ5TmFtZShjb25zdCBTdHJpbmcmKTsKKworICAgIHZpcnR1YWwgYm9vbCBp
c0dMRVMyQ29tcGxpYW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorICAg
IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbU9wZW5HTENvbW1vbihjb25zdCBTdHJpbmcmIHZh
bGlkYXRlZFZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiB2YWxpZGF0ZWRGcmFnbWVudFNoYWRl
cik7CisKKyAgICB2aXJ0dWFsIFBsYXRmb3JtM0RPYmplY3QgY29tcGlsZVNoYWRlcihHQzNEZW51
bSBzaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIHNoYWRlclN0cmluZyk7CisgICAgdmlydHVhbCBQ
bGF0Zm9ybTNET2JqZWN0IGxpbmtQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgdmVydGV4U2hhZGVy
LCBQbGF0Zm9ybTNET2JqZWN0IGZyYWdtZW50U2hhZGVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QpOworICAgIHZpcnR1YWwgaW50IGdldEF0dHJpYkxv
Y2F0aW9uKGNvbnN0IGNoYXIqIG5hbWUpOworICAgIHZpcnR1YWwgaW50IGdldFVuaWZvcm1Mb2Nh
dGlvbihjb25zdCBjaGFyKiBuYW1lKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFBMQVRGT1JNKEJMQUNLQkVSUlkpICYmIEVOQUJMRShDU1NfU0hBREVSUykgJiYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNlbmRpZiAv
LyBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xDb21tb25faApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9i
YWxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAKaW5kZXggZTAxNDRiOTA1NmIwMTlkYWQ0MGU1
YTI0YjQ5YjkwYWRhYzI1MWRkYS4uMGE3OWVjNGNkMjk5NTM5YTQ2ZWZjNDM1YzVkODI4MWVlNWM3
NTQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwCkBAIC0z
NSw2ICszNSwxMCBAQAogI2luY2x1ZGUgIkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJS
WSkKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xDb21tb24uaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEN1c3RvbUZpbHRlckdsb2JhbENvbnRl
eHQ6OkN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQoKQpAQCAtNzIsNiArNzYsNyBAQCBQYXNzT3du
UHRyPEFOR0xFV2ViS2l0QnJpZGdlPiBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpjcmVhdGVT
aGFkZXJWYWxpZGF0b3IoUwogCiB2b2lkIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OnByZXBh
cmVDb250ZXh0SWZOZWVkZWQoSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKKyNpZiAhUExBVEZP
Uk0oQkxBQ0tCRVJSWSkKICAgICBpZiAobV9jb250ZXh0LmdldCgpKQogICAgICAgICByZXR1cm47
CiAKQEAgLTgzLDEyICs4OCwxNSBAQCB2b2lkIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OnBy
ZXBhcmVDb250ZXh0SWZOZWVkZWQoSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKICAgICAgICAgcmV0
dXJuOwogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgbV9jb250ZXh0
LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1RFU1QpOworI2VuZGlmCiB9CiAKIFBh
c3NSZWZQdHI8Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbT4gQ3VzdG9tRmlsdGVyR2xvYmFs
Q29udGV4dDo6Z2V0VmFsaWRhdGVkUHJvZ3JhbShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5m
byYgcHJvZ3JhbUluZm8pCiB7CisjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgLy8gQ2hl
Y2sgdGhhdCB0aGUgY29udGV4dCBpcyBhbHJlYWR5IHByZXBhcmVkLgogICAgIEFTU0VSVChtX2Nv
bnRleHQpOworI2VuZGlmCiAKICAgICBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtc01hcDo6
aXRlcmF0b3IgaXRlciA9IG1fcHJvZ3JhbXMuZmluZChwcm9ncmFtSW5mbyk7CiAgICAgaWYgKGl0
ZXIgIT0gbV9wcm9ncmFtcy5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250
ZXh0LmgKaW5kZXggYWUwMjcxZjFjYTJiY2I1MWQwYjY1NGFhMThhNWJkN2U2ZTg4OTM4My4uMGY3
NWI5Njc4NTNlMjFhZTczZjkzNDgyYjlkODIzYWNmMDg0NGZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJHbG9iYWxDb250ZXh0LmgKQEAgLTQ5LDcgKzQ5LDkgQEAgcHVibGljOgogICAgIEN1
c3RvbUZpbHRlckdsb2JhbENvbnRleHQoKTsKICAgICB+Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4
dCgpOwogICAgIAorI2lmICFQTEFURk9STShCTEFDS0JFUlJZKQogICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisjZW5kaWYK
IAogICAgIC8vIENTUyBzaGFkZXJzIG5vdCByZWZlcmVuY2VkIGZyb20gdGhlIENTUyBtaXggZnVu
Y3Rpb24gc2hvdWxkIGJlIHZhbGlkYXRlZCBqdXN0IGxpa2UgcmVndWxhciBXZWJHTCBzaGFkZXJz
LgogICAgIC8vIFRoaXMgQU5HTEUgdmFsaWRhdG9yIHVzZXMgdGhlIFNIX1dFQkdMX1NQRUMgZmxh
Zy4KQEAgLTcyLDcgKzc0LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgUGFzc093
blB0cjxBTkdMRVdlYktpdEJyaWRnZT4gY3JlYXRlU2hhZGVyVmFsaWRhdG9yKFNoU2hhZGVyU3Bl
Yyk7CiAKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IG1fY29udGV4dDsKKyNlbmRpZgogICAgIE93blB0cjxBTkdMRVdlYktpdEJyaWRnZT4g
bV93ZWJnbFNoYWRlclZhbGlkYXRvcjsKICAgICBPd25QdHI8QU5HTEVXZWJLaXRCcmlkZ2U+IG1f
bWl4U2hhZGVyVmFsaWRhdG9yOwogICAgIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW1zTWFw
IG1fcHJvZ3JhbXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcAppbmRleCBlMDE0ZjBhMDY0NDI2
N2IzYzUzYTc3MWMzM2I5MmVjMDU0NzllMDU5Li44ZmZlMDVkOTc0Y2E1ZTQyMzI2NWMyMGYyNGRh
NGU1MDg1YWVlMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAKQEAgLTIzMywzNiArMjMz
LDY0IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fbWVzaEJveDsKIH07CiAKLUN1c3RvbUZp
bHRlck1lc2g6OkN1c3RvbUZpbHRlck1lc2goR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVu
c2lnbmVkIGNvbHVtbnMsIHVuc2lnbmVkIHJvd3MsIAorQ3VzdG9tRmlsdGVyTWVzaDo6Q3VzdG9t
RmlsdGVyTWVzaCh1bnNpZ25lZCBjb2x1bW5zLCB1bnNpZ25lZCByb3dzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJlY3QmIG1lc2hCb3gsIEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUpCi0gICAgOiBtX2NvbnRleHQoY29udGV4
dCkKLSAgICAsIG1fdmVydGljZXNCdWZmZXJPYmplY3QoMCkKKyAgICA6IG1fdmVydGljZXNCdWZm
ZXJPYmplY3QoMCkKICAgICAsIG1fZWxlbWVudHNCdWZmZXJPYmplY3QoMCkKICAgICAsIG1fbWVz
aEJveChtZXNoQm94KQogICAgICwgbV9tZXNoVHlwZShtZXNoVHlwZSkKKyAgICAsIG1fY29sdW1u
cyhjb2x1bW5zKQorICAgICwgbV9yb3dzKHJvd3MpCiB7Ci0gICAgTWVzaEdlbmVyYXRvciBnZW5l
cmF0b3IoY29sdW1ucywgcm93cywgbWVzaEJveCwgbWVzaFR5cGUpOworICAgIC8vIFRvIGF2b2lk
IGNhbGxpbmcgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucywgY2FsbCBpbml0aWFsaXplKCk7IGZyb20g
Y2hpbGQgY29uc3RydWN0b3IKK30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNoOjppbml0aWFsaXpl
KCkKK3sKKyAgICBNZXNoR2VuZXJhdG9yIGdlbmVyYXRvcihtX2NvbHVtbnMsIG1fcm93cywgbV9t
ZXNoQm94LCBtX21lc2hUeXBlKTsKICAgICBtX2luZGljZXNDb3VudCA9IGdlbmVyYXRvci5pbmRp
Y2VzQ291bnQoKTsKLSAgICBtX2J5dGVzUGVyVmVydGV4ID0gZ2VuZXJhdG9yLmZsb2F0c1BlclZl
cnRleCgpICogc2l6ZW9mKGZsb2F0KTsgICAgCisgICAgbV9ieXRlc1BlclZlcnRleCA9IGdlbmVy
YXRvci5mbG9hdHNQZXJWZXJ0ZXgoKSAqIHNpemVvZihmbG9hdCk7CiAKLSAgICBtX2NvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIG1fdmVydGljZXNCdWZmZXJPYmplY3QgPSBjcmVh
dGVCdWZmZXIoKTsKKyAgICBiaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZG
RVIsIG1fdmVydGljZXNCdWZmZXJPYmplY3QpOworICAgIGJ1ZmZlckRhdGEoR3JhcGhpY3NDb250
ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgZ2VuZXJhdG9yLnZlcnRpY2VzKCkuc2l6ZSgpICogc2l6ZW9m
KGZsb2F0KSwgZ2VuZXJhdG9yLnZlcnRpY2VzKCkuZGF0YSgpLCBHcmFwaGljc0NvbnRleHQzRDo6
U1RBVElDX0RSQVcpOwogCi0gICAgbV92ZXJ0aWNlc0J1ZmZlck9iamVjdCA9IG1fY29udGV4dC0+
Y3JlYXRlQnVmZmVyKCk7Ci0gICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpBUlJBWV9CVUZGRVIsIG1fdmVydGljZXNCdWZmZXJPYmplY3QpOwotICAgIG1fY29udGV4
dC0+YnVmZmVyRGF0YShHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBnZW5lcmF0b3Iu
dmVydGljZXMoKS5zaXplKCkgKiBzaXplb2YoZmxvYXQpLCBnZW5lcmF0b3IudmVydGljZXMoKS5k
YXRhKCksIEdyYXBoaWNzQ29udGV4dDNEOjpTVEFUSUNfRFJBVyk7Ci0gICAgCi0gICAgbV9lbGVt
ZW50c0J1ZmZlck9iamVjdCA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCk7Ci0gICAgbV9jb250
ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiwg
bV9lbGVtZW50c0J1ZmZlck9iamVjdCk7Ci0gICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdyYXBo
aWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUiwgZ2VuZXJhdG9yLmluZGljZXMoKS5z
aXplKCkgKiBzaXplb2YodWludDE2X3QpLCBnZW5lcmF0b3IuaW5kaWNlcygpLmRhdGEoKSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKTsKKyAgICBtX2VsZW1lbnRzQnVmZmVyT2JqZWN0
ID0gY3JlYXRlQnVmZmVyKCk7CisgICAgYmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RUxF
TUVOVF9BUlJBWV9CVUZGRVIsIG1fZWxlbWVudHNCdWZmZXJPYmplY3QpOworICAgIGJ1ZmZlckRh
dGEoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBnZW5lcmF0b3IuaW5k
aWNlcygpLnNpemUoKSAqIHNpemVvZih1aW50MTZfdCksIGdlbmVyYXRvci5pbmRpY2VzKCkuZGF0
YSgpLCBHcmFwaGljc0NvbnRleHQzRDo6U1RBVElDX0RSQVcpOworfQorCitDdXN0b21GaWx0ZXJN
ZXNoR0MzRDo6Q3VzdG9tRmlsdGVyTWVzaEdDM0QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IHVuc2lnbmVkIGNvbHVtbnMsIHVuc2lnbmVkIHJvd3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkKKyAgICA6IEN1c3RvbUZpbHRlck1lc2goY29sdW1ucywg
cm93cywgbWVzaEJveCwgbWVzaFR5cGUpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKK3sKKyAg
ICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGluaXRpYWxpemUoKTsKIH0K
IAotQ3VzdG9tRmlsdGVyTWVzaDo6fkN1c3RvbUZpbHRlck1lc2goKQorQ3VzdG9tRmlsdGVyTWVz
aEdDM0Q6On5DdXN0b21GaWx0ZXJNZXNoR0MzRCgpCiB7CiAgICAgbV9jb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKTsKICAgICBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihtX3ZlcnRpY2VzQnVm
ZmVyT2JqZWN0KTsKICAgICBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihtX2VsZW1lbnRzQnVmZmVy
T2JqZWN0KTsKIH0KIAordW5zaWduZWQgQ3VzdG9tRmlsdGVyTWVzaEdDM0Q6OmNyZWF0ZUJ1ZmZl
cigpCit7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCk7Cit9CisKK3ZvaWQg
Q3VzdG9tRmlsdGVyTWVzaEdDM0Q6OmJpbmRCdWZmZXIoaW50IHRhcmdldCwgdW5zaWduZWQgYnVm
ZmVyKQoreworICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7Cit9CisK
K3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdDM0Q6OmJ1ZmZlckRhdGEoaW50IHRhcmdldCwgc2lnbmVk
IGxvbmcgaW50IHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIGludCB1c2FnZSkKK3sKKyAgICBtX2Nv
bnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNF
KDNEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaAppbmRleCBlM2M3YTZiYWM3ODcxNGE1
MGRlZDUxZDIzYmM2NzE3NGZiOTEzNWI1Li42MmZlYzRhMWM0NDhmMmNhMDZhNWVkZWRhYjY5Y2U4
NjRkNDgxYWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaApAQCAtNDEsMzYgKzQxLDYyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKKy8vIFNlZSBu
b3RlIGluIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbSBhYm91dCB0aGUgdHdvIHR5cGVzIG9m
CisvLyBgQ3VzdG9tRmlsdGVyTWVzaGBlcy4KKwogY2xhc3MgQ3VzdG9tRmlsdGVyTWVzaCA6IHB1
YmxpYyBSZWZDb3VudGVkPEN1c3RvbUZpbHRlck1lc2g+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJNZXNoPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIHVuc2lnbmVkIGNvbHMsIHVuc2lnbmVkIHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVz
aEJveCwgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRmlsdGVyTWVzaChjb250ZXh0LCBjb2xz
LCByb3dzLCBtZXNoQm94LCBtZXNoVHlwZSkpOwotICAgIH0KLSAgICB+Q3VzdG9tRmlsdGVyTWVz
aCgpOwotCiAgICAgUGxhdGZvcm0zRE9iamVjdCB2ZXJ0aWNlc0J1ZmZlck9iamVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fdmVydGljZXNCdWZmZXJPYmplY3Q7IH0KICAgICB1bnNpZ25lZCBieXRlc1Bl
clZlcnRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZXNQZXJWZXJ0ZXg7IH0KLSAgICAKKwogICAg
IFBsYXRmb3JtM0RPYmplY3QgZWxlbWVudHNCdWZmZXJPYmplY3QoKSBjb25zdCB7IHJldHVybiBt
X2VsZW1lbnRzQnVmZmVyT2JqZWN0OyB9CiAgICAgdW5zaWduZWQgaW5kaWNlc0NvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9pbmRpY2VzQ291bnQ7IH0KLSAgICAKKwogICAgIGNvbnN0IEZsb2F0UmVj
dCYgbWVzaEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaEJveDsgfQogICAgIEN1c3RvbUZpbHRl
ck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUoKSBjb25zdCB7IHJldHVybiBtX21lc2hUeXBl
OyB9CiAKLXByaXZhdGU6Ci0gICAgQ3VzdG9tRmlsdGVyTWVzaChHcmFwaGljc0NvbnRleHQzRCos
IHVuc2lnbmVkIGNvbHMsIHVuc2lnbmVkIHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwg
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSk7Ci0gICAgCi0gICAgR3JhcGhpY3NDb250
ZXh0M0QqIG1fY29udGV4dDsKLSAgICAKKyAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29sdW1uczsgfQorICAgIHVuc2lnbmVkIHJvd0NvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9yb3dzOyB9CisKKyAgICB2aXJ0dWFsIH5DdXN0b21GaWx0ZXJNZXNoKCkgeyB9Citw
cm90ZWN0ZWQ6CisgICAgQ3VzdG9tRmlsdGVyTWVzaCh1bnNpZ25lZCBjb2xzLCB1bnNpZ25lZCBy
b3dzLCBjb25zdCBGbG9hdFJlY3QmIG1lc2hCb3gsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVz
aFR5cGUpOworCisgICAgdm9pZCBpbml0aWFsaXplKCk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBj
cmVhdGVCdWZmZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJpbmRCdWZmZXIoaW50IHRhcmdl
dCwgdW5zaWduZWQgYnVmZmVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJ1ZmZlckRhdGEoaW50
IHRhcmdldCwgc2lnbmVkIGxvbmcgaW50IHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIGludCB1c2Fn
ZSkgPSAwOworCisgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgYXNzaWduZWQgaW4gdGhlIGNoaWxk
IGNvbnN0cnVjdG9yOgogICAgIFBsYXRmb3JtM0RPYmplY3QgbV92ZXJ0aWNlc0J1ZmZlck9iamVj
dDsKICAgICB1bnNpZ25lZCBtX2J5dGVzUGVyVmVydGV4OwotICAgIAorCiAgICAgUGxhdGZvcm0z
RE9iamVjdCBtX2VsZW1lbnRzQnVmZmVyT2JqZWN0OwogICAgIHVuc2lnbmVkIG1faW5kaWNlc0Nv
dW50OwotICAgIAorCiAgICAgRmxvYXRSZWN0IG1fbWVzaEJveDsKICAgICBDdXN0b21GaWx0ZXJP
cGVyYXRpb246Ok1lc2hUeXBlIG1fbWVzaFR5cGU7CisKKyAgICBpbnQgbV9jb2x1bW5zOworICAg
IGludCBtX3Jvd3M7Cit9OworCitjbGFzcyBDdXN0b21GaWx0ZXJNZXNoR0MzRCA6IHB1YmxpYyBD
dXN0b21GaWx0ZXJNZXNoIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21G
aWx0ZXJNZXNoR0MzRD4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25l
ZCBjb2xzLCB1bnNpZ25lZCByb3dzLCBjb25zdCBGbG9hdFJlY3QmIG1lc2hCb3gsIEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlck1lc2hHQzNEKGNvbnRleHQsIGNvbHMsIHJvd3MsIG1l
c2hCb3gsIG1lc2hUeXBlKSk7CisgICAgfQorICAgIH5DdXN0b21GaWx0ZXJNZXNoR0MzRCgpOwor
Citwcml2YXRlOgorICAgIEN1c3RvbUZpbHRlck1lc2hHQzNEKEdyYXBoaWNzQ29udGV4dDNEKiwg
dW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBD
dXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlKTsKKworICAgIHZpcnR1YWwgdW5zaWduZWQg
Y3JlYXRlQnVmZmVyKCk7CisgICAgdmlydHVhbCB2b2lkIGJpbmRCdWZmZXIoaW50IHRhcmdldCwg
dW5zaWduZWQgYnVmZmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShpbnQgdGFyZ2V0
LCBzaWduZWQgbG9uZyBpbnQgb2Zmc2V0LCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgdXNhZ2UpOwor
CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyTWVzaE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hPcGVuR0xDb21tb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU5YmM4YjlhYzA4ODQ0NjVmY2I3OWFkMjJjMjZjODdlZDdlYmEwMGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck1lc2hPcGVuR0xDb21tb24uY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggaW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDi
gJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBC
RQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpICYmIEVOQUJMRShDU1NfU0hBREVSUykg
JiYgRU5BQkxFKFdFQkdMKQorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyTWVzaE9wZW5HTENvbW1v
bi5oIgorCisjaW5jbHVkZSAiTGF5ZXJGaWx0ZXJSZW5kZXJlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0xpc3RIYXNoU2V0PEN1c3RvbUZpbHRlck1lc2hPcGVuR0xDb21tb24qPiBDdXN0
b21GaWx0ZXJNZXNoT3BlbkdMQ29tbW9uOjpzX3NldDsKKworQ3VzdG9tRmlsdGVyTWVzaE9wZW5H
TENvbW1vbjo6Q3VzdG9tRmlsdGVyTWVzaE9wZW5HTENvbW1vbihMYXllckZpbHRlclJlbmRlcmVy
KiBmaWx0ZXJSZW5kZXJlciwgdW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0
b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQorICAgIDogQ3VzdG9tRmlsdGVy
TWVzaChjb2xzLCByb3dzLCBtZXNoQm94LCBtZXNoVHlwZSkKKyAgICAsIG1fZmlsdGVyUmVuZGVy
ZXIoZmlsdGVyUmVuZGVyZXIpCit7CisgICAgc19zZXQuYWRkKHRoaXMpOworICAgIGluaXRpYWxp
emUoKTsKK30KKworQ3VzdG9tRmlsdGVyTWVzaE9wZW5HTENvbW1vbjo6fkN1c3RvbUZpbHRlck1l
c2hPcGVuR0xDb21tb24oKQoreworICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbV92ZXJ0aWNlc0J1
ZmZlck9iamVjdCk7CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtX2VsZW1lbnRzQnVmZmVyT2Jq
ZWN0KTsKKworICAgIHNfc2V0LnJlbW92ZSh0aGlzKTsKK30KKwordW5zaWduZWQgQ3VzdG9tRmls
dGVyTWVzaE9wZW5HTENvbW1vbjo6Y3JlYXRlQnVmZmVyKCkKK3sKKyAgICBHTHVpbnQgbyA9IDA7
CisgICAgZ2xHZW5CdWZmZXJzKDEsICZvKTsKKworICAgIHJldHVybiBvOworfQorCit2b2lkIEN1
c3RvbUZpbHRlck1lc2hPcGVuR0xDb21tb246OmJpbmRCdWZmZXIoaW50IHRhcmdldCwgdW5zaWdu
ZWQgYnVmZmVyKQoreworICAgIGdsQmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7Cit9CisKK3Zv
aWQgQ3VzdG9tRmlsdGVyTWVzaE9wZW5HTENvbW1vbjo6YnVmZmVyRGF0YShpbnQgdGFyZ2V0LCBz
aWduZWQgbG9uZyBpbnQgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgaW50IHVzYWdlKQoreworICAg
IGdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKK30KKworfSAvLyBXZWJD
b3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShCTEFDS0JFUlJZKSAmJiBFTkFCTEUoQ1NTX1NIQURF
UlMpICYmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaE9wZW5HTENvbW1vbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoT3BlbkdM
Q29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQzZmRiNzM2ODRkNmFiYTUwYmZkMDkzZTQyZGU1ZTgxZTFh
NTA2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaE9wZW5HTENvbW1vbi5oCkBAIC0wLDAgKzEsNzcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggaW4gTW90aW9uIExpbWl0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgor
ICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
Q3VzdG9tRmlsdGVyTWVzaE9wZW5HTENvbW1vbl9oCisjZGVmaW5lIEN1c3RvbUZpbHRlck1lc2hP
cGVuR0xDb21tb25faAorCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkgJiYgRU5BQkxFKENTU19T
SEFERVJTKSAmJiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJNZXNoLmgi
CisKKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBMYXllckZpbHRlclJlbmRlcmVyOworCitjbGFzcyBDdXN0b21GaWx0ZXJNZXNoT3Bl
bkdMQ29tbW9uIDogcHVibGljIEN1c3RvbUZpbHRlck1lc2ggeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck1lc2hPcGVuR0xDb21tb24+IGdldChMYXllckZpbHRl
clJlbmRlcmVyKiBmaWx0ZXJSZW5kZXJlciwgdW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywg
Y29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBl
IG1lc2hUeXBlKQorICAgIHsKKyAgICAgICAgZm9yIChMaXN0SGFzaFNldDxDdXN0b21GaWx0ZXJN
ZXNoT3BlbkdMQ29tbW9uKj46Oml0ZXJhdG9yIGl0ID0gc19zZXQuYmVnaW4oKTsgaXQgIT0gc19z
ZXQuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmICgoKml0KS0+ZmlsdGVyUmVuZGVyZXIo
KSA9PSBmaWx0ZXJSZW5kZXJlciAmJiAoKml0KS0+Y29sdW1uQ291bnQoKSA9PSBjb2xzICYmICgq
aXQpLT5yb3dDb3VudCgpID09IHJvd3MgJiYgKCppdCktPm1lc2hCb3goKSA9PSBtZXNoQm94KQor
ICAgICAgICAgICAgICAgIHJldHVybiAqaXQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDdXN0b21GaWx0ZXJNZXNoT3BlbkdMQ29tbW9uKGZpbHRlclJlbmRlcmVyLCBj
b2xzLCByb3dzLCBtZXNoQm94LCBtZXNoVHlwZSkpOworICAgIH0KKyAgICB+Q3VzdG9tRmlsdGVy
TWVzaE9wZW5HTENvbW1vbigpOworCitwcm90ZWN0ZWQ6CisgICAgTGF5ZXJGaWx0ZXJSZW5kZXJl
ciogZmlsdGVyUmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclJlbmRlcmVyOyB9CisK
K3ByaXZhdGU6CisgICAgLy8gVW5saWtlIEN1c3RvbUZpbHRlck1lc2hHQzNELCBDdXN0b21GaWx0
ZXJNZXNoT3BlbkdMQ29tbW9uIGNhbiBvbmx5IGJlIHVzZWQgZnJvbSBhICh1bmlxdWUpIGxheWVy
IGNvbXBvc2l0aW5nIHRocmVhZAorICAgIC8vIGFuZCB0aHVzIG11c3QgYmUgb3duZWQgYnkgYSBm
aWx0ZXJSZW5kZXJlci4KKyAgICBMYXllckZpbHRlclJlbmRlcmVyKiBtX2ZpbHRlclJlbmRlcmVy
OworCisgICAgQ3VzdG9tRmlsdGVyTWVzaE9wZW5HTENvbW1vbihMYXllckZpbHRlclJlbmRlcmVy
KiwgdW5zaWduZWQgY29scywgdW5zaWduZWQgcm93cywgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94
LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlKTsKKworICAgIHZpcnR1YWwgdW5zaWdu
ZWQgY3JlYXRlQnVmZmVyKCk7CisgICAgdmlydHVhbCB2b2lkIGJpbmRCdWZmZXIoaW50IHRhcmdl
dCwgdW5zaWduZWQgYnVmZmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShpbnQgdGFy
Z2V0LCBzaWduZWQgbG9uZyBpbnQgb2Zmc2V0LCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgdXNhZ2Up
OworCisgICAgc3RhdGljIExpc3RIYXNoU2V0PEN1c3RvbUZpbHRlck1lc2hPcGVuR0xDb21tb24q
PiBzX3NldDsKK307CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKEJMQUNLQkVSUlkpICYmIEVO
QUJMRShDU1NfU0hBREVSUykgJiYgRU5BQkxFKFdFQkdMKQorCisjZW5kaWYgLy8gQ3VzdG9tRmls
dGVyTWVzaE9wZW5HTENvbW1vbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAppbmRl
eCBiNGU4YjI5MzYwYjg1Nzg5ODA5MWNjZWQxYmM1NzgwYmNmNzliMzc0Li5kYTkzNDAxMjhlOTUy
NzIzZjc4NGI1MDI2Nzk0MGEzMDVhY2U2YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIAogICAgIEN1c3RvbUZpbHRlclBy
b2dyYW0qIHByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW0uZ2V0KCk7IH0KICAgICAK
LSAgICBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0ZXJzKCkgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzOyB9CisgICAgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYg
cGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogICAgIAogICAgIHVu
c2lnbmVkIG1lc2hSb3dzKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoUm93czsgfQogICAgIHVuc2ln
bmVkIG1lc2hDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQ29sdW1uczsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKaW5kZXggZDFjZjYxMzRmNzBhZThhYmY1MmZjNjIzYTdk
Njk2NTM0ODc5ZjYxMi4uYjk5ODg4YjA2ZWY2MGU1YTgwYWQ5ZjU0MGEzODlmOTk1NGJkMTg1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwCkBAIC0zNiw2ICszNiwxMCBAQAogI2lu
Y2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQuaCIKICNpbmNsdWRlICJDdXN0b21GaWx0
ZXJQcm9ncmFtSW5mby5oIgogCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKKyNpbmNsdWRlICJD
dXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1PcGVuR0xDb21tb24uaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEN1c3RvbUZpbHRlclByb2dyYW06OkN1c3RvbUZpbHRlclByb2dy
YW0oQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQ
cm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclByb2dyYW0uaAppbmRleCBlZjE5ZGZiODMwMmJjYzQ4YTNmNmFhNTEyNWQzN2I4YTI2
OWJkZDM3Li5hNjFmNjIyYzU5NzdjYzZhOWRiMmMwZjJiMDU0ZWZmNDRjZjNlYzAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclByb2dyYW0uaApAQCAtMzgsNiArMzgsMTEgQEAKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExB
VEZPUk0oQkxBQ0tCRVJSWSkKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDNEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRh
dGVkUHJvZ3JhbS5jcHAKaW5kZXggOTk2NGM1YzdmNmNhNmU0MTBkNTZhMjBkOTk0YjE5OTk1N2M2
MzAzNi4uNTI5ZDNkYmNmYTU2MTMwODY2N2MyOGY5MGEyMmIyM2ExMGZkYWEyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJW
YWxpZGF0ZWRQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwCkBAIC0xMDQsNyArMTA0
LDExIEBAIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBDdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtOjpjb21waWxlZFByCiB7CiAgICAgQVNTRVJUKG1faXNJbml0aWFs
aXplZCAmJiAhbV92YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIuaXNOdWxsKCkgJiYgIW1fdmFsaWRhdGVk
RnJhZ21lbnRTaGFkZXIuaXNOdWxsKCkpOwogICAgIGlmICghbV9jb21waWxlZFByb2dyYW0pCi0g
ICAgICAgIG1fY29tcGlsZWRQcm9ncmFtID0gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpj
cmVhdGUobV9nbG9iYWxDb250ZXh0LT5jb250ZXh0KCksIG1fdmFsaWRhdGVkVmVydGV4U2hhZGVy
LCBtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKTsKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQor
ICAgICAgICBtX2NvbXBpbGVkUHJvZ3JhbSA9IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbU9w
ZW5HTENvbW1vbjo6Y3JlYXRlKG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBtX3ZhbGlkYXRlZEZy
YWdtZW50U2hhZGVyKTsKKyNlbHNlCisgICAgICAgIG1fY29tcGlsZWRQcm9ncmFtID0gQ3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtR0MzRDo6Y3JlYXRlKG1fZ2xvYmFsQ29udGV4dC0+Y29udGV4
dCgpLCBtX3ZhbGlkYXRlZFZlcnRleFNoYWRlciwgbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlcik7
CisjZW5kaWYKICAgICByZXR1cm4gbV9jb21waWxlZFByb2dyYW07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZp
bHRlci5jcHAKaW5kZXggZmI2N2UyMjAwMzJiMWYxNmU3MmMzOWFhYWE3ZmE3ODUxY2EwMTY3Mi4u
MjI5MTgxNDMyNDJjNzY4NjJiMDllZjA1ZjkzMzg4YWEzNTNiOGQ3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZp
bHRlci5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYg
RU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCisjaWYgRU5BQkxFKENTU19T
SEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpICYmICFQTEFURk9STShCTEFDS0JFUlJZKQogI2lu
Y2x1ZGUgIkZFQ3VzdG9tRmlsdGVyLmgiCiAKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJDb21waWxl
ZFByb2dyYW0uaCIKQEAgLTE2NywxMSArMTY3LDkgQEAgYm9vbCBGRUN1c3RvbUZpbHRlcjo6YXBw
bHlTaGFkZXIoKQogICAgIGlmICghaGFkQ29udGV4dCB8fCBtX2NvbnRleHRTaXplICE9IG5ld0Nv
bnRleHRTaXplKQogICAgICAgICByZXNpemVDb250ZXh0KG5ld0NvbnRleHRTaXplKTsKIAotI2lm
ICFQTEFURk9STShCTEFDS0JFUlJZKSAvLyBCbGFja0JlcnJ5IGRlZmluZXMgaXRzIG93biBUZXh0
dXJlIGNsYXNzLgogICAgIC8vIERvIG5vdCBkcmF3IHRoZSBmaWx0ZXIgaWYgdGhlIGlucHV0IGlt
YWdlIGNhbm5vdCBmaXQgaW5zaWRlIGEgc2luZ2xlIEdQVSB0ZXh0dXJlLgogICAgIGlmIChtX2lu
cHV0VGV4dHVyZS0+dGlsZXMoKS5udW1UaWxlc1goKSAhPSAxIHx8IG1faW5wdXRUZXh0dXJlLT50
aWxlcygpLm51bVRpbGVzWSgpICE9IDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgog
ICAgIAogICAgIC8vIFRoZSBzaGFkZXIgaGFkIGNvbXBpbGVyIGVycm9ycy4gV2UgY2Fubm90IGRy
YXcgYW55dGhpbmcuCiAgICAgaWYgKCFtX2NvbXBpbGVkUHJvZ3JhbS0+aXNJbml0aWFsaXplZCgp
KQpAQCAtMjA1LDE5ICsyMDMsMTUgQEAgYm9vbCBGRUN1c3RvbUZpbHRlcjo6aW5pdGlhbGl6ZUNv
bnRleHQoKQogICAgIC8vIEZJWE1FOiBTaGFyaW5nIHRoZSBtZXNoIHdvdWxkIGp1c3Qgc2F2ZSB0
aGUgdGltZSBuZWVkZWQgdG8gdXBsb2FkIGl0IHRvIHRoZSBHUFUsIHNvIEkgYXNzdW1lIHdlIGNv
dWxkCiAgICAgLy8gYmVuY2htYXJrIHRoYXQgZm9yIHBlcmZvcm1hbmNlLgogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQyOQotICAgIG1fbWVzaCA9IEN1
c3RvbUZpbHRlck1lc2g6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIG1fbWVzaENvbHVtbnMsIG1f
bWVzaFJvd3MsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFJl
Y3QoMCwgMCwgMSwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
bWVzaFR5cGUpOworICAgIG1fbWVzaCA9IEN1c3RvbUZpbHRlck1lc2hHQzNEOjpjcmVhdGUobV9j
b250ZXh0LmdldCgpLCBtX21lc2hDb2x1bW5zLCBtX21lc2hSb3dzLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UmVjdCgwLCAwLCAxLCAxKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWVzaFR5cGUpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiB2b2lkIEZFQ3VzdG9tRmlsdGVyOjpyZXNpemVDb250ZXh0KGNvbnN0
IEludFNpemUmIG5ld0NvbnRleHRTaXplKQogewotI2lmICFQTEFURk9STShCTEFDS0JFUlJZKSAv
LyBCbGFja0JlcnJ5IGRlZmluZXMgaXRzIG93biBUZXh0dXJlIGNsYXNzCiAgICAgbV9pbnB1dFRl
eHR1cmUgPSBUZXh0dXJlOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBUZXh0dXJlOjpSR0JBOCwg
bmV3Q29udGV4dFNpemUud2lkdGgoKSwgbmV3Q29udGV4dFNpemUuaGVpZ2h0KCkpOwotI2Vsc2UK
LSAgICBtX2lucHV0VGV4dHVyZSA9IFRleHR1cmU6OmNyZWF0ZSh0cnVlKTsKLSNlbmRpZgogICAg
IAogICAgIGlmICghbV9mcmFtZUJ1ZmZlcikKICAgICAgICAgbV9mcmFtZUJ1ZmZlciA9IG1fY29u
dGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKQEAgLTMyMywxMiArMzE3LDggQEAgdm9pZCBGRUN1
c3RvbUZpbHRlcjo6YmluZFByb2dyYW1BbmRCdWZmZXJzKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQ
aXhlbEFycmF5KQogICAgIGlmIChtX2NvbXBpbGVkUHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCkg
IT0gLTEpIHsKICAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMCk7CiAgICAgICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fY29tcGlsZWRQ
cm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSwgMCk7Ci0jaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkp
CiAgICAgICAgIG1faW5wdXRUZXh0dXJlLT5sb2FkKHNyY1BpeGVsQXJyYXktPmRhdGEoKSk7CiAg
ICAgICAgIG1faW5wdXRUZXh0dXJlLT5iaW5kVGlsZSgwKTsKLSNlbHNlCi0gICAgICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0jZW5kaWYKICAgICB9CiAgICAgCiAgICAgaWYgKG1fY29tcGlsZWRQcm9n
cmFtLT5wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSAhPSAtMSkgewpAQCAtMzgyLDQgKzM3Miw0
IEBAIFRleHRTdHJlYW0mIEZFQ3VzdG9tRmlsdGVyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRl
eHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
I2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQorI2VuZGlm
IC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNTKSAmJiAhUExBVEZPUk0o
QkxBQ0tCRVJSWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJF
ZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuY3BwCmluZGV4IDc4ZWQyNDhmZmNjYzJlODNlN2RjMDM4ZmUwODZjYjE1NmJkNGM2
ZTguLmFkMTk2OWY5NGY3ZDY1MWEzY2U2ODEzMmVjN2MxMjk3OGZmNDg3NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRkVDb2xvck1hdHJp
eC5oIgogI2luY2x1ZGUgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKKyNpbmNsdWRlICJGRUN1c3Rv
bUZpbHRlci5oIgogI2luY2x1ZGUgIkZFRHJvcFNoYWRvdy5oIgogI2luY2x1ZGUgIkZFR2F1c3Np
YW5CbHVyLmgiCiAjaW5jbHVkZSAiRkVNZXJnZS5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162128</attachid>
            <date>2012-09-04 16:24:17 -0700</date>
            <delta_ts>2012-09-04 17:29:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94725-20120905012359.patch</filename>
            <type>text/plain</type>
            <size>35035</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ4ZDQyODAxMzU5YjI1
NzVkZGU0YTI0NTk4ZjBjNTJmMGI1NWZlMC4uY2JkMWY5NDE4NzBkNGQ3NzliNTJhNjBlZDdkNThi
NTg3MjE4YmUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTA5LTA0ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQ1NTIFNoYWRlcnNdIFtC
bGFja0JlcnJ5XSBSZWZhY3RvciBDdXN0b21GaWx0ZXJNZXNoIGFuZCBDdXN0b21GaWx0ZXIqUHJv
Z3JhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3
MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXBh
cmF0ZSB0aGUgTWVzaEdlbmVyYXRvciBmcm9tIHRoZSBDdXN0b21GaWx0ZXJNZXNoIGludG8KKyAg
ICAgICAgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oL2NwcC4gVGhpcyBhbGxvd3MgdGhlIEJs
YWNrQmVycnkgcG9ydCB0bworICAgICAgICByZXVzZSB0aGUgbWVzaCBnZW5lcmF0b3IgaW4gaXRz
IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIEFsc28g
YWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGEgIlBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtIiBmcm9t
IGEKKyAgICAgICAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSwgc28gdGhlIEJsYWNrQmVy
cnkgcG9ydCBjYW4gcmV1c2UgdGhlCisgICAgICAgIHNoYWRlciB2YWxpZGF0aW9uIGNvZGUgaW4g
aXRzIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIEl0
IHR1cm5zIG91dCB0aGUgR3JhcGhpY3NDb250ZXh0M0QgaXMgbm90IG5lZWRlZCBmb3IgQU5HTEUg
dG8gZnVuY3Rpb24sCisgICAgICAgIHNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyBhbiBBU1NFUlQgdGhh
dCByZXF1aXJlZCBhIGNvbnRleHQgYmVmb3JlCisgICAgICAgIHZhbGlkYXRpbmcgdGhlIHNoYWRl
cnMgdXNpbmcgQU5HTEUuIFRoaXMgYWxsb3dzIHRoZSBCbGFja0JlcnJ5IHBvcnQgdG8KKyAgICAg
ICAgcmV1c2UgdGhlIHZhbGlkYXRpb24gY29kZSB3aXRob3V0IHRyaWdnZXJpbmcgdGhlIGFzc2Vy
dC4gSW4gdGhlIGZ1dHVyZSwKKyAgICAgICAgdGhlIHZhbGlkYXRpb24gY29kZSBjb3VsZCBiZSBt
b3ZlZCB0byBhIHNlcGFyYXRlIGNsYXNzIHRvIG1ha2UgaXQgbW9yZQorICAgICAgICBvYnZpb3Vz
IHRoYXQgaXQgaXNuJ3QgcmVhbGx5IHJlbGF0ZWQgdG8gR3JhcGhpY3NDb250ZXh0M0QuCisKKyAg
ICAgICAgSW4gZ2VuZXJhbCwgdGhpcyByZWZhY3RvcmluZyBjYW4gYmUgdXNlZnVsIGZvciBhbnkg
cG9ydCB0aGF0IHVzZXMKKyAgICAgICAgT3BlbkdMIHRvIGltcGxlbWVudCBhY2NlbGVyYXRlZCBj
b21wb3NpdGluZy4KKworICAgICAgICBJbnNwaXJlZCBieSBhbiBvcmlnaW5hbCBwYXRjaCBieSBK
b3NodWEgTmV0dGVyZmllbGQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWNhdXNlIHRoaXMg
cGF0Y2ggaW1wbGVtZW50cyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OmdldFZhbGlk
YXRlZFByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyTWVzaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjpDdXN0
b21GaWx0ZXJNZXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6Q3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9y
OjphZGRBdHRhY2hlZE1lc2hJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yOjpnZW5lcmF0ZUF0dGFjaGVkTWVzaCk6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjpnZW5lcmF0ZURl
dGFjaGVkTWVzaCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9y
OjphZGRQb3NpdGlvbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yOjphZGRUZXhDb29yZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGRNZXNoQ29vcmRBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkVHJpYW5nbGVDb29yZEF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjph
ZGRBdHRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZERldGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6ZHVtcEJ1ZmZlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2Vu
ZXJhdG9yOjp2ZXJ0aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2Vu
ZXJhdG9yOjppbmRpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3I6OnBvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJh
dG9yOjpwb2ludHNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2Vu
ZXJhdG9yOjp0aWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJh
dG9yOjp0aWxlc0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3I6OmluZGljZXNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yOjpmbG9hdHNQZXJWZXJ0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvcjo6dmVydGljZXNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0
b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGRUaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFsaWRh
dGVkUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtOjpwbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbSk6CisKIDIwMTItMDgtMjQgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNvbXBvc2l0aW5nIHRoZSBjb250ZW50
cyBvZiBvdmVyZmxvdzpzY3JvbGwgYXJlYXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDZjYWZiODk4NTc0MGI4NTU3NTcxOGJiNmQwNjE1ODY0ZjIzYzM5MzIuLmY2YzY3NTRiOGQ0
ZWE0NzQ3NGVlYjcyODJkMWMwOGQ5ZjgyODNjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtMzI3MSw2ICszMjcxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRl
eHQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJNZXNoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJNZXNoLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck51
bWJlclBhcmFtZXRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5k
ZXggODBkYzI4Njk3MDViOTA5YzAwZTI5MzU4NDg0ODE5NTlmOWFmMTcyNS4uYWI0YjY2OTIxZTli
OTEyZWY4NDc2NDc2OGFkMmEzZjQ1ZDA0OGIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yMDM2LDYgKzIw
MzYsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
ckdsb2JhbENvbnRleHQuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJNZXNoLmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
TWVzaEdlbmVyYXRvci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlck51bWJlclBhcmFtZXRlci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIFwKQEAgLTMyMzksNiArMzI0MCw3IEBAIGNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9GSUxURVJTPTEpIHsKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcCBcCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAgXAorICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3Bw
IFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0
ZWRQcm9ncmFtLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFu
dExpZ2h0U291cmNlLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVC
bGVuZC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDJjZGY5OTAyMTBmZGNhMGZiNTljNTFhZjEy
MmNmOTk4MGU3M2RhZDkuLmZkMGYzYWI0NzZiMmMwMzYzNjllYzA4Mjc1ZTY0OGJkMDA2OWE5MGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTM2ODAsNiArMzY4MCw3IEBACiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxD
b250ZXh0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyTWVzaC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlv
bi5oJywKQEAgLTM2OTMsNiArMzY5NCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFt
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
TWVzaC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyTWVzaEdlbmVyYXRvci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDRj
NjU5M2IxODIxZjBmZGEzNTNjZDMxYzIyZTc2Nzg1ZTY4MGM2NjguLjUzNDUzMGJjMjY5ZTIwZWJl
MzYwMzY1ZWZlNzJlNTE2YWFhNzAyMGYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zMTY0OSw2ICszMTY0OSwxNCBAQAogCQkJCQkJPgogCQkJ
CQk8L0ZpbGU+CiAJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGZpbHRlcnNcQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAiCisJCQkJCQk+CisJ
CQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmgiCisJCQkJCQk+CisJ
CQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaCIKIAkJCQkJCT4K
IAkJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAK
aW5kZXggZTAxNDRiOTA1NmIwMTlkYWQ0MGU1YTI0YjQ5YjkwYWRhYzI1MWRkYS4uN2FkNzYwZTUz
MWU1Y2RkZmJiOWM2MmM1NjlmM2UyNWFhNWE5M2Q2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlckdsb2JhbENvbnRleHQuY3BwCkBAIC04Nyw4ICs4Nyw4IEBAIHZvaWQgQ3VzdG9tRmlsdGVy
R2xvYmFsQ29udGV4dDo6cHJlcGFyZUNvbnRleHRJZk5lZWRlZChIb3N0V2luZG93KiBob3N0V2lu
ZG93KQogCiBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0+IEN1c3RvbUZp
bHRlckdsb2JhbENvbnRleHQ6OmdldFZhbGlkYXRlZFByb2dyYW0oY29uc3QgQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQogewotICAgIC8vIENoZWNrIHRoYXQgdGhlIGNvbnRl
eHQgaXMgYWxyZWFkeSBwcmVwYXJlZC4KLSAgICBBU1NFUlQobV9jb250ZXh0KTsKKyAgICAvLyBU
aGUgY29udGV4dCBpcyBub3QgbmVlZGVkIHRvIHZhbGlkYXRlIHByb2dyYW1zLgorICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgY29uc2lkZXIgc2VwYXJhdGluZyBmaWx0ZXIgdmFsaWRhdGlvbiBpbnRv
IGEgc2VwYXJhdGUgY2xhc3MgdGhhdCBoYXMgbm8gR3JhcGhpY3NDb250ZXh0M0QgZGVwZW5kZW5j
eS4KIAogICAgIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW1zTWFwOjppdGVyYXRvciBpdGVy
ID0gbV9wcm9ncmFtcy5maW5kKHByb2dyYW1JbmZvKTsKICAgICBpZiAoaXRlciAhPSBtX3Byb2dy
YW1zLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAKaW5kZXggZTAxNGYwYTA2NDQyNjdi
M2M1M2E3NzFjMzNiOTJlYzA1NDc5ZTA1OS4uMjM1OWYzYzE0Y2E2NjZjYzhhMDI0NDQ3YjE5MDc4
N2U0OTVlYjc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCkBAIC0zNCwyMDYgKzM0LDgg
QEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci0gICAgCi0jaWZuZGVmIE5ERUJVRwotLy8gVXNlICJjYWxsICdXZWJDb3JlOjpzX2R1bXBDdXN0
b21GaWx0ZXJNZXNoQnVmZmVycycgPSAxIiBpbiBHREIgdG8gYWN0aXZhdGUgcHJpbnRpbmcgb2Yg
dGhlIG1lc2ggYnVmZmVycy4KLXN0YXRpYyBib29sIHNfZHVtcEN1c3RvbUZpbHRlck1lc2hCdWZm
ZXJzID0gZmFsc2U7Ci0jZW5kaWYKLQotY2xhc3MgTWVzaEdlbmVyYXRvciB7Ci1wdWJsaWM6Ci0g
ICAgLy8gTGluZXMgYW5kIGNvbHVtbnMgYXJlIHRoZSB2YWx1ZXMgcGFzc2VkIGluIENTUy4gVGhl
IHJlc3VsdCBpcyB2ZXJ0ZXggbWVzaCB0aGF0IGhhcyAncm93cycgbnVtYmVycyBvZiByb3dzCi0g
ICAgLy8gYW5kICdjb2x1bW5zJyBudW1iZXIgb2YgY29sdW1ucyB3aXRoIGEgdG90YWwgb2YgJ3Jv
d3MgKyAxJyAqICdjb2x1bW5zICsgMScgdmVydGljZXMuCi0gICAgLy8gTWVzaEJveCBpcyB0aGUg
ZmlsdGVyZWQgYXJlYSBjYWxjdWxhdGVkIGRlZmluZWQgdXNpbmcgdGhlIGJvcmRlci1ib3gsIHBh
ZGRpbmctYm94LCBjb250ZW50LWJveCBvciBmaWx0ZXItYm94IAotICAgIC8vIGF0dHJpYnV0ZXMu
IEEgdmFsdWUgb2YgKDAsIDAsIDEsIDEpIHdpbGwgY292ZXIgdGhlIGVudGlyZSBvdXRwdXQgc3Vy
ZmFjZS4KLSAgICBNZXNoR2VuZXJhdG9yKHVuc2lnbmVkIGNvbHVtbnMsIHVuc2lnbmVkIHJvd3Ms
IGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlw
ZSBtZXNoVHlwZSkKLSAgICAgICAgOiBtX21lc2hUeXBlKG1lc2hUeXBlKQotICAgICAgICAsIG1f
cG9pbnRzKGNvbHVtbnMgKyAxLCByb3dzICsgMSkKLSAgICAgICAgLCBtX3RpbGVzKGNvbHVtbnMs
IHJvd3MpCi0gICAgICAgICwgbV90aWxlU2l6ZUluUGl4ZWxzKG1lc2hCb3gud2lkdGgoKSAvIG1f
dGlsZXMud2lkdGgoKSwgbWVzaEJveC5oZWlnaHQoKSAvIG1fdGlsZXMuaGVpZ2h0KCkpCi0gICAg
ICAgICwgbV90aWxlU2l6ZUluRGV2aWNlU3BhY2UoMS4wZiAvIG1fdGlsZXMud2lkdGgoKSwgMS4w
ZiAvIG1fdGlsZXMuaGVpZ2h0KCkpCi0gICAgICAgICwgbV9tZXNoQm94KG1lc2hCb3gpCi0gICAg
ewotICAgICAgICAvLyBCdWlsZCB0aGUgdHdvIGJ1ZmZlcnMgbmVlZGVkIHRvIGRyYXcgdHJpYW5n
bGVzOgotICAgICAgICAvLyAqIG1fdmVydGljZXMgaGFzIGEgbnVtYmVyIG9mIGZsb2F0IGF0dHJp
YnV0ZXMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgdmVydGV4IHNoYWRlcgotICAgICAgICAv
LyBmb3IgZWFjaCBjb21wdXRlZCB2ZXJ0ZXguIFRoaXMgbnVtYmVyIGlzIGNhbGN1bGF0ZWQgaW4g
ZmxvYXRzUGVyVmVydGV4KCkgYmFzZWQgb24gdGhlIG1lc2hUeXBlLgotICAgICAgICAvLyAqIG1f
aW5kaWNlcyBpcyBhIGJ1ZmZlciB0aGF0IHdpbGwgaGF2ZSAzIGluZGljZXMgcGVyIHRyaWFuZ2xl
LiBFYWNoIGluZGV4IHdpbGwgcG9pbnQgaW5zaWRlCi0gICAgICAgIC8vIHRoZSBtX3ZlcnRpY2Vz
IGJ1ZmZlci4KLSAgICAgICAgbV92ZXJ0aWNlcy5yZXNlcnZlQ2FwYWNpdHkodmVydGljZXNDb3Vu
dCgpICogZmxvYXRzUGVyVmVydGV4KCkpOwotICAgICAgICBtX2luZGljZXMucmVzZXJ2ZUNhcGFj
aXR5KGluZGljZXNDb3VudCgpKTsKLSAgICAgICAgCi0gICAgICAgIC8vIEJhc2VkIG9uIHRoZSBt
ZXNoVHlwZSB0aGVyZSBjYW4gYmUgdHdvIHR5cGVzIG9mIG1lc2hlcy4KLSAgICAgICAgLy8gKiBh
dHRhY2hlZDogZWFjaCB0cmlhbmdsZSB1c2VzIHZlcnRpY2VzIGZyb20gdGhlIG5laWdoYm9yIHRy
aWFuZ2xlcy4gVGhpcyBpcyB1c2VmdWwgdG8gc2F2ZSBzb21lIEdQVSBtZW1vcnkKLSAgICAgICAg
Ly8gd2hlbiB0aGVyZSdzIG5vIG5lZWQgdG8gZXhwbG9kZSB0aGUgdGlsZXMuCi0gICAgICAgIC8v
ICogZGV0YWNoZWQ6IGVhY2ggdHJpYW5nbGUgaGFzIGl0cyBvd24gdmVydGljZXMuIFRoaXMgbWVh
bnMgZWFjaCB0cmlhbmdsZSBjYW4gYmUgbW92ZWQgaW5kZXBlbmRlbnRseSBhbmQgYSB2ZWMzCi0g
ICAgICAgIC8vIGF0dHJpYnV0ZSBpcyBwYXNzZWQsIHNvIHRoYXQgZWFjaCB2ZXJ0ZXggY2FuIGJl
IHVuaXF1ZWx5IGlkZW50aWZpZWQuCi0gICAgICAgIGlmIChtX21lc2hUeXBlID09IEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6QVRUQUNIRUQpCi0gICAgICAgICAgICBnZW5lcmF0ZUF0dGFjaGVkTWVz
aCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBnZW5lcmF0ZURldGFjaGVkTWVzaCgpOwot
ICAgICAgICAKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGlmIChzX2R1bXBDdXN0b21GaWx0ZXJN
ZXNoQnVmZmVycykKLSAgICAgICAgICAgIGR1bXBCdWZmZXJzKCk7Ci0jZW5kaWYKLSAgICB9Ci0K
LSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmVy
dGljZXM7IH0KLSAgICBjb25zdCBWZWN0b3I8dWludDE2X3Q+JiBpbmRpY2VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmRpY2VzOyB9Ci0KLSAgICBjb25zdCBJbnRTaXplJiBwb2ludHMoKSBjb25zdCB7
IHJldHVybiBtX3BvaW50czsgfQotICAgIHVuc2lnbmVkIHBvaW50c0NvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9wb2ludHMud2lkdGgoKSAqIG1fcG9pbnRzLmhlaWdodCgpOyB9Ci0gICAgCi0gICAg
Y29uc3QgSW50U2l6ZSYgdGlsZXMoKSBjb25zdCB7IHJldHVybiBtX3RpbGVzOyB9Ci0gICAgdW5z
aWduZWQgdGlsZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZXMud2lkdGgoKSAqIG1fdGls
ZXMuaGVpZ2h0KCk7IH0KLSAgICAKLSAgICB1bnNpZ25lZCBpbmRpY2VzQ291bnQoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgdHJpYW5nbGVzUGVyVGlsZSA9IDI7Ci0gICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGluZGljZXNQZXJUcmlhbmdsZSA9IDM7Ci0gICAgICAgIHJldHVy
biB0aWxlc0NvdW50KCkgKiB0cmlhbmdsZXNQZXJUaWxlICogaW5kaWNlc1BlclRyaWFuZ2xlOwot
ICAgIH0KLSAgICAKLSAgICB1bnNpZ25lZCBmbG9hdHNQZXJWZXJ0ZXgoKSBjb25zdAotICAgIHsK
LSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEF0dGFjaGVkTWVzaFZlcnRleFNpemUgPSA0
ICsgLy8gdmVjNCBhX3Bvc2l0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMiArIC8vIHZlYzIgYV90ZXhDb29yZAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI7IC8vIHZlYzIgYV9t
ZXNoQ29vcmQKLQotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRGV0YWNoZWRNZXNoVmVy
dGV4U2l6ZSA9IEF0dGFjaGVkTWVzaFZlcnRleFNpemUgKwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM7IC8vIHZlYzMgYV90cmlhbmdsZUNv
b3JkCi0KLSAgICAgICAgcmV0dXJuIG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
OjpBVFRBQ0hFRCA/IEF0dGFjaGVkTWVzaFZlcnRleFNpemUgOiBEZXRhY2hlZE1lc2hWZXJ0ZXhT
aXplOwotICAgIH0KLSAgICAKLSAgICB1bnNpZ25lZCB2ZXJ0aWNlc0NvdW50KCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX21lc2hUeXBlID09IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6
QVRUQUNIRUQgPyBwb2ludHNDb3VudCgpIDogaW5kaWNlc0NvdW50KCk7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIHR5cGVkZWYgdm9pZCAoTWVzaEdlbmVyYXRvcjo6KkFkZFRyaWFuZ2xlVmVydGV4
RnVuY3Rpb24pKGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5n
bGVZLCBpbnQgdHJpYW5nbGUpOwotICAgIAotICAgIHRlbXBsYXRlIDxBZGRUcmlhbmdsZVZlcnRl
eEZ1bmN0aW9uIGFkZFRyaWFuZ2xlVmVydGV4PgotICAgIHZvaWQgYWRkVGlsZShpbnQgcXVhZFgs
IGludCBxdWFkWSkKLSAgICB7Ci0gICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgp
KShxdWFkWCwgcXVhZFksIDAsIDAsIDEpOwotICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xl
VmVydGV4KSkocXVhZFgsIHF1YWRZLCAxLCAwLCAyKTsKLSAgICAgICAgKCgqdGhpcykuKihhZGRU
cmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMSwgMSwgMyk7Ci0gICAgICAgICgoKnRoaXMp
LiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDAsIDAsIDQpOwotICAgICAgICAo
KCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAxLCAxLCA1KTsKLSAg
ICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMCwgMSwg
Nik7Ci0gICAgfQotICAgIAotICAgIHZvaWQgYWRkQXR0YWNoZWRNZXNoSW5kZXgoaW50IHF1YWRY
LCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSkK
LSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTSh0cmlhbmdsZSk7Ci0gICAgICAgIG1faW5kaWNl
cy5hcHBlbmQoKHF1YWRZICsgdHJpYW5nbGVZKSAqIG1fcG9pbnRzLndpZHRoKCkgKyAocXVhZFgg
KyB0cmlhbmdsZVgpKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBnZW5lcmF0ZUF0dGFjaGVkTWVz
aCgpCi0gICAgewotICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG1fcG9pbnRzLmhlaWdodCgp
OyArK2opIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9wb2ludHMud2lkdGgo
KTsgKytpKQotICAgICAgICAgICAgICAgIGFkZEF0dGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMo
aSwgaik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwg
bV90aWxlcy5oZWlnaHQoKTsgKytqKSB7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG1fdGlsZXMud2lkdGgoKTsgKytpKQotICAgICAgICAgICAgICAgIGFkZFRpbGU8Jk1lc2hHZW5l
cmF0b3I6OmFkZEF0dGFjaGVkTWVzaEluZGV4PihpLCBqKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICAKLSAgICB2b2lkIGFkZERldGFjaGVkTWVzaFZlcnRleEFuZEluZGV4KGludCBxdWFkWCwgaW50
IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpCi0gICAg
ewotICAgICAgICBhZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKHF1YWRYLCBxdWFkWSwg
dHJpYW5nbGVYLCB0cmlhbmdsZVksIHRyaWFuZ2xlKTsKLSAgICAgICAgbV9pbmRpY2VzLmFwcGVu
ZChtX2luZGljZXMuc2l6ZSgpKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBnZW5lcmF0ZURldGFj
aGVkTWVzaCgpCi0gICAgewotICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG1fdGlsZXMuaGVp
Z2h0KCk7ICsraikgewotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3RpbGVzLndp
ZHRoKCk7ICsraSkKLSAgICAgICAgICAgICAgICBhZGRUaWxlPCZNZXNoR2VuZXJhdG9yOjphZGRE
ZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleD4oaSwgaik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Ci0gICAgdm9pZCBhZGRQb3NpdGlvbkF0dHJpYnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSkKLSAg
ICB7Ci0gICAgICAgIC8vIHZlYzQgYV9wb3NpdGlvbgotICAgICAgICBtX3ZlcnRpY2VzLmFwcGVu
ZChtX3RpbGVTaXplSW5QaXhlbHMud2lkdGgoKSAqIHF1YWRYIC0gMC41ZiArIG1fbWVzaEJveC54
KCkpOwotICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5QaXhlbHMuaGVpZ2h0
KCkgKiBxdWFkWSAtIDAuNWYgKyBtX21lc2hCb3gueSgpKTsKLSAgICAgICAgbV92ZXJ0aWNlcy5h
cHBlbmQoMC4wZik7IC8vIHoKLSAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQoMS4wZik7Ci0gICAg
fQotCi0gICAgdm9pZCBhZGRUZXhDb29yZEF0dHJpYnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSkK
LSAgICB7Ci0gICAgICAgIC8vIHZlYzIgYV90ZXhDb29yZAotICAgICAgICBtX3ZlcnRpY2VzLmFw
cGVuZChtX3RpbGVTaXplSW5QaXhlbHMud2lkdGgoKSAqIHF1YWRYICsgbV9tZXNoQm94LngoKSk7
Ci0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJblBpeGVscy5oZWlnaHQoKSAq
IHF1YWRZICsgbV9tZXNoQm94LnkoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRNZXNoQ29vcmRB
dHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCi0gICAgewotICAgICAgICAvLyB2ZWMyIGFf
bWVzaENvb3JkCi0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJbkRldmljZVNw
YWNlLndpZHRoKCkgKiBxdWFkWCk7Ci0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNp
emVJbkRldmljZVNwYWNlLmhlaWdodCgpICogcXVhZFkpOwotICAgIH0KLQotICAgIHZvaWQgYWRk
VHJpYW5nbGVDb29yZEF0dHJpYnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xl
KQotICAgIHsKLSAgICAgICAgLy8gdmVjMyBhX3RyaWFuZ2xlQ29vcmQKLSAgICAgICAgbV92ZXJ0
aWNlcy5hcHBlbmQocXVhZFgpOwotICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZChxdWFkWSk7Ci0g
ICAgICAgIG1fdmVydGljZXMuYXBwZW5kKHRyaWFuZ2xlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFk
ZEF0dGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMoaW50IHF1YWRYLCBpbnQgcXVhZFkpCi0gICAg
ewotICAgICAgICBhZGRQb3NpdGlvbkF0dHJpYnV0ZShxdWFkWCwgcXVhZFkpOwotICAgICAgICBh
ZGRUZXhDb29yZEF0dHJpYnV0ZShxdWFkWCwgcXVhZFkpOwotICAgICAgICBhZGRNZXNoQ29vcmRB
dHRyaWJ1dGUocXVhZFgsIHF1YWRZKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZERldGFjaGVkTWVz
aFZlcnRleEF0dHJpYnV0ZXMoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGlu
dCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSkKLSAgICB7Ci0gICAgICAgIGFkZEF0dGFjaGVkTWVz
aFZlcnRleEF0dHJpYnV0ZXMocXVhZFggKyB0cmlhbmdsZVgsIHF1YWRZICsgdHJpYW5nbGVZKTsK
LSAgICAgICAgYWRkVHJpYW5nbGVDb29yZEF0dHJpYnV0ZShxdWFkWCwgcXVhZFksIHRyaWFuZ2xl
KTsKLSAgICB9Ci0gICAgCi0jaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgZHVtcEJ1ZmZlcnMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcHJpbnRmKCJNZXNoIGJ1ZmZlcnM6IFBvaW50cy53aWR0aCgp
OiAlZCwgUG9pbnRzLmhlaWdodCgpOiAlZCBtZXNoQm94OiAlZiwgJWYsICVmLCAlZiwgdHlwZTog
JXNcbiIsIAotICAgICAgICAgICAgICAgbV9wb2ludHMud2lkdGgoKSwgbV9wb2ludHMuaGVpZ2h0
KCksIG1fbWVzaEJveC54KCksIG1fbWVzaEJveC55KCksIG1fbWVzaEJveC53aWR0aCgpLCBtX21l
c2hCb3guaGVpZ2h0KCksIAotICAgICAgICAgICAgICAgKG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmls
dGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCkgPyAiQXR0YWNoZWQiIDogIkRldGFjaGVkIik7Ci0gICAg
ICAgIHByaW50ZigiLS0tVmVydGV4OlxuXHQiKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fdmVydGljZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHByaW50ZigiJWYg
IiwgbV92ZXJ0aWNlcy5hdChpKSk7Ci0gICAgICAgICAgICBpZiAoISgoaSArIDEpICUgZmxvYXRz
UGVyVmVydGV4KCkpKQotICAgICAgICAgICAgICAgIHByaW50ZigiXG5cdCIpOwotICAgICAgICB9
Ci0gICAgICAgIHByaW50ZigiXG4tLS1JbmRpY2VzOiAiKTsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1faW5kaWNlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHByaW50Zigi
JWQgIiwgbV9pbmRpY2VzLmF0KGkpKTsKLSAgICAgICAgcHJpbnRmKCJcbiIpOwotICAgIH0KLSNl
bmRpZgotCi1wcml2YXRlOgotICAgIFZlY3RvcjxmbG9hdD4gbV92ZXJ0aWNlczsKLSAgICBWZWN0
b3I8dWludDE2X3Q+IG1faW5kaWNlczsKLSAgICAKLSAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246
Ok1lc2hUeXBlIG1fbWVzaFR5cGU7Ci0gICAgSW50U2l6ZSBtX3BvaW50czsKLSAgICBJbnRTaXpl
IG1fdGlsZXM7Ci0gICAgRmxvYXRTaXplIG1fdGlsZVNpemVJblBpeGVsczsKLSAgICBGbG9hdFNp
emUgbV90aWxlU2l6ZUluRGV2aWNlU3BhY2U7Ci0gICAgRmxvYXRSZWN0IG1fbWVzaEJveDsKLX07
CiAKLUN1c3RvbUZpbHRlck1lc2g6OkN1c3RvbUZpbHRlck1lc2goR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIHVuc2lnbmVkIGNvbHVtbnMsIHVuc2lnbmVkIHJvd3MsIAorQ3VzdG9tRmlsdGVy
TWVzaDo6Q3VzdG9tRmlsdGVyTWVzaChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWdu
ZWQgY29sdW1ucywgdW5zaWduZWQgcm93cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1l
c2hUeXBlIG1lc2hUeXBlKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3ZlcnRp
Y2VzQnVmZmVyT2JqZWN0KDApCkBAIC0yNDEsNyArNDMsNyBAQCBDdXN0b21GaWx0ZXJNZXNoOjpD
dXN0b21GaWx0ZXJNZXNoKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBjb2x1
bW5zLAogICAgICwgbV9tZXNoQm94KG1lc2hCb3gpCiAgICAgLCBtX21lc2hUeXBlKG1lc2hUeXBl
KQogewotICAgIE1lc2hHZW5lcmF0b3IgZ2VuZXJhdG9yKGNvbHVtbnMsIHJvd3MsIG1lc2hCb3gs
IG1lc2hUeXBlKTsKKyAgICBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yIGdlbmVyYXRvcihjb2x1
bW5zLCByb3dzLCBtZXNoQm94LCBtZXNoVHlwZSk7CiAgICAgbV9pbmRpY2VzQ291bnQgPSBnZW5l
cmF0b3IuaW5kaWNlc0NvdW50KCk7CiAgICAgbV9ieXRlc1BlclZlcnRleCA9IGdlbmVyYXRvci5m
bG9hdHNQZXJWZXJ0ZXgoKSAqIHNpemVvZihmbG9hdCk7ICAgIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDlkNGQxYjIwZDMyNWI1YTlk
ZGQxYzlkM2Y1YmRmODdmNzFjNjYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcApA
QCAtMCwwICsxLDE3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1z
IEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
CisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJ
Q1MpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyNpZm5kZWYgTkRFQlVHCisvLyBVc2UgImNhbGwgJ1dlYkNvcmU6OnNfZHVt
cEN1c3RvbUZpbHRlck1lc2hCdWZmZXJzJyA9IDEiIGluIEdEQiB0byBhY3RpdmF0ZSBwcmludGlu
ZyBvZiB0aGUgbWVzaCBidWZmZXJzLgorc3RhdGljIGJvb2wgc19kdW1wQ3VzdG9tRmlsdGVyTWVz
aEJ1ZmZlcnMgPSBmYWxzZTsKKyNlbmRpZgorCitDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjpD
dXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yKHVuc2lnbmVkIGNvbHVtbnMsIHVuc2lnbmVkIHJvd3Ms
IGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlw
ZSBtZXNoVHlwZSkKKyAgICA6IG1fbWVzaFR5cGUobWVzaFR5cGUpCisgICAgLCBtX3BvaW50cyhj
b2x1bW5zICsgMSwgcm93cyArIDEpCisgICAgLCBtX3RpbGVzKGNvbHVtbnMsIHJvd3MpCisgICAg
LCBtX3RpbGVTaXplSW5QaXhlbHMobWVzaEJveC53aWR0aCgpIC8gbV90aWxlcy53aWR0aCgpLCBt
ZXNoQm94LmhlaWdodCgpIC8gbV90aWxlcy5oZWlnaHQoKSkKKyAgICAsIG1fdGlsZVNpemVJbkRl
dmljZVNwYWNlKDEuMGYgLyBtX3RpbGVzLndpZHRoKCksIDEuMGYgLyBtX3RpbGVzLmhlaWdodCgp
KQorICAgICwgbV9tZXNoQm94KG1lc2hCb3gpCit7CisgICAgLy8gQnVpbGQgdGhlIHR3byBidWZm
ZXJzIG5lZWRlZCB0byBkcmF3IHRyaWFuZ2xlczoKKyAgICAvLyAqIG1fdmVydGljZXMgaGFzIGEg
bnVtYmVyIG9mIGZsb2F0IGF0dHJpYnV0ZXMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgdmVy
dGV4IHNoYWRlcgorICAgIC8vIGZvciBlYWNoIGNvbXB1dGVkIHZlcnRleC4gVGhpcyBudW1iZXIg
aXMgY2FsY3VsYXRlZCBpbiBmbG9hdHNQZXJWZXJ0ZXgoKSBiYXNlZCBvbiB0aGUgbWVzaFR5cGUu
CisgICAgLy8gKiBtX2luZGljZXMgaXMgYSBidWZmZXIgdGhhdCB3aWxsIGhhdmUgMyBpbmRpY2Vz
IHBlciB0cmlhbmdsZS4gRWFjaCBpbmRleCB3aWxsIHBvaW50IGluc2lkZQorICAgIC8vIHRoZSBt
X3ZlcnRpY2VzIGJ1ZmZlci4KKyAgICBtX3ZlcnRpY2VzLnJlc2VydmVDYXBhY2l0eSh2ZXJ0aWNl
c0NvdW50KCkgKiBmbG9hdHNQZXJWZXJ0ZXgoKSk7CisgICAgbV9pbmRpY2VzLnJlc2VydmVDYXBh
Y2l0eShpbmRpY2VzQ291bnQoKSk7CisKKyAgICAvLyBCYXNlZCBvbiB0aGUgbWVzaFR5cGUgdGhl
cmUgY2FuIGJlIHR3byB0eXBlcyBvZiBtZXNoZXMuCisgICAgLy8gKiBhdHRhY2hlZDogZWFjaCB0
cmlhbmdsZSB1c2VzIHZlcnRpY2VzIGZyb20gdGhlIG5laWdoYm9yIHRyaWFuZ2xlcy4gVGhpcyBp
cyB1c2VmdWwgdG8gc2F2ZSBzb21lIEdQVSBtZW1vcnkKKyAgICAvLyB3aGVuIHRoZXJlJ3Mgbm8g
bmVlZCB0byBleHBsb2RlIHRoZSB0aWxlcy4KKyAgICAvLyAqIGRldGFjaGVkOiBlYWNoIHRyaWFu
Z2xlIGhhcyBpdHMgb3duIHZlcnRpY2VzLiBUaGlzIG1lYW5zIGVhY2ggdHJpYW5nbGUgY2FuIGJl
IG1vdmVkIGluZGVwZW5kZW50bHkgYW5kIGEgdmVjMworICAgIC8vIGF0dHJpYnV0ZSBpcyBwYXNz
ZWQsIHNvIHRoYXQgZWFjaCB2ZXJ0ZXggY2FuIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCisgICAg
aWYgKG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCkKKyAgICAg
ICAgZ2VuZXJhdGVBdHRhY2hlZE1lc2goKTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRlRGV0
YWNoZWRNZXNoKCk7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgaWYgKHNfZHVtcEN1c3RvbUZpbHRl
ck1lc2hCdWZmZXJzKQorICAgICAgICBkdW1wQnVmZmVycygpOworI2VuZGlmCit9CisKK3ZvaWQg
Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRNZXNoSW5kZXgoaW50IHF1YWRY
LCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSkK
K3sKKyAgICBVTlVTRURfUEFSQU0odHJpYW5nbGUpOworICAgIG1faW5kaWNlcy5hcHBlbmQoKHF1
YWRZICsgdHJpYW5nbGVZKSAqIG1fcG9pbnRzLndpZHRoKCkgKyAocXVhZFggKyB0cmlhbmdsZVgp
KTsKK30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjpnZW5lcmF0ZUF0dGFjaGVk
TWVzaCgpCit7CisgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtX3BvaW50cy5oZWlnaHQoKTsgKytq
KSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9wb2ludHMud2lkdGgoKTsgKytpKQor
ICAgICAgICAgICAgYWRkQXR0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhpLCBqKTsKKyAgICB9
CisKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IG1fdGlsZXMuaGVpZ2h0KCk7ICsraikgeworICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdGlsZXMud2lkdGgoKTsgKytpKQorICAgICAgICAg
ICAgYWRkVGlsZTwmQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRNZXNoSW5k
ZXg+KGksIGopOworICAgIH0KK30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjph
ZGREZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleChpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRy
aWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xlKQoreworICAgIGFkZERldGFjaGVk
TWVzaFZlcnRleEF0dHJpYnV0ZXMocXVhZFgsIHF1YWRZLCB0cmlhbmdsZVgsIHRyaWFuZ2xlWSwg
dHJpYW5nbGUpOworICAgIG1faW5kaWNlcy5hcHBlbmQobV9pbmRpY2VzLnNpemUoKSk7Cit9CisK
K3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6Z2VuZXJhdGVEZXRhY2hlZE1lc2goKQor
eworICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV90aWxlcy5oZWlnaHQoKTsgKytqKSB7CisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV90aWxlcy53aWR0aCgpOyArK2kpCisgICAgICAgICAg
ICBhZGRUaWxlPCZDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0
ZXhBbmRJbmRleD4oaSwgaik7CisgICAgfQorfQorCit2b2lkIEN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3I6OmFkZFBvc2l0aW9uQXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZKQoreworICAg
IC8vIHZlYzQgYV9wb3NpdGlvbgorICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJblBp
eGVscy53aWR0aCgpICogcXVhZFggLSAwLjVmICsgbV9tZXNoQm94LngoKSk7CisgICAgbV92ZXJ0
aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluUGl4ZWxzLmhlaWdodCgpICogcXVhZFkgLSAwLjVmICsg
bV9tZXNoQm94LnkoKSk7CisgICAgbV92ZXJ0aWNlcy5hcHBlbmQoMC4wZik7IC8vIHoKKyAgICBt
X3ZlcnRpY2VzLmFwcGVuZCgxLjBmKTsKK30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJh
dG9yOjphZGRUZXhDb29yZEF0dHJpYnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSkKK3sKKyAgICAv
LyB2ZWMyIGFfdGV4Q29vcmQKKyAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5QaXhl
bHMud2lkdGgoKSAqIHF1YWRYICsgbV9tZXNoQm94LngoKSk7CisgICAgbV92ZXJ0aWNlcy5hcHBl
bmQobV90aWxlU2l6ZUluUGl4ZWxzLmhlaWdodCgpICogcXVhZFkgKyBtX21lc2hCb3gueSgpKTsK
K30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGRNZXNoQ29vcmRBdHRyaWJ1
dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCit7CisgICAgLy8gdmVjMiBhX21lc2hDb29yZAorICAg
IG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJbkRldmljZVNwYWNlLndpZHRoKCkgKiBxdWFk
WCk7CisgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluRGV2aWNlU3BhY2UuaGVpZ2h0
KCkgKiBxdWFkWSk7Cit9CisKK3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkVHJp
YW5nbGVDb29yZEF0dHJpYnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xlKQor
eworICAgIC8vIHZlYzMgYV90cmlhbmdsZUNvb3JkCisgICAgbV92ZXJ0aWNlcy5hcHBlbmQocXVh
ZFgpOworICAgIG1fdmVydGljZXMuYXBwZW5kKHF1YWRZKTsKKyAgICBtX3ZlcnRpY2VzLmFwcGVu
ZCh0cmlhbmdsZSk7Cit9CisKK3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0
YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhpbnQgcXVhZFgsIGludCBxdWFkWSkKK3sKKyAgICBh
ZGRQb3NpdGlvbkF0dHJpYnV0ZShxdWFkWCwgcXVhZFkpOworICAgIGFkZFRleENvb3JkQXR0cmli
dXRlKHF1YWRYLCBxdWFkWSk7CisgICAgYWRkTWVzaENvb3JkQXR0cmlidXRlKHF1YWRYLCBxdWFk
WSk7Cit9CisKK3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkRGV0YWNoZWRNZXNo
VmVydGV4QXR0cmlidXRlcyhpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50
IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xlKQoreworICAgIGFkZEF0dGFjaGVkTWVzaFZlcnRleEF0
dHJpYnV0ZXMocXVhZFggKyB0cmlhbmdsZVgsIHF1YWRZICsgdHJpYW5nbGVZKTsKKyAgICBhZGRU
cmlhbmdsZUNvb3JkQXR0cmlidXRlKHF1YWRYLCBxdWFkWSwgdHJpYW5nbGUpOworfQorCisjaWZu
ZGVmIE5ERUJVRwordm9pZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjpkdW1wQnVmZmVycygp
IGNvbnN0Cit7CisgICAgcHJpbnRmKCJNZXNoIGJ1ZmZlcnM6IFBvaW50cy53aWR0aCgpOiAlZCwg
UG9pbnRzLmhlaWdodCgpOiAlZCBtZXNoQm94OiAlZiwgJWYsICVmLCAlZiwgdHlwZTogJXNcbiIs
CisgICAgICAgICAgIG1fcG9pbnRzLndpZHRoKCksIG1fcG9pbnRzLmhlaWdodCgpLCBtX21lc2hC
b3gueCgpLCBtX21lc2hCb3gueSgpLCBtX21lc2hCb3gud2lkdGgoKSwgbV9tZXNoQm94LmhlaWdo
dCgpLAorICAgICAgICAgICAobV9tZXNoVHlwZSA9PSBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkFU
VEFDSEVEKSA/ICJBdHRhY2hlZCIgOiAiRGV0YWNoZWQiKTsKKyAgICBwcmludGYoIi0tLVZlcnRl
eDpcblx0Iik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmVydGljZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgcHJpbnRmKCIlZiAiLCBtX3ZlcnRpY2VzLmF0KGkpKTsKKyAgICAg
ICAgaWYgKCEoKGkgKyAxKSAlIGZsb2F0c1BlclZlcnRleCgpKSkKKyAgICAgICAgICAgIHByaW50
ZigiXG5cdCIpOworICAgIH0KKyAgICBwcmludGYoIlxuLS0tSW5kaWNlczogIik7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW5kaWNlcy5zaXplKCk7ICsraSkKKyAgICAgICAgcHJp
bnRmKCIlZCAiLCBtX2luZGljZXMuYXQoaSkpOworICAgIHByaW50ZigiXG4iKTsKK30KKyNlbmRp
ZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURF
UlMpICYmIFVTRSgzRF9HUkFQSElDUykKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wOWY3NTYyMWI0NjVkMTYxZTc1ZGNkZTZkMjE5ZTFhOTZiNjli
ZGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmgKQEAgLTAsMCArMSwxMjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
ICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvcl9oCisjZGVmaW5lIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3JfaAorCisjaWYgRU5B
QkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJDdXN0b21G
aWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yIHsKK3B1YmxpYzoKKyAg
ICAvLyBMaW5lcyBhbmQgY29sdW1ucyBhcmUgdGhlIHZhbHVlcyBwYXNzZWQgaW4gQ1NTLiBUaGUg
cmVzdWx0IGlzIHZlcnRleCBtZXNoIHRoYXQgaGFzICdyb3dzJyBudW1iZXJzIG9mIHJvd3MKKyAg
ICAvLyBhbmQgJ2NvbHVtbnMnIG51bWJlciBvZiBjb2x1bW5zIHdpdGggYSB0b3RhbCBvZiAncm93
cyArIDEnICogJ2NvbHVtbnMgKyAxJyB2ZXJ0aWNlcy4KKyAgICAvLyBNZXNoQm94IGlzIHRoZSBm
aWx0ZXJlZCBhcmVhIGNhbGN1bGF0ZWQgZGVmaW5lZCB1c2luZyB0aGUgYm9yZGVyLWJveCwgcGFk
ZGluZy1ib3gsIGNvbnRlbnQtYm94IG9yIGZpbHRlci1ib3gKKyAgICAvLyBhdHRyaWJ1dGVzLiBB
IHZhbHVlIG9mICgwLCAwLCAxLCAxKSB3aWxsIGNvdmVyIHRoZSBlbnRpcmUgb3V0cHV0IHN1cmZh
Y2UuCisgICAgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcih1bnNpZ25lZCBjb2x1bW5zLCB1bnNp
Z25lZCByb3dzLCBjb25zdCBGbG9hdFJlY3QmIG1lc2hCb3gsIEN1c3RvbUZpbHRlck9wZXJhdGlv
bjo6TWVzaFR5cGUpOworCisgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmVydGljZXMoKSBjb25z
dCB7IHJldHVybiBtX3ZlcnRpY2VzOyB9CisgICAgY29uc3QgVmVjdG9yPHVpbnQxNl90PiYgaW5k
aWNlcygpIGNvbnN0IHsgcmV0dXJuIG1faW5kaWNlczsgfQorCisgICAgY29uc3QgSW50U2l6ZSYg
cG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludHM7IH0KKyAgICB1bnNpZ25lZCBwb2ludHND
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzLndpZHRoKCkgKiBtX3BvaW50cy5oZWlnaHQo
KTsgfQorCisgICAgY29uc3QgSW50U2l6ZSYgdGlsZXMoKSBjb25zdCB7IHJldHVybiBtX3RpbGVz
OyB9CisgICAgdW5zaWduZWQgdGlsZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZXMud2lk
dGgoKSAqIG1fdGlsZXMuaGVpZ2h0KCk7IH0KKworICAgIHVuc2lnbmVkIGluZGljZXNDb3VudCgp
IGNvbnN0CisgICAgeworICAgICAgICBjb25zdCB1bnNpZ25lZCB0cmlhbmdsZXNQZXJUaWxlID0g
MjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW5kaWNlc1BlclRyaWFuZ2xlID0gMzsKKyAgICAg
ICAgcmV0dXJuIHRpbGVzQ291bnQoKSAqIHRyaWFuZ2xlc1BlclRpbGUgKiBpbmRpY2VzUGVyVHJp
YW5nbGU7CisgICAgfQorCisgICAgdW5zaWduZWQgZmxvYXRzUGVyVmVydGV4KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBBdHRhY2hlZE1lc2hWZXJ0ZXhTaXpl
ID0gNCArIC8vIHZlYzQgYV9wb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIgKyAvLyB2ZWMyIGFfdGV4Q29vcmQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOyAvLyB2ZWMy
IGFfbWVzaENvb3JkCisKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERldGFjaGVkTWVz
aFZlcnRleFNpemUgPSBBdHRhY2hlZE1lc2hWZXJ0ZXhTaXplICsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOyAvLyB2ZWMzIGFfdHJpYW5n
bGVDb29yZAorCisgICAgICAgIHJldHVybiBtX21lc2hUeXBlID09IEN1c3RvbUZpbHRlck9wZXJh
dGlvbjo6QVRUQUNIRUQgPyBBdHRhY2hlZE1lc2hWZXJ0ZXhTaXplIDogRGV0YWNoZWRNZXNoVmVy
dGV4U2l6ZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCB2ZXJ0aWNlc0NvdW50KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX21lc2hUeXBlID09IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6
QVRUQUNIRUQgPyBwb2ludHNDb3VudCgpIDogaW5kaWNlc0NvdW50KCk7CisgICAgfQorCitwcml2
YXRlOgorICAgIHR5cGVkZWYgdm9pZCAoQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6KkFkZFRy
aWFuZ2xlVmVydGV4RnVuY3Rpb24pKGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVY
LCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpOworCisgICAgdGVtcGxhdGUgPEFkZFRyaWFu
Z2xlVmVydGV4RnVuY3Rpb24gYWRkVHJpYW5nbGVWZXJ0ZXg+CisgICAgdm9pZCBhZGRUaWxlKGlu
dCBxdWFkWCwgaW50IHF1YWRZKQorICAgIHsKKyAgICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmds
ZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMCwgMCwgMSk7CisgICAgICAgICgoKnRoaXMpLiooYWRk
VHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDEsIDAsIDIpOworICAgICAgICAoKCp0aGlz
KS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAxLCAxLCAzKTsKKyAgICAgICAg
KCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMCwgMCwgNCk7Cisg
ICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDEsIDEs
IDUpOworICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZ
LCAwLCAxLCA2KTsKKyAgICB9CisKKyAgICB2b2lkIGFkZEF0dGFjaGVkTWVzaEluZGV4KGludCBx
dWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5n
bGUpOworCisgICAgdm9pZCBnZW5lcmF0ZUF0dGFjaGVkTWVzaCgpOworCisgICAgdm9pZCBhZGRE
ZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleChpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFu
Z2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xlKTsKKworICAgIHZvaWQgZ2VuZXJhdGVE
ZXRhY2hlZE1lc2goKTsKKyAgICB2b2lkIGFkZFBvc2l0aW9uQXR0cmlidXRlKGludCBxdWFkWCwg
aW50IHF1YWRZKTsKKyAgICB2b2lkIGFkZFRleENvb3JkQXR0cmlidXRlKGludCBxdWFkWCwgaW50
IHF1YWRZKTsKKyAgICB2b2lkIGFkZE1lc2hDb29yZEF0dHJpYnV0ZShpbnQgcXVhZFgsIGludCBx
dWFkWSk7CisgICAgdm9pZCBhZGRUcmlhbmdsZUNvb3JkQXR0cmlidXRlKGludCBxdWFkWCwgaW50
IHF1YWRZLCBpbnQgdHJpYW5nbGUpOworICAgIHZvaWQgYWRkQXR0YWNoZWRNZXNoVmVydGV4QXR0
cmlidXRlcyhpbnQgcXVhZFgsIGludCBxdWFkWSk7CisgICAgdm9pZCBhZGREZXRhY2hlZE1lc2hW
ZXJ0ZXhBdHRyaWJ1dGVzKGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQg
dHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpOworCisjaWZuZGVmIE5ERUJVRworICAgIHZvaWQgZHVt
cEJ1ZmZlcnMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFZlY3RvcjxmbG9hdD4g
bV92ZXJ0aWNlczsKKyAgICBWZWN0b3I8dWludDE2X3Q+IG1faW5kaWNlczsKKworICAgIEN1c3Rv
bUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbV9tZXNoVHlwZTsKKyAgICBJbnRTaXplIG1fcG9p
bnRzOworICAgIEludFNpemUgbV90aWxlczsKKyAgICBGbG9hdFNpemUgbV90aWxlU2l6ZUluUGl4
ZWxzOworICAgIEZsb2F0U2l6ZSBtX3RpbGVTaXplSW5EZXZpY2VTcGFjZTsKKyAgICBGbG9hdFJl
Y3QgbV9tZXNoQm94OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCisKKyNlbmRpZiAvLyBDdXN0
b21GaWx0ZXJNZXNoR2VuZXJhdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW0uY3BwCmluZGV4IDhhOTZkOTVmMzNlMzQyMWI3YWJmZmQ4NTU2MWJlN2FhMTg0
ZmJjZjYuLjY2ZjFlMTRjMjc4YTE4N2RmOWFkNWQxMTUyMGViYzg5YmM4YTcyMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcApAQCAtMzksNiArMzks
MTAgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAorI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisjaW5jbHVkZSAiTGF5
ZXJDb21waWxlZFByb2dyYW0uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNk
ZWZpbmUgU0hBREVSKFNyYykgKCNTcmMpIApAQCAtNzAsNiArNzQsNyBAQCBTdHJpbmcgQ3VzdG9t
RmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6ZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKCkKIEN1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0o
Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCogZ2xvYmFsQ29udGV4dCwgY29uc3QgQ3VzdG9tRmls
dGVyUHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQogICAgIDogbV9nbG9iYWxDb250ZXh0KGdsb2Jh
bENvbnRleHQpCiAgICAgLCBtX3Byb2dyYW1JbmZvKHByb2dyYW1JbmZvKQorICAgICwgbV9wbGF0
Zm9ybUNvbXBpbGVkUHJvZ3JhbSgwKQogICAgICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQogewog
ICAgIFN0cmluZyBvcmlnaW5hbFZlcnRleFNoYWRlciA9IHByb2dyYW1JbmZvLnZlcnRleFNoYWRl
clN0cmluZygpOwpAQCAtMTA4LDYgKzExMywxOCBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNv
bXBpbGVkUHJvZ3JhbT4gQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Y29tcGlsZWRQcgog
ICAgIHJldHVybiBtX2NvbXBpbGVkUHJvZ3JhbTsKIH0KIAorUGxhdGZvcm1Db21waWxlZFByb2dy
YW1QdHIgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6cGxhdGZvcm1Db21waWxlZFByb2dy
YW0oKQoreworICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQgJiYgIW1fdmFsaWRhdGVkVmVydGV4
U2hhZGVyLmlzTnVsbCgpICYmICFtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLmlzTnVsbCgpKTsK
KworI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisgICAgaWYgKCFtX3BsYXRmb3JtQ29tcGlsZWRQ
cm9ncmFtKQorICAgICAgICBtX3BsYXRmb3JtQ29tcGlsZWRQcm9ncmFtID0gTGF5ZXJDb21waWxl
ZFByb2dyYW06OmNyZWF0ZShtX3ZhbGlkYXRlZFZlcnRleFNoYWRlciwgbV92YWxpZGF0ZWRGcmFn
bWVudFNoYWRlcik7CisjZW5kaWYKKworICAgIHJldHVybiBtX3BsYXRmb3JtQ29tcGlsZWRQcm9n
cmFtOworfQorCiB2b2lkIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnJld3JpdGVNaXhW
ZXJ0ZXhTaGFkZXIoKQogewogICAgIEFTU0VSVChtX3Byb2dyYW1JbmZvLm1peFNldHRpbmdzKCku
ZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5oCmlu
ZGV4IDNhOWUwZjE5Y2VjNjI0OGExZTQzOTdlYjc2NjhlMWYzZDZjM2ViNjkuLjM3MjViNjUxMjRm
YmJlM2M5NTM4NzFkZmIwMGRiZmNhODU5OTlmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyVmFsaWRhdGVkUHJvZ3JhbS5oCkBAIC0zOSw2ICszOSwxOCBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorLy8gUGxhdGZvcm1D
b21waWxlZFByb2dyYW0gZGVmaW5lcyBhIHR5cGUgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhl
IGZyYW1ld29yayB1c2VkIHRvIGltcGxlbWVudCBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBvbiBh
IHBhcnRpY3VsYXIgcGxhdGZvcm0uCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIExheWVyQ29tcGlsZWRQcm9ncmFtOworfQordHlwZWRlZiBXZWJD
b3JlOjpMYXllckNvbXBpbGVkUHJvZ3JhbSBQbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbTsKK3R5cGVk
ZWYgUmVmUHRyPFdlYkNvcmU6OkxheWVyQ29tcGlsZWRQcm9ncmFtPiBQbGF0Zm9ybUNvbXBpbGVk
UHJvZ3JhbVB0cjsKKyNlbHNlCit0eXBlZGVmIHZvaWQgUGxhdGZvcm1Db21waWxlZFByb2dyYW07
Cit0eXBlZGVmIFBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtKiBQbGF0Zm9ybUNvbXBpbGVkUHJvZ3Jh
bVB0cjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFOR0xFV2ViS2l0
QnJpZGdlOwpAQCAtNzEsNiArODMsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtSW5mbzsg
fQogICAgIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBjb21waWxlZFBy
b2dyYW0oKTsKIAorICAgIFBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtUHRyIHBsYXRmb3JtQ29tcGls
ZWRQcm9ncmFtKCk7CisKICAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5pdGlhbGl6ZWQ7IH0KIAogICAgIC8vICdkZXRhY2hGcm9tR2xvYmFsQ29udGV4dCcgaXMg
Y2FsbGVkIHdoZW4gdGhlIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQgaXMgZGVsZXRlZCwgYW5k
IHRoZXJlJ3Mgbm8gbmVlZCBmb3IgdGhlIGNhbGxiYWNrIGFueW1vcmUuIApAQCAtOTUsNiArMTA5
LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlcjsKIAog
ICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IG1fY29tcGlsZWRQcm9ncmFt
OworICAgIFBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtUHRyIG1fcGxhdGZvcm1Db21waWxlZFByb2dy
YW07CiAKICAgICBib29sIG1faXNJbml0aWFsaXplZDsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162137</attachid>
            <date>2012-09-04 17:29:14 -0700</date>
            <delta_ts>2012-09-07 10:06:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94725-20120905022855.patch</filename>
            <type>text/plain</type>
            <size>38458</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ4ZDQyODAxMzU5YjI1
NzVkZGU0YTI0NTk4ZjBjNTJmMGI1NWZlMC4uNjM0ZGExM2ZmN2M4MDU4YTNjMjQwN2UzOTQ0MzY0
MzA4ZGVmZGI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEyLTA5LTA0ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQ1NTIFNoYWRlcnNdIFtC
bGFja0JlcnJ5XSBSZWZhY3RvciBDdXN0b21GaWx0ZXJNZXNoIGFuZCBDdXN0b21GaWx0ZXIqUHJv
Z3JhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3
MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXBh
cmF0ZSB0aGUgTWVzaEdlbmVyYXRvciBmcm9tIHRoZSBDdXN0b21GaWx0ZXJNZXNoIGludG8KKyAg
ICAgICAgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oL2NwcC4gVGhpcyBhbGxvd3MgdGhlIEJs
YWNrQmVycnkgcG9ydCB0bworICAgICAgICByZXVzZSB0aGUgbWVzaCBnZW5lcmF0b3IgaW4gaXRz
IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIEFsc28g
YWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGEgIlBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtIiBmcm9t
IGEKKyAgICAgICAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSwgc28gdGhlIEJsYWNrQmVy
cnkgcG9ydCBjYW4gcmV1c2UgdGhlCisgICAgICAgIHNoYWRlciB2YWxpZGF0aW9uIGNvZGUgaW4g
aXRzIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIEl0
IHR1cm5zIG91dCB0aGUgR3JhcGhpY3NDb250ZXh0M0QgaXMgbm90IG5lZWRlZCBmb3IgQU5HTEUg
dG8gZnVuY3Rpb24sCisgICAgICAgIHNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyBhbiBBU1NFUlQgdGhh
dCByZXF1aXJlZCBhIGNvbnRleHQgYmVmb3JlCisgICAgICAgIHZhbGlkYXRpbmcgdGhlIHNoYWRl
cnMgdXNpbmcgQU5HTEUuIFRoaXMgYWxsb3dzIHRoZSBCbGFja0JlcnJ5IHBvcnQgdG8KKyAgICAg
ICAgcmV1c2UgdGhlIHZhbGlkYXRpb24gY29kZSB3aXRob3V0IHRyaWdnZXJpbmcgdGhlIGFzc2Vy
dC4gSW4gdGhlIGZ1dHVyZSwKKyAgICAgICAgdGhlIHZhbGlkYXRpb24gY29kZSBjb3VsZCBiZSBt
b3ZlZCB0byBhIHNlcGFyYXRlIGNsYXNzIHRvIG1ha2UgaXQgbW9yZQorICAgICAgICBvYnZpb3Vz
IHRoYXQgaXQgaXNuJ3QgcmVhbGx5IHJlbGF0ZWQgdG8gR3JhcGhpY3NDb250ZXh0M0QuCisKKyAg
ICAgICAgSW4gZ2VuZXJhbCwgdGhpcyByZWZhY3RvcmluZyBjYW4gYmUgdXNlZnVsIGZvciBhbnkg
cG9ydCB0aGF0IHVzZXMKKyAgICAgICAgT3BlbkdMIHRvIGltcGxlbWVudCBhY2NlbGVyYXRlZCBj
b21wb3NpdGluZy4KKworICAgICAgICBJbnNwaXJlZCBieSBhbiBvcmlnaW5hbCBwYXRjaCBieSBK
b3NodWEgTmV0dGVyZmllbGQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWNhdXNlIHRoaXMg
cGF0Y2ggaW1wbGVtZW50cyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OmdldFZhbGlk
YXRlZFByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyTWVzaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoOjpDdXN0
b21GaWx0ZXJNZXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6Q3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9y
OjphZGRBdHRhY2hlZE1lc2hJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yOjpnZW5lcmF0ZUF0dGFjaGVkTWVzaCk6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjpnZW5lcmF0ZURl
dGFjaGVkTWVzaCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9y
OjphZGRQb3NpdGlvbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yOjphZGRUZXhDb29yZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGRNZXNoQ29vcmRBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkVHJpYW5nbGVDb29yZEF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjph
ZGRBdHRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZERldGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6ZHVtcEJ1ZmZlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2Vu
ZXJhdG9yOjp2ZXJ0aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2Vu
ZXJhdG9yOjppbmRpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3I6OnBvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJh
dG9yOjpwb2ludHNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2Vu
ZXJhdG9yOjp0aWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJh
dG9yOjp0aWxlc0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3I6OmluZGljZXNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yOjpmbG9hdHNQZXJWZXJ0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvcjo6dmVydGljZXNDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0
b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGRUaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFsaWRh
dGVkUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtOjpjb21waWxlZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFs
aWRhdGVkUHJvZ3JhbTo6fkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0pOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFt
OjpwbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtOjpwbGF0Zm9ybURlc3Ryb3kpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2JsYWNrYmVycnkvQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbUJsYWNrQmVycnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6cGxhdGZv
cm1Db21waWxlZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRh
dGVkUHJvZ3JhbTo6cGxhdGZvcm1EZXN0cm95KToKKwogMjAxMi0wOC0yNCAgU2FtaSBLeW9zdGls
YSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY29t
cG9zaXRpbmcgdGhlIGNvbnRlbnRzIG9mIG92ZXJmbG93OnNjcm9sbCBhcmVhcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNmNhZmI4OTg1NzQwYjg1NTc1NzE4YmI2ZDA2MTU4NjRm
MjNjMzkzMi4uZjZjNjc1NGI4ZDRlYTQ3NDc0ZWViNzI4MmQxYzA4ZDlmODI4M2M1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zMjcxLDYgKzMyNzEsOCBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJNZXNoR2VuZXJhdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRp
b24uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQppbmRleCA4MGRjMjg2OTcwNWI5MDljMDBlMjkzNTg0ODQ4MTk1OWY5
YWYxNzI1Li5hYjRiNjY5MjFlOWI5MTJlZjg0NzY0NzY4YWQyYTNmNDVkMDQ4YjE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKQEAgLTIwMzYsNiArMjAzNiw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmggXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmggXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggXApAQCAtMzIz
OSw2ICszMjQwLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0ZJTFRFUlM9MSkgewogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwIFwK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW0uY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJNZXNoLmNwcCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvci5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwIFwKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMmNkZjk5
MDIxMGZkY2EwZmI1OWM1MWFmMTIyY2Y5OTgwZTczZGFkOS4uZmQwZjNhYjQ3NmIyYzAzNjM2OWVj
MDgyNzVlNjQ4YmQwMDY5YTkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzY4MCw2ICszNjgwLDcg
QEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckds
b2JhbENvbnRleHQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRl
ci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
ck9wZXJhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgnLApAQCAtMzY5Myw2ICszNjk0LDcgQEAKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0
ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGln
aHRTb3VyY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rp
c3RhbnRMaWdodFNvdXJjZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggNGM2NTkzYjE4MjFmMGZkYTM1M2NkMzFjMjJlNzY3ODVlNjgwYzY2
OC4uNTM0NTMwYmMyNjllMjBlYmUzNjAzNjVlZmU3MmU1MTZhYWE3MDIwZiAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMxNjQ5LDYgKzMxNjQ5
LDE0IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJNZXNoR2VuZXJh
dG9yLmNwcCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3IuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEN1c3RvbUZpbHRlck51bWJlclBh
cmFtZXRlci5oIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJHbG9iYWxDb250ZXh0LmNwcAppbmRleCBlMDE0NGI5MDU2YjAxOWRhZDQwZTVhMjRiNDliOTBh
ZGFjMjUxZGRhLi41ODI4NDZlN2Y5M2JjMjRjNDQ4NDJjYzM2N2VkNzlhMWM2MzdiZTYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlckdsb2JhbENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAKQEAgLTg3LDkgKzg3LDYg
QEAgdm9pZCBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpwcmVwYXJlQ29udGV4dElmTmVlZGVk
KEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiAKIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyVmFsaWRh
dGVkUHJvZ3JhbT4gQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6Z2V0VmFsaWRhdGVkUHJvZ3Jh
bShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8pCiB7Ci0gICAgLy8g
Q2hlY2sgdGhhdCB0aGUgY29udGV4dCBpcyBhbHJlYWR5IHByZXBhcmVkLgotICAgIEFTU0VSVCht
X2NvbnRleHQpOwotCiAgICAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbXNNYXA6Oml0ZXJh
dG9yIGl0ZXIgPSBtX3Byb2dyYW1zLmZpbmQocHJvZ3JhbUluZm8pOwogICAgIGlmIChpdGVyICE9
IG1fcHJvZ3JhbXMuZW5kKCkpCiAgICAgICAgIHJldHVybiBpdGVyLT5zZWNvbmQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
ck1lc2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJNZXNoLmNwcAppbmRleCBlMDE0ZjBhMDY0NDI2N2IzYzUzYTc3MWMzM2I5MmVjMDU0
NzllMDU5Li4wMjc4YWJhZDAyNmI1YTBkOTE5ZmM1YzIzMjRhZWYyYmY1MDA2YTBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
ck1lc2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyTWVzaC5jcHAKQEAgLTMxLDIwOSArMzEsMTIgQEAKIAogI2lmIEVOQUJMRShD
U1NfU0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQogI2luY2x1ZGUgIkN1c3RvbUZpbHRlck1l
c2guaCIKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotI2lmbmRl
ZiBOREVCVUcKLS8vIFVzZSAiY2FsbCAnV2ViQ29yZTo6c19kdW1wQ3VzdG9tRmlsdGVyTWVzaEJ1
ZmZlcnMnID0gMSIgaW4gR0RCIHRvIGFjdGl2YXRlIHByaW50aW5nIG9mIHRoZSBtZXNoIGJ1ZmZl
cnMuCi1zdGF0aWMgYm9vbCBzX2R1bXBDdXN0b21GaWx0ZXJNZXNoQnVmZmVycyA9IGZhbHNlOwot
I2VuZGlmCi0KLWNsYXNzIE1lc2hHZW5lcmF0b3IgewotcHVibGljOgotICAgIC8vIExpbmVzIGFu
ZCBjb2x1bW5zIGFyZSB0aGUgdmFsdWVzIHBhc3NlZCBpbiBDU1MuIFRoZSByZXN1bHQgaXMgdmVy
dGV4IG1lc2ggdGhhdCBoYXMgJ3Jvd3MnIG51bWJlcnMgb2Ygcm93cwotICAgIC8vIGFuZCAnY29s
dW1ucycgbnVtYmVyIG9mIGNvbHVtbnMgd2l0aCBhIHRvdGFsIG9mICdyb3dzICsgMScgKiAnY29s
dW1ucyArIDEnIHZlcnRpY2VzLgotICAgIC8vIE1lc2hCb3ggaXMgdGhlIGZpbHRlcmVkIGFyZWEg
Y2FsY3VsYXRlZCBkZWZpbmVkIHVzaW5nIHRoZSBib3JkZXItYm94LCBwYWRkaW5nLWJveCwgY29u
dGVudC1ib3ggb3IgZmlsdGVyLWJveCAKLSAgICAvLyBhdHRyaWJ1dGVzLiBBIHZhbHVlIG9mICgw
LCAwLCAxLCAxKSB3aWxsIGNvdmVyIHRoZSBlbnRpcmUgb3V0cHV0IHN1cmZhY2UuCi0gICAgTWVz
aEdlbmVyYXRvcih1bnNpZ25lZCBjb2x1bW5zLCB1bnNpZ25lZCByb3dzLCBjb25zdCBGbG9hdFJl
Y3QmIG1lc2hCb3gsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUpCi0g
ICAgICAgIDogbV9tZXNoVHlwZShtZXNoVHlwZSkKLSAgICAgICAgLCBtX3BvaW50cyhjb2x1bW5z
ICsgMSwgcm93cyArIDEpCi0gICAgICAgICwgbV90aWxlcyhjb2x1bW5zLCByb3dzKQotICAgICAg
ICAsIG1fdGlsZVNpemVJblBpeGVscyhtZXNoQm94LndpZHRoKCkgLyBtX3RpbGVzLndpZHRoKCks
IG1lc2hCb3guaGVpZ2h0KCkgLyBtX3RpbGVzLmhlaWdodCgpKQotICAgICAgICAsIG1fdGlsZVNp
emVJbkRldmljZVNwYWNlKDEuMGYgLyBtX3RpbGVzLndpZHRoKCksIDEuMGYgLyBtX3RpbGVzLmhl
aWdodCgpKQotICAgICAgICAsIG1fbWVzaEJveChtZXNoQm94KQotICAgIHsKLSAgICAgICAgLy8g
QnVpbGQgdGhlIHR3byBidWZmZXJzIG5lZWRlZCB0byBkcmF3IHRyaWFuZ2xlczoKLSAgICAgICAg
Ly8gKiBtX3ZlcnRpY2VzIGhhcyBhIG51bWJlciBvZiBmbG9hdCBhdHRyaWJ1dGVzIHRoYXQgd2ls
bCBiZSBwYXNzZWQgdG8gdGhlIHZlcnRleCBzaGFkZXIKLSAgICAgICAgLy8gZm9yIGVhY2ggY29t
cHV0ZWQgdmVydGV4LiBUaGlzIG51bWJlciBpcyBjYWxjdWxhdGVkIGluIGZsb2F0c1BlclZlcnRl
eCgpIGJhc2VkIG9uIHRoZSBtZXNoVHlwZS4KLSAgICAgICAgLy8gKiBtX2luZGljZXMgaXMgYSBi
dWZmZXIgdGhhdCB3aWxsIGhhdmUgMyBpbmRpY2VzIHBlciB0cmlhbmdsZS4gRWFjaCBpbmRleCB3
aWxsIHBvaW50IGluc2lkZQotICAgICAgICAvLyB0aGUgbV92ZXJ0aWNlcyBidWZmZXIuCi0gICAg
ICAgIG1fdmVydGljZXMucmVzZXJ2ZUNhcGFjaXR5KHZlcnRpY2VzQ291bnQoKSAqIGZsb2F0c1Bl
clZlcnRleCgpKTsKLSAgICAgICAgbV9pbmRpY2VzLnJlc2VydmVDYXBhY2l0eShpbmRpY2VzQ291
bnQoKSk7Ci0gICAgICAgIAotICAgICAgICAvLyBCYXNlZCBvbiB0aGUgbWVzaFR5cGUgdGhlcmUg
Y2FuIGJlIHR3byB0eXBlcyBvZiBtZXNoZXMuCi0gICAgICAgIC8vICogYXR0YWNoZWQ6IGVhY2gg
dHJpYW5nbGUgdXNlcyB2ZXJ0aWNlcyBmcm9tIHRoZSBuZWlnaGJvciB0cmlhbmdsZXMuIFRoaXMg
aXMgdXNlZnVsIHRvIHNhdmUgc29tZSBHUFUgbWVtb3J5Ci0gICAgICAgIC8vIHdoZW4gdGhlcmUn
cyBubyBuZWVkIHRvIGV4cGxvZGUgdGhlIHRpbGVzLgotICAgICAgICAvLyAqIGRldGFjaGVkOiBl
YWNoIHRyaWFuZ2xlIGhhcyBpdHMgb3duIHZlcnRpY2VzLiBUaGlzIG1lYW5zIGVhY2ggdHJpYW5n
bGUgY2FuIGJlIG1vdmVkIGluZGVwZW5kZW50bHkgYW5kIGEgdmVjMwotICAgICAgICAvLyBhdHRy
aWJ1dGUgaXMgcGFzc2VkLCBzbyB0aGF0IGVhY2ggdmVydGV4IGNhbiBiZSB1bmlxdWVseSBpZGVu
dGlmaWVkLgotICAgICAgICBpZiAobV9tZXNoVHlwZSA9PSBDdXN0b21GaWx0ZXJPcGVyYXRpb246
OkFUVEFDSEVEKQotICAgICAgICAgICAgZ2VuZXJhdGVBdHRhY2hlZE1lc2goKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZ2VuZXJhdGVEZXRhY2hlZE1lc2goKTsKLSAgICAgICAgCi0jaWZu
ZGVmIE5ERUJVRwotICAgICAgICBpZiAoc19kdW1wQ3VzdG9tRmlsdGVyTWVzaEJ1ZmZlcnMpCi0g
ICAgICAgICAgICBkdW1wQnVmZmVycygpOwotI2VuZGlmCi0gICAgfQotCi0gICAgY29uc3QgVmVj
dG9yPGZsb2F0PiYgdmVydGljZXMoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2VzOyB9Ci0gICAg
Y29uc3QgVmVjdG9yPHVpbnQxNl90PiYgaW5kaWNlcygpIGNvbnN0IHsgcmV0dXJuIG1faW5kaWNl
czsgfQotCi0gICAgY29uc3QgSW50U2l6ZSYgcG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb2lu
dHM7IH0KLSAgICB1bnNpZ25lZCBwb2ludHNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRz
LndpZHRoKCkgKiBtX3BvaW50cy5oZWlnaHQoKTsgfQotICAgIAotICAgIGNvbnN0IEludFNpemUm
IHRpbGVzKCkgY29uc3QgeyByZXR1cm4gbV90aWxlczsgfQotICAgIHVuc2lnbmVkIHRpbGVzQ291
bnQoKSBjb25zdCB7IHJldHVybiBtX3RpbGVzLndpZHRoKCkgKiBtX3RpbGVzLmhlaWdodCgpOyB9
Ci0gICAgCi0gICAgdW5zaWduZWQgaW5kaWNlc0NvdW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IGNvbnN0IHVuc2lnbmVkIHRyaWFuZ2xlc1BlclRpbGUgPSAyOwotICAgICAgICBjb25zdCB1bnNp
Z25lZCBpbmRpY2VzUGVyVHJpYW5nbGUgPSAzOwotICAgICAgICByZXR1cm4gdGlsZXNDb3VudCgp
ICogdHJpYW5nbGVzUGVyVGlsZSAqIGluZGljZXNQZXJUcmlhbmdsZTsKLSAgICB9Ci0gICAgCi0g
ICAgdW5zaWduZWQgZmxvYXRzUGVyVmVydGV4KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBBdHRhY2hlZE1lc2hWZXJ0ZXhTaXplID0gNCArIC8vIHZlYzQgYV9w
b3NpdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIgKyAvLyB2ZWMyIGFfdGV4Q29vcmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOyAvLyB2ZWMyIGFfbWVzaENvb3JkCi0KLSAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERldGFjaGVkTWVzaFZlcnRleFNpemUgPSBBdHRh
Y2hlZE1lc2hWZXJ0ZXhTaXplICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzOyAvLyB2ZWMzIGFfdHJpYW5nbGVDb29yZAotCi0gICAgICAg
IHJldHVybiBtX21lc2hUeXBlID09IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6QVRUQUNIRUQgPyBB
dHRhY2hlZE1lc2hWZXJ0ZXhTaXplIDogRGV0YWNoZWRNZXNoVmVydGV4U2l6ZTsKLSAgICB9Ci0g
ICAgCi0gICAgdW5zaWduZWQgdmVydGljZXNDb3VudCgpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9tZXNoVHlwZSA9PSBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVEID8gcG9p
bnRzQ291bnQoKSA6IGluZGljZXNDb3VudCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB0eXBl
ZGVmIHZvaWQgKE1lc2hHZW5lcmF0b3I6OipBZGRUcmlhbmdsZVZlcnRleEZ1bmN0aW9uKShpbnQg
cXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFu
Z2xlKTsKLSAgICAKLSAgICB0ZW1wbGF0ZSA8QWRkVHJpYW5nbGVWZXJ0ZXhGdW5jdGlvbiBhZGRU
cmlhbmdsZVZlcnRleD4KLSAgICB2b2lkIGFkZFRpbGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCi0g
ICAgewotICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZ
LCAwLCAwLCAxKTsKLSAgICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRY
LCBxdWFkWSwgMSwgMCwgMik7Ci0gICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgp
KShxdWFkWCwgcXVhZFksIDEsIDEsIDMpOwotICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xl
VmVydGV4KSkocXVhZFgsIHF1YWRZLCAwLCAwLCA0KTsKLSAgICAgICAgKCgqdGhpcykuKihhZGRU
cmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMSwgMSwgNSk7Ci0gICAgICAgICgoKnRoaXMp
LiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDAsIDEsIDYpOwotICAgIH0KLSAg
ICAKLSAgICB2b2lkIGFkZEF0dGFjaGVkTWVzaEluZGV4KGludCBxdWFkWCwgaW50IHF1YWRZLCBp
bnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpCi0gICAgewotICAgICAg
ICBVTlVTRURfUEFSQU0odHJpYW5nbGUpOwotICAgICAgICBtX2luZGljZXMuYXBwZW5kKChxdWFk
WSArIHRyaWFuZ2xlWSkgKiBtX3BvaW50cy53aWR0aCgpICsgKHF1YWRYICsgdHJpYW5nbGVYKSk7
Ci0gICAgfQotICAgIAotICAgIHZvaWQgZ2VuZXJhdGVBdHRhY2hlZE1lc2goKQotICAgIHsKLSAg
ICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtX3BvaW50cy5oZWlnaHQoKTsgKytqKSB7Ci0gICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fcG9pbnRzLndpZHRoKCk7ICsraSkKLSAgICAg
ICAgICAgICAgICBhZGRBdHRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKGksIGopOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG1fdGlsZXMuaGVpZ2h0
KCk7ICsraikgewotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3RpbGVzLndpZHRo
KCk7ICsraSkKLSAgICAgICAgICAgICAgICBhZGRUaWxlPCZNZXNoR2VuZXJhdG9yOjphZGRBdHRh
Y2hlZE1lc2hJbmRleD4oaSwgaik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgdm9pZCBh
ZGREZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleChpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRy
aWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xlKQotICAgIHsKLSAgICAgICAgYWRk
RGV0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhxdWFkWCwgcXVhZFksIHRyaWFuZ2xlWCwgdHJp
YW5nbGVZLCB0cmlhbmdsZSk7Ci0gICAgICAgIG1faW5kaWNlcy5hcHBlbmQobV9pbmRpY2VzLnNp
emUoKSk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgZ2VuZXJhdGVEZXRhY2hlZE1lc2goKQotICAg
IHsKLSAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtX3RpbGVzLmhlaWdodCgpOyArK2opIHsK
LSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV90aWxlcy53aWR0aCgpOyArK2kpCi0g
ICAgICAgICAgICAgICAgYWRkVGlsZTwmTWVzaEdlbmVyYXRvcjo6YWRkRGV0YWNoZWRNZXNoVmVy
dGV4QW5kSW5kZXg+KGksIGopOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHZvaWQgYWRk
UG9zaXRpb25BdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCi0gICAgewotICAgICAgICAv
LyB2ZWM0IGFfcG9zaXRpb24KLSAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUlu
UGl4ZWxzLndpZHRoKCkgKiBxdWFkWCAtIDAuNWYgKyBtX21lc2hCb3gueCgpKTsKLSAgICAgICAg
bV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluUGl4ZWxzLmhlaWdodCgpICogcXVhZFkgLSAw
LjVmICsgbV9tZXNoQm94LnkoKSk7Ci0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKDAuMGYpOyAv
LyB6Ci0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKDEuMGYpOwotICAgIH0KLQotICAgIHZvaWQg
YWRkVGV4Q29vcmRBdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCi0gICAgewotICAgICAg
ICAvLyB2ZWMyIGFfdGV4Q29vcmQKLSAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6
ZUluUGl4ZWxzLndpZHRoKCkgKiBxdWFkWCArIG1fbWVzaEJveC54KCkpOwotICAgICAgICBtX3Zl
cnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5QaXhlbHMuaGVpZ2h0KCkgKiBxdWFkWSArIG1fbWVz
aEJveC55KCkpOwotICAgIH0KLQotICAgIHZvaWQgYWRkTWVzaENvb3JkQXR0cmlidXRlKGludCBx
dWFkWCwgaW50IHF1YWRZKQotICAgIHsKLSAgICAgICAgLy8gdmVjMiBhX21lc2hDb29yZAotICAg
ICAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5EZXZpY2VTcGFjZS53aWR0aCgpICog
cXVhZFgpOwotICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5EZXZpY2VTcGFj
ZS5oZWlnaHQoKSAqIHF1YWRZKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZFRyaWFuZ2xlQ29vcmRB
dHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZSkKLSAgICB7Ci0gICAg
ICAgIC8vIHZlYzMgYV90cmlhbmdsZUNvb3JkCi0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKHF1
YWRYKTsKLSAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQocXVhZFkpOwotICAgICAgICBtX3ZlcnRp
Y2VzLmFwcGVuZCh0cmlhbmdsZSk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRBdHRhY2hlZE1lc2hW
ZXJ0ZXhBdHRyaWJ1dGVzKGludCBxdWFkWCwgaW50IHF1YWRZKQotICAgIHsKLSAgICAgICAgYWRk
UG9zaXRpb25BdHRyaWJ1dGUocXVhZFgsIHF1YWRZKTsKLSAgICAgICAgYWRkVGV4Q29vcmRBdHRy
aWJ1dGUocXVhZFgsIHF1YWRZKTsKLSAgICAgICAgYWRkTWVzaENvb3JkQXR0cmlidXRlKHF1YWRY
LCBxdWFkWSk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1
dGVzKGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBp
bnQgdHJpYW5nbGUpCi0gICAgewotICAgICAgICBhZGRBdHRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1
dGVzKHF1YWRYICsgdHJpYW5nbGVYLCBxdWFkWSArIHRyaWFuZ2xlWSk7Ci0gICAgICAgIGFkZFRy
aWFuZ2xlQ29vcmRBdHRyaWJ1dGUocXVhZFgsIHF1YWRZLCB0cmlhbmdsZSk7Ci0gICAgfQotICAg
IAotI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGR1bXBCdWZmZXJzKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHByaW50ZigiTWVzaCBidWZmZXJzOiBQb2ludHMud2lkdGgoKTogJWQsIFBvaW50cy5o
ZWlnaHQoKTogJWQgbWVzaEJveDogJWYsICVmLCAlZiwgJWYsIHR5cGU6ICVzXG4iLCAKLSAgICAg
ICAgICAgICAgIG1fcG9pbnRzLndpZHRoKCksIG1fcG9pbnRzLmhlaWdodCgpLCBtX21lc2hCb3gu
eCgpLCBtX21lc2hCb3gueSgpLCBtX21lc2hCb3gud2lkdGgoKSwgbV9tZXNoQm94LmhlaWdodCgp
LCAKLSAgICAgICAgICAgICAgIChtX21lc2hUeXBlID09IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6
QVRUQUNIRUQpID8gIkF0dGFjaGVkIiA6ICJEZXRhY2hlZCIpOwotICAgICAgICBwcmludGYoIi0t
LVZlcnRleDpcblx0Iik7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZlcnRp
Y2VzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBwcmludGYoIiVmICIsIG1fdmVydGljZXMu
YXQoaSkpOwotICAgICAgICAgICAgaWYgKCEoKGkgKyAxKSAlIGZsb2F0c1BlclZlcnRleCgpKSkK
LSAgICAgICAgICAgICAgICBwcmludGYoIlxuXHQiKTsKLSAgICAgICAgfQotICAgICAgICBwcmlu
dGYoIlxuLS0tSW5kaWNlczogIik7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2luZGljZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBwcmludGYoIiVkICIsIG1faW5kaWNl
cy5hdChpKSk7Ci0gICAgICAgIHByaW50ZigiXG4iKTsKLSAgICB9Ci0jZW5kaWYKLQotcHJpdmF0
ZToKLSAgICBWZWN0b3I8ZmxvYXQ+IG1fdmVydGljZXM7Ci0gICAgVmVjdG9yPHVpbnQxNl90PiBt
X2luZGljZXM7Ci0gICAgCi0gICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtX21l
c2hUeXBlOwotICAgIEludFNpemUgbV9wb2ludHM7Ci0gICAgSW50U2l6ZSBtX3RpbGVzOwotICAg
IEZsb2F0U2l6ZSBtX3RpbGVTaXplSW5QaXhlbHM7Ci0gICAgRmxvYXRTaXplIG1fdGlsZVNpemVJ
bkRldmljZVNwYWNlOwotICAgIEZsb2F0UmVjdCBtX21lc2hCb3g7Ci19OwogCi1DdXN0b21GaWx0
ZXJNZXNoOjpDdXN0b21GaWx0ZXJNZXNoKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNp
Z25lZCBjb2x1bW5zLCB1bnNpZ25lZCByb3dzLCAKK0N1c3RvbUZpbHRlck1lc2g6OkN1c3RvbUZp
bHRlck1lc2goR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIGNvbHVtbnMsIHVu
c2lnbmVkIHJvd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZs
b2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlw
ZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV92ZXJ0aWNlc0J1ZmZlck9iamVj
dCgwKQpAQCAtMjQxLDcgKzQ0LDcgQEAgQ3VzdG9tRmlsdGVyTWVzaDo6Q3VzdG9tRmlsdGVyTWVz
aChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgY29sdW1ucywKICAgICAsIG1f
bWVzaEJveChtZXNoQm94KQogICAgICwgbV9tZXNoVHlwZShtZXNoVHlwZSkKIHsKLSAgICBNZXNo
R2VuZXJhdG9yIGdlbmVyYXRvcihjb2x1bW5zLCByb3dzLCBtZXNoQm94LCBtZXNoVHlwZSk7Cisg
ICAgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvciBnZW5lcmF0b3IoY29sdW1ucywgcm93cywgbWVz
aEJveCwgbWVzaFR5cGUpOwogICAgIG1faW5kaWNlc0NvdW50ID0gZ2VuZXJhdG9yLmluZGljZXND
b3VudCgpOwogICAgIG1fYnl0ZXNQZXJWZXJ0ZXggPSBnZW5lcmF0b3IuZmxvYXRzUGVyVmVydGV4
KCkgKiBzaXplb2YoZmxvYXQpOyAgICAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q5ZDRkMWIyMGQzMjViNWE5ZGRkMWM5ZDNmNWJkZjg3
ZjcxYzY2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAKQEAgLTAsMCArMSwxNzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJ
U+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICog
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
CisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQorI2luY2x1ZGUg
IkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisj
aWZuZGVmIE5ERUJVRworLy8gVXNlICJjYWxsICdXZWJDb3JlOjpzX2R1bXBDdXN0b21GaWx0ZXJN
ZXNoQnVmZmVycycgPSAxIiBpbiBHREIgdG8gYWN0aXZhdGUgcHJpbnRpbmcgb2YgdGhlIG1lc2gg
YnVmZmVycy4KK3N0YXRpYyBib29sIHNfZHVtcEN1c3RvbUZpbHRlck1lc2hCdWZmZXJzID0gZmFs
c2U7CisjZW5kaWYKKworQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6Q3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvcih1bnNpZ25lZCBjb2x1bW5zLCB1bnNpZ25lZCByb3dzLCBjb25zdCBGbG9hdFJl
Y3QmIG1lc2hCb3gsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUpCisg
ICAgOiBtX21lc2hUeXBlKG1lc2hUeXBlKQorICAgICwgbV9wb2ludHMoY29sdW1ucyArIDEsIHJv
d3MgKyAxKQorICAgICwgbV90aWxlcyhjb2x1bW5zLCByb3dzKQorICAgICwgbV90aWxlU2l6ZUlu
UGl4ZWxzKG1lc2hCb3gud2lkdGgoKSAvIG1fdGlsZXMud2lkdGgoKSwgbWVzaEJveC5oZWlnaHQo
KSAvIG1fdGlsZXMuaGVpZ2h0KCkpCisgICAgLCBtX3RpbGVTaXplSW5EZXZpY2VTcGFjZSgxLjBm
IC8gbV90aWxlcy53aWR0aCgpLCAxLjBmIC8gbV90aWxlcy5oZWlnaHQoKSkKKyAgICAsIG1fbWVz
aEJveChtZXNoQm94KQoreworICAgIC8vIEJ1aWxkIHRoZSB0d28gYnVmZmVycyBuZWVkZWQgdG8g
ZHJhdyB0cmlhbmdsZXM6CisgICAgLy8gKiBtX3ZlcnRpY2VzIGhhcyBhIG51bWJlciBvZiBmbG9h
dCBhdHRyaWJ1dGVzIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIHZlcnRleCBzaGFkZXIKKyAg
ICAvLyBmb3IgZWFjaCBjb21wdXRlZCB2ZXJ0ZXguIFRoaXMgbnVtYmVyIGlzIGNhbGN1bGF0ZWQg
aW4gZmxvYXRzUGVyVmVydGV4KCkgYmFzZWQgb24gdGhlIG1lc2hUeXBlLgorICAgIC8vICogbV9p
bmRpY2VzIGlzIGEgYnVmZmVyIHRoYXQgd2lsbCBoYXZlIDMgaW5kaWNlcyBwZXIgdHJpYW5nbGUu
IEVhY2ggaW5kZXggd2lsbCBwb2ludCBpbnNpZGUKKyAgICAvLyB0aGUgbV92ZXJ0aWNlcyBidWZm
ZXIuCisgICAgbV92ZXJ0aWNlcy5yZXNlcnZlQ2FwYWNpdHkodmVydGljZXNDb3VudCgpICogZmxv
YXRzUGVyVmVydGV4KCkpOworICAgIG1faW5kaWNlcy5yZXNlcnZlQ2FwYWNpdHkoaW5kaWNlc0Nv
dW50KCkpOworCisgICAgLy8gQmFzZWQgb24gdGhlIG1lc2hUeXBlIHRoZXJlIGNhbiBiZSB0d28g
dHlwZXMgb2YgbWVzaGVzLgorICAgIC8vICogYXR0YWNoZWQ6IGVhY2ggdHJpYW5nbGUgdXNlcyB2
ZXJ0aWNlcyBmcm9tIHRoZSBuZWlnaGJvciB0cmlhbmdsZXMuIFRoaXMgaXMgdXNlZnVsIHRvIHNh
dmUgc29tZSBHUFUgbWVtb3J5CisgICAgLy8gd2hlbiB0aGVyZSdzIG5vIG5lZWQgdG8gZXhwbG9k
ZSB0aGUgdGlsZXMuCisgICAgLy8gKiBkZXRhY2hlZDogZWFjaCB0cmlhbmdsZSBoYXMgaXRzIG93
biB2ZXJ0aWNlcy4gVGhpcyBtZWFucyBlYWNoIHRyaWFuZ2xlIGNhbiBiZSBtb3ZlZCBpbmRlcGVu
ZGVudGx5IGFuZCBhIHZlYzMKKyAgICAvLyBhdHRyaWJ1dGUgaXMgcGFzc2VkLCBzbyB0aGF0IGVh
Y2ggdmVydGV4IGNhbiBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgorICAgIGlmIChtX21lc2hUeXBl
ID09IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6QVRUQUNIRUQpCisgICAgICAgIGdlbmVyYXRlQXR0
YWNoZWRNZXNoKCk7CisgICAgZWxzZQorICAgICAgICBnZW5lcmF0ZURldGFjaGVkTWVzaCgpOwor
CisjaWZuZGVmIE5ERUJVRworICAgIGlmIChzX2R1bXBDdXN0b21GaWx0ZXJNZXNoQnVmZmVycykK
KyAgICAgICAgZHVtcEJ1ZmZlcnMoKTsKKyNlbmRpZgorfQorCit2b2lkIEN1c3RvbUZpbHRlck1l
c2hHZW5lcmF0b3I6OmFkZEF0dGFjaGVkTWVzaEluZGV4KGludCBxdWFkWCwgaW50IHF1YWRZLCBp
bnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpCit7CisgICAgVU5VU0VE
X1BBUkFNKHRyaWFuZ2xlKTsKKyAgICBtX2luZGljZXMuYXBwZW5kKChxdWFkWSArIHRyaWFuZ2xl
WSkgKiBtX3BvaW50cy53aWR0aCgpICsgKHF1YWRYICsgdHJpYW5nbGVYKSk7Cit9CisKK3ZvaWQg
Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6Z2VuZXJhdGVBdHRhY2hlZE1lc2goKQoreworICAg
IGZvciAoaW50IGogPSAwOyBqIDwgbV9wb2ludHMuaGVpZ2h0KCk7ICsraikgeworICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG1fcG9pbnRzLndpZHRoKCk7ICsraSkKKyAgICAgICAgICAgIGFk
ZEF0dGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMoaSwgaik7CisgICAgfQorCisgICAgZm9yIChp
bnQgaiA9IDA7IGogPCBtX3RpbGVzLmhlaWdodCgpOyArK2opIHsKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBtX3RpbGVzLndpZHRoKCk7ICsraSkKKyAgICAgICAgICAgIGFkZFRpbGU8JkN1
c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZEF0dGFjaGVkTWVzaEluZGV4PihpLCBqKTsKKyAg
ICB9Cit9CisKK3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkRGV0YWNoZWRNZXNo
VmVydGV4QW5kSW5kZXgoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0
cmlhbmdsZVksIGludCB0cmlhbmdsZSkKK3sKKyAgICBhZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRy
aWJ1dGVzKHF1YWRYLCBxdWFkWSwgdHJpYW5nbGVYLCB0cmlhbmdsZVksIHRyaWFuZ2xlKTsKKyAg
ICBtX2luZGljZXMuYXBwZW5kKG1faW5kaWNlcy5zaXplKCkpOworfQorCit2b2lkIEN1c3RvbUZp
bHRlck1lc2hHZW5lcmF0b3I6OmdlbmVyYXRlRGV0YWNoZWRNZXNoKCkKK3sKKyAgICBmb3IgKGlu
dCBqID0gMDsgaiA8IG1fdGlsZXMuaGVpZ2h0KCk7ICsraikgeworICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG1fdGlsZXMud2lkdGgoKTsgKytpKQorICAgICAgICAgICAgYWRkVGlsZTwmQ3Vz
dG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkRGV0YWNoZWRNZXNoVmVydGV4QW5kSW5kZXg+KGks
IGopOworICAgIH0KK30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGRQb3Np
dGlvbkF0dHJpYnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSkKK3sKKyAgICAvLyB2ZWM0IGFfcG9z
aXRpb24KKyAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5QaXhlbHMud2lkdGgoKSAq
IHF1YWRYIC0gMC41ZiArIG1fbWVzaEJveC54KCkpOworICAgIG1fdmVydGljZXMuYXBwZW5kKG1f
dGlsZVNpemVJblBpeGVscy5oZWlnaHQoKSAqIHF1YWRZIC0gMC41ZiArIG1fbWVzaEJveC55KCkp
OworICAgIG1fdmVydGljZXMuYXBwZW5kKDAuMGYpOyAvLyB6CisgICAgbV92ZXJ0aWNlcy5hcHBl
bmQoMS4wZik7Cit9CisKK3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkVGV4Q29v
cmRBdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCit7CisgICAgLy8gdmVjMiBhX3RleENv
b3JkCisgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluUGl4ZWxzLndpZHRoKCkgKiBx
dWFkWCArIG1fbWVzaEJveC54KCkpOworICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJ
blBpeGVscy5oZWlnaHQoKSAqIHF1YWRZICsgbV9tZXNoQm94LnkoKSk7Cit9CisKK3ZvaWQgQ3Vz
dG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkTWVzaENvb3JkQXR0cmlidXRlKGludCBxdWFkWCwg
aW50IHF1YWRZKQoreworICAgIC8vIHZlYzIgYV9tZXNoQ29vcmQKKyAgICBtX3ZlcnRpY2VzLmFw
cGVuZChtX3RpbGVTaXplSW5EZXZpY2VTcGFjZS53aWR0aCgpICogcXVhZFgpOworICAgIG1fdmVy
dGljZXMuYXBwZW5kKG1fdGlsZVNpemVJbkRldmljZVNwYWNlLmhlaWdodCgpICogcXVhZFkpOwor
fQorCit2b2lkIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZFRyaWFuZ2xlQ29vcmRBdHRy
aWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZSkKK3sKKyAgICAvLyB2ZWMz
IGFfdHJpYW5nbGVDb29yZAorICAgIG1fdmVydGljZXMuYXBwZW5kKHF1YWRYKTsKKyAgICBtX3Zl
cnRpY2VzLmFwcGVuZChxdWFkWSk7CisgICAgbV92ZXJ0aWNlcy5hcHBlbmQodHJpYW5nbGUpOwor
fQorCit2b2lkIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZEF0dGFjaGVkTWVzaFZlcnRl
eEF0dHJpYnV0ZXMoaW50IHF1YWRYLCBpbnQgcXVhZFkpCit7CisgICAgYWRkUG9zaXRpb25BdHRy
aWJ1dGUocXVhZFgsIHF1YWRZKTsKKyAgICBhZGRUZXhDb29yZEF0dHJpYnV0ZShxdWFkWCwgcXVh
ZFkpOworICAgIGFkZE1lc2hDb29yZEF0dHJpYnV0ZShxdWFkWCwgcXVhZFkpOworfQorCit2b2lk
IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZERldGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0
ZXMoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGlu
dCB0cmlhbmdsZSkKK3sKKyAgICBhZGRBdHRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKHF1YWRY
ICsgdHJpYW5nbGVYLCBxdWFkWSArIHRyaWFuZ2xlWSk7CisgICAgYWRkVHJpYW5nbGVDb29yZEF0
dHJpYnV0ZShxdWFkWCwgcXVhZFksIHRyaWFuZ2xlKTsKK30KKworI2lmbmRlZiBOREVCVUcKK3Zv
aWQgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6ZHVtcEJ1ZmZlcnMoKSBjb25zdAoreworICAg
IHByaW50ZigiTWVzaCBidWZmZXJzOiBQb2ludHMud2lkdGgoKTogJWQsIFBvaW50cy5oZWlnaHQo
KTogJWQgbWVzaEJveDogJWYsICVmLCAlZiwgJWYsIHR5cGU6ICVzXG4iLAorICAgICAgICAgICBt
X3BvaW50cy53aWR0aCgpLCBtX3BvaW50cy5oZWlnaHQoKSwgbV9tZXNoQm94LngoKSwgbV9tZXNo
Qm94LnkoKSwgbV9tZXNoQm94LndpZHRoKCksIG1fbWVzaEJveC5oZWlnaHQoKSwKKyAgICAgICAg
ICAgKG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCkgPyAiQXR0
YWNoZWQiIDogIkRldGFjaGVkIik7CisgICAgcHJpbnRmKCItLS1WZXJ0ZXg6XG5cdCIpOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZlcnRpY2VzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIHByaW50ZigiJWYgIiwgbV92ZXJ0aWNlcy5hdChpKSk7CisgICAgICAgIGlmICghKChpICsg
MSkgJSBmbG9hdHNQZXJWZXJ0ZXgoKSkpCisgICAgICAgICAgICBwcmludGYoIlxuXHQiKTsKKyAg
ICB9CisgICAgcHJpbnRmKCJcbi0tLUluZGljZXM6ICIpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2luZGljZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHByaW50ZigiJWQgIiwgbV9p
bmRpY2VzLmF0KGkpKTsKKyAgICBwcmludGYoIlxuIik7Cit9CisjZW5kaWYKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0Rf
R1JBUEhJQ1MpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDlmNzU2MjFiNDY1ZDE2MWU3NWRjZGU2ZDIxOWUxYTk2YjY5YmRmMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyTWVzaEdlbmVyYXRvci5oCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3JfaAorI2Rl
ZmluZSBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yX2gKKworI2lmIEVOQUJMRShDU1NfU0hBREVS
UykgJiYgVVNFKDNEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
LmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvciB7CitwdWJsaWM6CisgICAgLy8gTGluZXMgYW5k
IGNvbHVtbnMgYXJlIHRoZSB2YWx1ZXMgcGFzc2VkIGluIENTUy4gVGhlIHJlc3VsdCBpcyB2ZXJ0
ZXggbWVzaCB0aGF0IGhhcyAncm93cycgbnVtYmVycyBvZiByb3dzCisgICAgLy8gYW5kICdjb2x1
bW5zJyBudW1iZXIgb2YgY29sdW1ucyB3aXRoIGEgdG90YWwgb2YgJ3Jvd3MgKyAxJyAqICdjb2x1
bW5zICsgMScgdmVydGljZXMuCisgICAgLy8gTWVzaEJveCBpcyB0aGUgZmlsdGVyZWQgYXJlYSBj
YWxjdWxhdGVkIGRlZmluZWQgdXNpbmcgdGhlIGJvcmRlci1ib3gsIHBhZGRpbmctYm94LCBjb250
ZW50LWJveCBvciBmaWx0ZXItYm94CisgICAgLy8gYXR0cmlidXRlcy4gQSB2YWx1ZSBvZiAoMCwg
MCwgMSwgMSkgd2lsbCBjb3ZlciB0aGUgZW50aXJlIG91dHB1dCBzdXJmYWNlLgorICAgIEN1c3Rv
bUZpbHRlck1lc2hHZW5lcmF0b3IodW5zaWduZWQgY29sdW1ucywgdW5zaWduZWQgcm93cywgY29u
c3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlKTsK
KworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2VzKCkgY29uc3QgeyByZXR1cm4gbV92
ZXJ0aWNlczsgfQorICAgIGNvbnN0IFZlY3Rvcjx1aW50MTZfdD4mIGluZGljZXMoKSBjb25zdCB7
IHJldHVybiBtX2luZGljZXM7IH0KKworICAgIGNvbnN0IEludFNpemUmIHBvaW50cygpIGNvbnN0
IHsgcmV0dXJuIG1fcG9pbnRzOyB9CisgICAgdW5zaWduZWQgcG9pbnRzQ291bnQoKSBjb25zdCB7
IHJldHVybiBtX3BvaW50cy53aWR0aCgpICogbV9wb2ludHMuaGVpZ2h0KCk7IH0KKworICAgIGNv
bnN0IEludFNpemUmIHRpbGVzKCkgY29uc3QgeyByZXR1cm4gbV90aWxlczsgfQorICAgIHVuc2ln
bmVkIHRpbGVzQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3RpbGVzLndpZHRoKCkgKiBtX3RpbGVz
LmhlaWdodCgpOyB9CisKKyAgICB1bnNpZ25lZCBpbmRpY2VzQ291bnQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgY29uc3QgdW5zaWduZWQgdHJpYW5nbGVzUGVyVGlsZSA9IDI7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIGluZGljZXNQZXJUcmlhbmdsZSA9IDM7CisgICAgICAgIHJldHVybiB0aWxl
c0NvdW50KCkgKiB0cmlhbmdsZXNQZXJUaWxlICogaW5kaWNlc1BlclRyaWFuZ2xlOworICAgIH0K
KworICAgIHVuc2lnbmVkIGZsb2F0c1BlclZlcnRleCgpIGNvbnN0CisgICAgeworICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgQXR0YWNoZWRNZXNoVmVydGV4U2l6ZSA9IDQgKyAvLyB2ZWM0
IGFfcG9zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyICsgLy8gdmVjMiBhX3RleENvb3JkCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjsgLy8gdmVjMiBhX21lc2hDb29yZAor
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBEZXRhY2hlZE1lc2hWZXJ0ZXhTaXplID0g
QXR0YWNoZWRNZXNoVmVydGV4U2l6ZSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzsgLy8gdmVjMyBhX3RyaWFuZ2xlQ29vcmQKKworICAg
ICAgICByZXR1cm4gbV9tZXNoVHlwZSA9PSBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVE
ID8gQXR0YWNoZWRNZXNoVmVydGV4U2l6ZSA6IERldGFjaGVkTWVzaFZlcnRleFNpemU7CisgICAg
fQorCisgICAgdW5zaWduZWQgdmVydGljZXNDb3VudCgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9tZXNoVHlwZSA9PSBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVEID8gcG9p
bnRzQ291bnQoKSA6IGluZGljZXNDb3VudCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB0eXBl
ZGVmIHZvaWQgKEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OipBZGRUcmlhbmdsZVZlcnRleEZ1
bmN0aW9uKShpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xl
WSwgaW50IHRyaWFuZ2xlKTsKKworICAgIHRlbXBsYXRlIDxBZGRUcmlhbmdsZVZlcnRleEZ1bmN0
aW9uIGFkZFRyaWFuZ2xlVmVydGV4PgorICAgIHZvaWQgYWRkVGlsZShpbnQgcXVhZFgsIGludCBx
dWFkWSkKKyAgICB7CisgICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFk
WCwgcXVhZFksIDAsIDAsIDEpOworICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4
KSkocXVhZFgsIHF1YWRZLCAxLCAwLCAyKTsKKyAgICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmds
ZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMSwgMSwgMyk7CisgICAgICAgICgoKnRoaXMpLiooYWRk
VHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDAsIDAsIDQpOworICAgICAgICAoKCp0aGlz
KS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAxLCAxLCA1KTsKKyAgICAgICAg
KCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMCwgMSwgNik7Cisg
ICAgfQorCisgICAgdm9pZCBhZGRBdHRhY2hlZE1lc2hJbmRleChpbnQgcXVhZFgsIGludCBxdWFk
WSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xlKTsKKworICAgIHZv
aWQgZ2VuZXJhdGVBdHRhY2hlZE1lc2goKTsKKworICAgIHZvaWQgYWRkRGV0YWNoZWRNZXNoVmVy
dGV4QW5kSW5kZXgoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlh
bmdsZVksIGludCB0cmlhbmdsZSk7CisKKyAgICB2b2lkIGdlbmVyYXRlRGV0YWNoZWRNZXNoKCk7
CisgICAgdm9pZCBhZGRQb3NpdGlvbkF0dHJpYnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSk7Cisg
ICAgdm9pZCBhZGRUZXhDb29yZEF0dHJpYnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSk7CisgICAg
dm9pZCBhZGRNZXNoQ29vcmRBdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpOworICAgIHZv
aWQgYWRkVHJpYW5nbGVDb29yZEF0dHJpYnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRy
aWFuZ2xlKTsKKyAgICB2b2lkIGFkZEF0dGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMoaW50IHF1
YWRYLCBpbnQgcXVhZFkpOworICAgIHZvaWQgYWRkRGV0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRl
cyhpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50
IHRyaWFuZ2xlKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lkIGR1bXBCdWZmZXJzKCkgY29u
c3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8ZmxvYXQ+IG1fdmVydGljZXM7Cisg
ICAgVmVjdG9yPHVpbnQxNl90PiBtX2luZGljZXM7CisKKyAgICBDdXN0b21GaWx0ZXJPcGVyYXRp
b246Ok1lc2hUeXBlIG1fbWVzaFR5cGU7CisgICAgSW50U2l6ZSBtX3BvaW50czsKKyAgICBJbnRT
aXplIG1fdGlsZXM7CisgICAgRmxvYXRTaXplIG1fdGlsZVNpemVJblBpeGVsczsKKyAgICBGbG9h
dFNpemUgbV90aWxlU2l6ZUluRGV2aWNlU3BhY2U7CisgICAgRmxvYXRSZWN0IG1fbWVzaEJveDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hB
REVSUykgJiYgVVNFKDNEX0dSQVBISUNTKQorCisjZW5kaWYgLy8gQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNw
cAppbmRleCA4YTk2ZDk1ZjMzZTM0MjFiN2FiZmZkODU1NjFiZTdhYTE4NGZiY2Y2Li4zOTVhODEy
MWY3NzcxNTI2NDBlODE4MzMwNjVmZmQ1MmUzNDQ4OGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgU3RyaW5nIEN1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmRlZmF1bHRGcmFnbWVudFNoYWRlclN0cmluZygp
CiBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtKEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQqIGdsb2JhbENvbnRleHQsIGNvbnN0IEN1c3Rv
bUZpbHRlclByb2dyYW1JbmZvJiBwcm9ncmFtSW5mbykKICAgICA6IG1fZ2xvYmFsQ29udGV4dChn
bG9iYWxDb250ZXh0KQogICAgICwgbV9wcm9ncmFtSW5mbyhwcm9ncmFtSW5mbykKKyAgICAsIG1f
cGxhdGZvcm1Db21waWxlZFByb2dyYW0oMCkKICAgICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkK
IHsKICAgICBTdHJpbmcgb3JpZ2luYWxWZXJ0ZXhTaGFkZXIgPSBwcm9ncmFtSW5mby52ZXJ0ZXhT
aGFkZXJTdHJpbmcoKTsKQEAgLTEwMiw3ICsxMDMsNyBAQCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQ
cm9ncmFtOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKEN1c3RvbUZpbHRlckdsb2JhbENv
bgogCiBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbTo6Y29tcGlsZWRQcm9ncmFtKCkKIHsKLSAgICBBU1NFUlQobV9pc0lu
aXRpYWxpemVkICYmICFtX3ZhbGlkYXRlZFZlcnRleFNoYWRlci5pc051bGwoKSAmJiAhbV92YWxp
ZGF0ZWRGcmFnbWVudFNoYWRlci5pc051bGwoKSk7CisgICAgQVNTRVJUKG1faXNJbml0aWFsaXpl
ZCAmJiBtX2dsb2JhbENvbnRleHQgJiYgIW1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLmlzTnVsbCgp
ICYmICFtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLmlzTnVsbCgpKTsKICAgICBpZiAoIW1fY29t
cGlsZWRQcm9ncmFtKQogICAgICAgICBtX2NvbXBpbGVkUHJvZ3JhbSA9IEN1c3RvbUZpbHRlckNv
bXBpbGVkUHJvZ3JhbTo6Y3JlYXRlKG1fZ2xvYmFsQ29udGV4dC0+Y29udGV4dCgpLCBtX3ZhbGlk
YXRlZFZlcnRleFNoYWRlciwgbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlcik7CiAgICAgcmV0dXJu
IG1fY29tcGlsZWRQcm9ncmFtOwpAQCAtMjUxLDEwICsyNTIsMjMgQEAgU3RyaW5nIEN1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW06OmNvbXBvc2l0ZUZ1bmN0aW9uU3RyaW5nKENvbXBvc2l0ZU9w
ZXJhdG9yIGMKICAgICAKIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06On5DdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtKCkKIHsKKyAgICBwbGF0Zm9ybURlc3Ryb3koKTsKKwogICAgIGlm
IChtX2dsb2JhbENvbnRleHQpCiAgICAgICAgIG1fZ2xvYmFsQ29udGV4dC0+cmVtb3ZlVmFsaWRh
dGVkUHJvZ3JhbSh0aGlzKTsKIH0KIAorI2lmICFQTEFURk9STShCTEFDS0JFUlJZKQorUGxhdGZv
cm1Db21waWxlZFByb2dyYW0qIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnBsYXRmb3Jt
Q29tcGlsZWRQcm9ncmFtKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBDdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtOjpwbGF0Zm9ybURlc3Ryb3koKQoreworfQorI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmgKaW5kZXggM2E5ZTBmMTlj
ZWM2MjQ4YTFlNDM5N2ViNzY2OGUxZjNkNmMzZWI2OS4uYWZhN2UxMmE2OTZlM2VjMzA0YmEzMjE0
ZmE5NWFjZTJhZmFmYWEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQ
cm9ncmFtLmgKQEAgLTM5LDYgKzM5LDE2IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisvLyBQbGF0Zm9ybUNvbXBpbGVkUHJvZ3Jh
bSBkZWZpbmVzIGEgdHlwZSB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgZnJhbWV3b3JrIHVz
ZWQgdG8gaW1wbGVtZW50IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIG9uIGEgcGFydGljdWxhciBw
bGF0Zm9ybS4KKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQorbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgTGF5ZXJDb21waWxlZFByb2dyYW07Cit9Cit0eXBlZGVmIFdlYkNvcmU6OkxheWVyQ29t
cGlsZWRQcm9ncmFtIFBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtOworI2Vsc2UKK3R5cGVkZWYgdm9p
ZCBQbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbTsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEFOR0xFV2ViS2l0QnJpZGdlOwpAQCAtNzEsNiArODEsOCBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9ncmFtSW5mbzsgfQogICAgIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGls
ZWRQcm9ncmFtPiBjb21waWxlZFByb2dyYW0oKTsKIAorICAgIFBsYXRmb3JtQ29tcGlsZWRQcm9n
cmFtKiBwbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSgpOworCiAgICAgYm9vbCBpc0luaXRpYWxpemVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemVkOyB9CiAKICAgICAvLyAnZGV0YWNoRnJv
bUdsb2JhbENvbnRleHQnIGlzIGNhbGxlZCB3aGVuIHRoZSBDdXN0b21GaWx0ZXJHbG9iYWxDb250
ZXh0IGlzIGRlbGV0ZWQsIGFuZCB0aGVyZSdzIG5vIG5lZWQgZm9yIHRoZSBjYWxsYmFjayBhbnlt
b3JlLiAKQEAgLTc5LDYgKzkxLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtKEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQqLCBjb25zdCBDdXN0
b21GaWx0ZXJQcm9ncmFtSW5mbyYpOwogCisgICAgdm9pZCBwbGF0Zm9ybURlc3Ryb3koKTsKKwog
ICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFZlcnRleFNoYWRlclN0cmluZygpOwogICAgIHN0YXRp
YyBTdHJpbmcgZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKCk7CiAKQEAgLTk1LDYgKzEwOSw3
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXI7CiAKICAg
ICBSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBtX2NvbXBpbGVkUHJvZ3JhbTsK
KyAgICBQbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSogbV9wbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbTsK
IAogICAgIGJvb2wgbV9pc0luaXRpYWxpemVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYmxhY2tiZXJyeS9DdXN0b21GaWx0ZXJWYWxp
ZGF0ZWRQcm9ncmFtQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL2JsYWNrYmVycnkvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbUJsYWNr
QmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwZWM3MjBiYTRkMjc4OGViYmRkZjk5YTJkZGM1YmVkYmM2
MTE3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL2JsYWNrYmVycnkvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbUJsYWNrQmVy
cnkuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKworI2luY2x1
ZGUgIkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCIKKworI2luY2x1ZGUgIkxheWVyQ29t
cGlsZWRQcm9ncmFtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTGF5ZXJDb21waWxlZFBy
b2dyYW0qIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnBsYXRmb3JtQ29tcGlsZWRQcm9n
cmFtKCkKK3sKKyAgICBBU1NFUlQobV9pc0luaXRpYWxpemVkICYmICFtX3ZhbGlkYXRlZFZlcnRl
eFNoYWRlci5pc051bGwoKSAmJiAhbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlci5pc051bGwoKSk7
CisKKyAgICBpZiAoIW1fcGxhdGZvcm1Db21waWxlZFByb2dyYW0pCisgICAgICAgIG1fcGxhdGZv
cm1Db21waWxlZFByb2dyYW0gPSBMYXllckNvbXBpbGVkUHJvZ3JhbTo6Y3JlYXRlKG1fdmFsaWRh
dGVkVmVydGV4U2hhZGVyLCBtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKS5sZWFrUmVmKCk7CisK
KyAgICByZXR1cm4gbV9wbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbTsKK30KKwordm9pZCBDdXN0b21G
aWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpwbGF0Zm9ybURlc3Ryb3koKQoreworICAgIGRlcmVmSWZO
b3ROdWxsKG1fcGxhdGZvcm1Db21waWxlZFByb2dyYW0pOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162798</attachid>
            <date>2012-09-07 10:07:05 -0700</date>
            <delta_ts>2012-09-07 11:03:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94725-20120907190643.patch</filename>
            <type>text/plain</type>
            <size>43056</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZjNmFmNTFlNmZiZmU0
Y2Q5ZjRkMTY5NDk2OTg5NGFiMmQwMTE1ZC4uNDJmZTcwMjlhNGFmOTlmNTUzOTljZmNiMmIwMDE1
OGRhMTU5NWJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA5LTA3ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQ1NTIFNoYWRlcnNdIFtC
bGFja0JlcnJ5XSBSZWZhY3RvciBDdXN0b21GaWx0ZXJNZXNoIGFuZCBDdXN0b21GaWx0ZXIqUHJv
Z3JhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3
MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXBh
cmF0ZSB0aGUgTWVzaEdlbmVyYXRvciBmcm9tIHRoZSBDdXN0b21GaWx0ZXJNZXNoIGludG8KKyAg
ICAgICAgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oL2NwcC4gVGhpcyBhbGxvd3MgdGhlIEJs
YWNrQmVycnkgcG9ydCB0bworICAgICAgICByZXVzZSB0aGUgbWVzaCBnZW5lcmF0b3IgaW4gaXRz
IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIEFsc28g
YWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGEgIlBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtIiBmcm9t
IGEKKyAgICAgICAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSwgc28gdGhlIEJsYWNrQmVy
cnkgcG9ydCBjYW4gcmV1c2UgdGhlCisgICAgICAgIHNoYWRlciB2YWxpZGF0aW9uIGNvZGUgaW4g
aXRzIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIEl0
IHR1cm5zIG91dCB0aGUgR3JhcGhpY3NDb250ZXh0M0QgaXMgbm90IG5lZWRlZCBmb3IgQU5HTEUg
dG8gZnVuY3Rpb24sCisgICAgICAgIHNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyBhbiBBU1NFUlQgdGhh
dCByZXF1aXJlZCBhIGNvbnRleHQgYmVmb3JlCisgICAgICAgIHZhbGlkYXRpbmcgdGhlIHNoYWRl
cnMgdXNpbmcgQU5HTEUuIFRoaXMgYWxsb3dzIHRoZSBCbGFja0JlcnJ5IHBvcnQgdG8KKyAgICAg
ICAgcmV1c2UgdGhlIHZhbGlkYXRpb24gY29kZSB3aXRob3V0IHRyaWdnZXJpbmcgdGhlIGFzc2Vy
dC4gSW4gdGhlIGZ1dHVyZSwKKyAgICAgICAgdGhlIHZhbGlkYXRpb24gY29kZSBjb3VsZCBiZSBt
b3ZlZCB0byBhIHNlcGFyYXRlIGNsYXNzIHRvIG1ha2UgaXQgbW9yZQorICAgICAgICBvYnZpb3Vz
IHRoYXQgaXQgaXNuJ3QgcmVhbGx5IHJlbGF0ZWQgdG8gR3JhcGhpY3NDb250ZXh0M0QuCisKKyAg
ICAgICAgSW4gZ2VuZXJhbCwgdGhpcyByZWZhY3RvcmluZyBjYW4gYmUgdXNlZnVsIGZvciBhbnkg
cG9ydCB0aGF0IHVzZXMKKyAgICAgICAgT3BlbkdMIHRvIGltcGxlbWVudCBhY2NlbGVyYXRlZCBj
b21wb3NpdGluZy4KKworICAgICAgICBJbnNwaXJlZCBieSBhbiBvcmlnaW5hbCBwYXRjaCBieSBK
b3NodWEgTmV0dGVyZmllbGQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWNhdXNlIHRoaXMg
cGF0Y2ggaW1wbGVtZW50cyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpnZXRWYWxpZGF0ZWRQcm9ncmFt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6Q3VzdG9tRmlsdGVyTWVz
aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNo
ZWRNZXNoSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
cjo6Z2VuZXJhdGVBdHRhY2hlZE1lc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
TWVzaEdlbmVyYXRvcjo6YWRkRGV0YWNoZWRNZXNoVmVydGV4QW5kSW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6Z2VuZXJhdGVEZXRhY2hlZE1lc2gp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkUG9zaXRp
b25BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
cjo6YWRkVGV4Q29vcmRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
TWVzaEdlbmVyYXRvcjo6YWRkTWVzaENvb3JkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZFRyaWFuZ2xlQ29vcmRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRN
ZXNoVmVydGV4QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmR1bXBCdWZmZXJzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6dmVy
dGljZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6aW5k
aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjpwb2lu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6cG9pbnRz
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6dGls
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6dGlsZXND
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjppbmRp
Y2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6
ZmxvYXRzUGVyVmVydGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3I6OnZlcnRpY2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvcjo6YWRkVGlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0p
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Y29tcGls
ZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW06On5DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6cGxhdGZvcm1D
b21waWxlZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbTo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9ibGFja2JlcnJ5L0N1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW1CbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnBsYXRmb3JtQ29tcGlsZWRQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06
OnBsYXRmb3JtRGVzdHJveSk6CisKIDIwMTItMDktMDcgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gQWRkIGFub3RoZXIgYWxsLWluLW9u
ZSBzb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDU2ZTk4NTY1NjI4NWVh
ZWZlYTY3MDQ3OGFkNGFiYjY3MDAwNzBlYjYuLmI5NWY4OGVlZjEzNmFjMWFjNmYzZDQ5ODU1OThm
YzUwMGI1NDhiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDI1MSw2ICs0
MjUxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNo
LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9w
ZXJhdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNzhlMDMwOGQwNTM2YzY0
NGQ3YzNkMzZkMTlmYWRmM2M4MDFiOTY3NC4uZWRiZTJmNDM3YjYxNTBjMzlkMGY4NWY3OTc0ZjBk
YWYzNTA3OTA5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yMDQ0LDYgKzIwNDQsNyBAQCBIRUFERVJTICs9
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmggXAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRl
ci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9w
ZXJhdGlvbi5oIFwKQEAgLTM0NDYsNiArMzQ0Nyw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9GSUxURVJTPTEpIHsKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJQcm9ncmFtLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcCBcCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcCBc
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDMzNTlkZjgyMmYwYmQzY2E5YWQ0YzVhNDgyNDNhNzNiYjM0OTE0MmQuLjVl
M2NlZGIyNTRmYmM3OTA1NTk0NzgyNTQxNzBiMmNlZjZhMjIzODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTQ5MTIsNiArNDkxMiw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oJywKQEAgLTQ5MjUsNiAr
NDkyNiw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyVHJhbnNmb3JtUGFyYW1ldGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGZkMmI1NjJhZjA1NTlhMzYzZTVi
MTIwOGNlYjViNTY4NTkxYjE2YTMuLjdlMmYwYjBiODAxMDUyZDYzZDgxY2M2N2UzNzJiNGNkYTNl
ZWU5ZjkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC0zMTg4NSw2ICszMTg4NSwxNCBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxG
aWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcQ3Vz
dG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJ
PEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xD
dXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmgiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJ
PEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xD
dXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaCIKIAkJCQkJCT4KIAkJCQkJPC9GaWxlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGU0ZGNmNTAyZTc2MGY2N2MyZmM2YTljOTNmYTViMGM2NTQ1MWMzNjguLjg0ZmNhZDgxYzJmYWYy
YmI0MjNkZTM2MWE5NGQyOGQ0ZmJhY2E0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5ODcsNiArMTk4Nyw4IEBACiAJCTdC
RDExN0VCMTVCOERCMDEwMEM5NzRBMyAvKiBET01UcmFuc2FjdGlvblN0ZXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JEMTE3RTkxNUI4REIwMTAw
Qzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5jcHAgKi87IH07CiAJCTdCRDExN0VDMTVCOERC
MDEwMEM5NzRBMyAvKiBET01UcmFuc2FjdGlvblN0ZXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCRDExN0VBMTVCOERCMDEwMEM5NzRBMyAvKiBET01U
cmFuc2FjdGlvblN0ZXAuaCAqLzsgfTsKIAkJN0M1MjJENEIxNUI0NzdFODAwOUI3Qzk1IC8qIElu
c3BlY3Rvck92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0M1MjJENDkxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3Bw
ICovOyB9OworCQk3RTEyRTkwRjE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0UxMkU5MEQxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCAq
LzsgfTsKKwkJN0UxMkU5MTAxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0UxMkU5MEUxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3Bw
ICovOyB9OwogCQk3RTMzQ0QwMTEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UzM0NEMDAxMjdG
MzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTM3RUYyRTEzMzkyMDg4MDBCMjkyNTAgLyogU3Vi
cmVzb3VyY2VMb2FkZXJDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RTM3RUYyRDEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJD
Ri5jcHAgKi87IH07CiAJCTdFOTlBRjUxMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0Fs
bG93ZWRJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZElu
ZGljYXRvci5jcHAgKi87IH07CkBAIC05MTkyLDYgKzkxOTQsOCBAQAogCQk3QzUyMkQ0OTE1QjQ3
N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0M1MjJENEExNUI0NzhCMjAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yT3ZlcmxheS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzYwMTI4MDYwMDc4QkI3MEUzNjdBOTUgLyog
RE5TUmVzb2x2ZVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEROU1Jlc29sdmVRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFMTJF
OTBEMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDsg
cGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVy
TWVzaEdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBD
dXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVy
TWVzaEdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzNDRDAw
MTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0UzN0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3VicmVzb3VyY2VMb2FkZXJDRi5j
cHA7IHBhdGggPSBjZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dl
ZEluZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaW5k
b3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTgxNTAsNiArMTgxNTQsOCBAQAogCQlBNzVFOEI3RjBFMURFMkIwMDA3RjI0ODEgLyogZmls
dGVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0Ux
MkU5MEQxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCAqLywK
KwkJCQk3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5jcHAgKi8sCiAJCQkJNTA5RUMxMDgxNUU4NDhDQTAwRTgyNTgxIC8qIEN1c3RvbUZpbHRlclRy
YW5zZm9ybVBhcmFtZXRlci5oICovLAogCQkJCTQ5RUNFQjVDMTQ5OTc5MEQwMENERDNBNCAvKiBh
cm0gKi8sCiAJCQkJNTBENDA2MEYxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbS5jcHAgKi8sCkBAIC0yNTUxMSw2ICsyNTUxNyw3IEBACiAJCQkJNzZGMkUyRUMx
NUY3NENFRjAwNUZGNjY0IC8qIFJlbmRlckRpYWxvZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2
MDVBRUQxNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0RjM3N0ZGNTE1RkEzNTZBMDBFNUQ2MEQgLyogV2ViQ29yZU1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0UxMkU5MEYxNUZBNUQzQTAwNUU0MTI2
IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjg2MDMs
NiArMjg2MTAsNyBAQAogCQkJCUJDRDhBNUYwMTVGNTZGMkMwMDk4RDA3MSAvKiBUZXh0QnJlYWtJ
dGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NkYyRTJFQjE1Rjc0Q0VGMDA1RkY2NjQg
LyogUmVuZGVyRGlhbG9nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjA1QUVDMTVGOTQ4NDgw
MDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3
RTEyRTkxMDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3Bw
CmluZGV4IGUwMTQ0YjkwNTZiMDE5ZGFkNDBlNWEyNGI0OWI5MGFkYWMyNTFkZGEuLjU4Mjg0NmU3
ZjkzYmMyNGM0NDg0MmNjMzY3ZWQ3OWExYzYzN2JlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJHbG9iYWxDb250ZXh0LmNwcApAQCAtODcsOSArODcsNiBAQCB2b2lkIEN1c3RvbUZpbHRl
ckdsb2JhbENvbnRleHQ6OnByZXBhcmVDb250ZXh0SWZOZWVkZWQoSG9zdFdpbmRvdyogaG9zdFdp
bmRvdykKIAogUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiBDdXN0b21G
aWx0ZXJHbG9iYWxDb250ZXh0OjpnZXRWYWxpZGF0ZWRQcm9ncmFtKGNvbnN0IEN1c3RvbUZpbHRl
clByb2dyYW1JbmZvJiBwcm9ncmFtSW5mbykKIHsKLSAgICAvLyBDaGVjayB0aGF0IHRoZSBjb250
ZXh0IGlzIGFscmVhZHkgcHJlcGFyZWQuCi0gICAgQVNTRVJUKG1fY29udGV4dCk7Ci0KICAgICBD
dXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtc01hcDo6aXRlcmF0b3IgaXRlciA9IG1fcHJvZ3Jh
bXMuZmluZChwcm9ncmFtSW5mbyk7CiAgICAgaWYgKGl0ZXIgIT0gbV9wcm9ncmFtcy5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIGl0ZXItPnNlY29uZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCmlu
ZGV4IGUwMTRmMGEwNjQ0MjY3YjNjNTNhNzcxYzMzYjkyZWMwNTQ3OWUwNTkuLjAyNzhhYmFkMDI2
YjVhMGQ5MTlmYzVjMjMyNGFlZjJiZjUwMDZhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNw
cApAQCAtMzEsMjA5ICszMSwxMiBAQAogCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0Uo
M0RfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyTWVzaC5oIgorI2luY2x1ZGUgIkN1
c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi0jaWZuZGVmIE5ERUJVRwotLy8gVXNlICJj
YWxsICdXZWJDb3JlOjpzX2R1bXBDdXN0b21GaWx0ZXJNZXNoQnVmZmVycycgPSAxIiBpbiBHREIg
dG8gYWN0aXZhdGUgcHJpbnRpbmcgb2YgdGhlIG1lc2ggYnVmZmVycy4KLXN0YXRpYyBib29sIHNf
ZHVtcEN1c3RvbUZpbHRlck1lc2hCdWZmZXJzID0gZmFsc2U7Ci0jZW5kaWYKLQotY2xhc3MgTWVz
aEdlbmVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgLy8gTGluZXMgYW5kIGNvbHVtbnMgYXJlIHRoZSB2
YWx1ZXMgcGFzc2VkIGluIENTUy4gVGhlIHJlc3VsdCBpcyB2ZXJ0ZXggbWVzaCB0aGF0IGhhcyAn
cm93cycgbnVtYmVycyBvZiByb3dzCi0gICAgLy8gYW5kICdjb2x1bW5zJyBudW1iZXIgb2YgY29s
dW1ucyB3aXRoIGEgdG90YWwgb2YgJ3Jvd3MgKyAxJyAqICdjb2x1bW5zICsgMScgdmVydGljZXMu
Ci0gICAgLy8gTWVzaEJveCBpcyB0aGUgZmlsdGVyZWQgYXJlYSBjYWxjdWxhdGVkIGRlZmluZWQg
dXNpbmcgdGhlIGJvcmRlci1ib3gsIHBhZGRpbmctYm94LCBjb250ZW50LWJveCBvciBmaWx0ZXIt
Ym94IAotICAgIC8vIGF0dHJpYnV0ZXMuIEEgdmFsdWUgb2YgKDAsIDAsIDEsIDEpIHdpbGwgY292
ZXIgdGhlIGVudGlyZSBvdXRwdXQgc3VyZmFjZS4KLSAgICBNZXNoR2VuZXJhdG9yKHVuc2lnbmVk
IGNvbHVtbnMsIHVuc2lnbmVkIHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkKLSAgICAgICAgOiBtX21lc2hUeXBl
KG1lc2hUeXBlKQotICAgICAgICAsIG1fcG9pbnRzKGNvbHVtbnMgKyAxLCByb3dzICsgMSkKLSAg
ICAgICAgLCBtX3RpbGVzKGNvbHVtbnMsIHJvd3MpCi0gICAgICAgICwgbV90aWxlU2l6ZUluUGl4
ZWxzKG1lc2hCb3gud2lkdGgoKSAvIG1fdGlsZXMud2lkdGgoKSwgbWVzaEJveC5oZWlnaHQoKSAv
IG1fdGlsZXMuaGVpZ2h0KCkpCi0gICAgICAgICwgbV90aWxlU2l6ZUluRGV2aWNlU3BhY2UoMS4w
ZiAvIG1fdGlsZXMud2lkdGgoKSwgMS4wZiAvIG1fdGlsZXMuaGVpZ2h0KCkpCi0gICAgICAgICwg
bV9tZXNoQm94KG1lc2hCb3gpCi0gICAgewotICAgICAgICAvLyBCdWlsZCB0aGUgdHdvIGJ1ZmZl
cnMgbmVlZGVkIHRvIGRyYXcgdHJpYW5nbGVzOgotICAgICAgICAvLyAqIG1fdmVydGljZXMgaGFz
IGEgbnVtYmVyIG9mIGZsb2F0IGF0dHJpYnV0ZXMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUg
dmVydGV4IHNoYWRlcgotICAgICAgICAvLyBmb3IgZWFjaCBjb21wdXRlZCB2ZXJ0ZXguIFRoaXMg
bnVtYmVyIGlzIGNhbGN1bGF0ZWQgaW4gZmxvYXRzUGVyVmVydGV4KCkgYmFzZWQgb24gdGhlIG1l
c2hUeXBlLgotICAgICAgICAvLyAqIG1faW5kaWNlcyBpcyBhIGJ1ZmZlciB0aGF0IHdpbGwgaGF2
ZSAzIGluZGljZXMgcGVyIHRyaWFuZ2xlLiBFYWNoIGluZGV4IHdpbGwgcG9pbnQgaW5zaWRlCi0g
ICAgICAgIC8vIHRoZSBtX3ZlcnRpY2VzIGJ1ZmZlci4KLSAgICAgICAgbV92ZXJ0aWNlcy5yZXNl
cnZlQ2FwYWNpdHkodmVydGljZXNDb3VudCgpICogZmxvYXRzUGVyVmVydGV4KCkpOwotICAgICAg
ICBtX2luZGljZXMucmVzZXJ2ZUNhcGFjaXR5KGluZGljZXNDb3VudCgpKTsKLSAgICAgICAgCi0g
ICAgICAgIC8vIEJhc2VkIG9uIHRoZSBtZXNoVHlwZSB0aGVyZSBjYW4gYmUgdHdvIHR5cGVzIG9m
IG1lc2hlcy4KLSAgICAgICAgLy8gKiBhdHRhY2hlZDogZWFjaCB0cmlhbmdsZSB1c2VzIHZlcnRp
Y2VzIGZyb20gdGhlIG5laWdoYm9yIHRyaWFuZ2xlcy4gVGhpcyBpcyB1c2VmdWwgdG8gc2F2ZSBz
b21lIEdQVSBtZW1vcnkKLSAgICAgICAgLy8gd2hlbiB0aGVyZSdzIG5vIG5lZWQgdG8gZXhwbG9k
ZSB0aGUgdGlsZXMuCi0gICAgICAgIC8vICogZGV0YWNoZWQ6IGVhY2ggdHJpYW5nbGUgaGFzIGl0
cyBvd24gdmVydGljZXMuIFRoaXMgbWVhbnMgZWFjaCB0cmlhbmdsZSBjYW4gYmUgbW92ZWQgaW5k
ZXBlbmRlbnRseSBhbmQgYSB2ZWMzCi0gICAgICAgIC8vIGF0dHJpYnV0ZSBpcyBwYXNzZWQsIHNv
IHRoYXQgZWFjaCB2ZXJ0ZXggY2FuIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCi0gICAgICAgIGlm
IChtX21lc2hUeXBlID09IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6QVRUQUNIRUQpCi0gICAgICAg
ICAgICBnZW5lcmF0ZUF0dGFjaGVkTWVzaCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBn
ZW5lcmF0ZURldGFjaGVkTWVzaCgpOwotICAgICAgICAKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAg
IGlmIChzX2R1bXBDdXN0b21GaWx0ZXJNZXNoQnVmZmVycykKLSAgICAgICAgICAgIGR1bXBCdWZm
ZXJzKCk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNl
cygpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGljZXM7IH0KLSAgICBjb25zdCBWZWN0b3I8dWludDE2
X3Q+JiBpbmRpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9pbmRpY2VzOyB9Ci0KLSAgICBjb25zdCBJ
bnRTaXplJiBwb2ludHMoKSBjb25zdCB7IHJldHVybiBtX3BvaW50czsgfQotICAgIHVuc2lnbmVk
IHBvaW50c0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wb2ludHMud2lkdGgoKSAqIG1fcG9pbnRz
LmhlaWdodCgpOyB9Ci0gICAgCi0gICAgY29uc3QgSW50U2l6ZSYgdGlsZXMoKSBjb25zdCB7IHJl
dHVybiBtX3RpbGVzOyB9Ci0gICAgdW5zaWduZWQgdGlsZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGlsZXMud2lkdGgoKSAqIG1fdGlsZXMuaGVpZ2h0KCk7IH0KLSAgICAKLSAgICB1bnNpZ25l
ZCBpbmRpY2VzQ291bnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgdHJp
YW5nbGVzUGVyVGlsZSA9IDI7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGluZGljZXNQZXJUcmlh
bmdsZSA9IDM7Ci0gICAgICAgIHJldHVybiB0aWxlc0NvdW50KCkgKiB0cmlhbmdsZXNQZXJUaWxl
ICogaW5kaWNlc1BlclRyaWFuZ2xlOwotICAgIH0KLSAgICAKLSAgICB1bnNpZ25lZCBmbG9hdHNQ
ZXJWZXJ0ZXgoKSBjb25zdAotICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEF0
dGFjaGVkTWVzaFZlcnRleFNpemUgPSA0ICsgLy8gdmVjNCBhX3Bvc2l0aW9uCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiArIC8vIHZlYzIg
YV90ZXhDb29yZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDI7IC8vIHZlYzIgYV9tZXNoQ29vcmQKLQotICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgRGV0YWNoZWRNZXNoVmVydGV4U2l6ZSA9IEF0dGFjaGVkTWVzaFZlcnRleFNpemUg
KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDM7IC8vIHZlYzMgYV90cmlhbmdsZUNvb3JkCi0KLSAgICAgICAgcmV0dXJuIG1fbWVzaFR5cGUg
PT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCA/IEF0dGFjaGVkTWVzaFZlcnRleFNp
emUgOiBEZXRhY2hlZE1lc2hWZXJ0ZXhTaXplOwotICAgIH0KLSAgICAKLSAgICB1bnNpZ25lZCB2
ZXJ0aWNlc0NvdW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX21lc2hUeXBlID09
IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6QVRUQUNIRUQgPyBwb2ludHNDb3VudCgpIDogaW5kaWNl
c0NvdW50KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHR5cGVkZWYgdm9pZCAoTWVzaEdlbmVy
YXRvcjo6KkFkZFRyaWFuZ2xlVmVydGV4RnVuY3Rpb24pKGludCBxdWFkWCwgaW50IHF1YWRZLCBp
bnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpOwotICAgIAotICAgIHRl
bXBsYXRlIDxBZGRUcmlhbmdsZVZlcnRleEZ1bmN0aW9uIGFkZFRyaWFuZ2xlVmVydGV4PgotICAg
IHZvaWQgYWRkVGlsZShpbnQgcXVhZFgsIGludCBxdWFkWSkKLSAgICB7Ci0gICAgICAgICgoKnRo
aXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDAsIDAsIDEpOwotICAgICAg
ICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAxLCAwLCAyKTsK
LSAgICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMSwg
MSwgMyk7Ci0gICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVh
ZFksIDAsIDAsIDQpOwotICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVh
ZFgsIHF1YWRZLCAxLCAxLCA1KTsKLSAgICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRl
eCkpKHF1YWRYLCBxdWFkWSwgMCwgMSwgNik7Ci0gICAgfQotICAgIAotICAgIHZvaWQgYWRkQXR0
YWNoZWRNZXNoSW5kZXgoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0
cmlhbmdsZVksIGludCB0cmlhbmdsZSkKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTSh0cmlh
bmdsZSk7Ci0gICAgICAgIG1faW5kaWNlcy5hcHBlbmQoKHF1YWRZICsgdHJpYW5nbGVZKSAqIG1f
cG9pbnRzLndpZHRoKCkgKyAocXVhZFggKyB0cmlhbmdsZVgpKTsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBnZW5lcmF0ZUF0dGFjaGVkTWVzaCgpCi0gICAgewotICAgICAgICBmb3IgKGludCBqID0g
MDsgaiA8IG1fcG9pbnRzLmhlaWdodCgpOyArK2opIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbV9wb2ludHMud2lkdGgoKTsgKytpKQotICAgICAgICAgICAgICAgIGFkZEF0dGFj
aGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMoaSwgaik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV90aWxlcy5oZWlnaHQoKTsgKytqKSB7Ci0gICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdGlsZXMud2lkdGgoKTsgKytpKQotICAgICAgICAg
ICAgICAgIGFkZFRpbGU8Jk1lc2hHZW5lcmF0b3I6OmFkZEF0dGFjaGVkTWVzaEluZGV4PihpLCBq
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICB2b2lkIGFkZERldGFjaGVkTWVzaFZlcnRl
eEFuZEluZGV4KGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5n
bGVZLCBpbnQgdHJpYW5nbGUpCi0gICAgewotICAgICAgICBhZGREZXRhY2hlZE1lc2hWZXJ0ZXhB
dHRyaWJ1dGVzKHF1YWRYLCBxdWFkWSwgdHJpYW5nbGVYLCB0cmlhbmdsZVksIHRyaWFuZ2xlKTsK
LSAgICAgICAgbV9pbmRpY2VzLmFwcGVuZChtX2luZGljZXMuc2l6ZSgpKTsKLSAgICB9Ci0gICAg
Ci0gICAgdm9pZCBnZW5lcmF0ZURldGFjaGVkTWVzaCgpCi0gICAgewotICAgICAgICBmb3IgKGlu
dCBqID0gMDsgaiA8IG1fdGlsZXMuaGVpZ2h0KCk7ICsraikgewotICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBtX3RpbGVzLndpZHRoKCk7ICsraSkKLSAgICAgICAgICAgICAgICBhZGRU
aWxlPCZNZXNoR2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleD4oaSwgaik7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgdm9pZCBhZGRQb3NpdGlvbkF0dHJpYnV0ZShp
bnQgcXVhZFgsIGludCBxdWFkWSkKLSAgICB7Ci0gICAgICAgIC8vIHZlYzQgYV9wb3NpdGlvbgot
ICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5QaXhlbHMud2lkdGgoKSAqIHF1
YWRYIC0gMC41ZiArIG1fbWVzaEJveC54KCkpOwotICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZCht
X3RpbGVTaXplSW5QaXhlbHMuaGVpZ2h0KCkgKiBxdWFkWSAtIDAuNWYgKyBtX21lc2hCb3gueSgp
KTsKLSAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQoMC4wZik7IC8vIHoKLSAgICAgICAgbV92ZXJ0
aWNlcy5hcHBlbmQoMS4wZik7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRUZXhDb29yZEF0dHJpYnV0
ZShpbnQgcXVhZFgsIGludCBxdWFkWSkKLSAgICB7Ci0gICAgICAgIC8vIHZlYzIgYV90ZXhDb29y
ZAotICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5QaXhlbHMud2lkdGgoKSAq
IHF1YWRYICsgbV9tZXNoQm94LngoKSk7Ci0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGls
ZVNpemVJblBpeGVscy5oZWlnaHQoKSAqIHF1YWRZICsgbV9tZXNoQm94LnkoKSk7Ci0gICAgfQot
Ci0gICAgdm9pZCBhZGRNZXNoQ29vcmRBdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCi0g
ICAgewotICAgICAgICAvLyB2ZWMyIGFfbWVzaENvb3JkCi0gICAgICAgIG1fdmVydGljZXMuYXBw
ZW5kKG1fdGlsZVNpemVJbkRldmljZVNwYWNlLndpZHRoKCkgKiBxdWFkWCk7Ci0gICAgICAgIG1f
dmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJbkRldmljZVNwYWNlLmhlaWdodCgpICogcXVhZFkp
OwotICAgIH0KLQotICAgIHZvaWQgYWRkVHJpYW5nbGVDb29yZEF0dHJpYnV0ZShpbnQgcXVhZFgs
IGludCBxdWFkWSwgaW50IHRyaWFuZ2xlKQotICAgIHsKLSAgICAgICAgLy8gdmVjMyBhX3RyaWFu
Z2xlQ29vcmQKLSAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQocXVhZFgpOwotICAgICAgICBtX3Zl
cnRpY2VzLmFwcGVuZChxdWFkWSk7Ci0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKHRyaWFuZ2xl
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZEF0dGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMoaW50
IHF1YWRYLCBpbnQgcXVhZFkpCi0gICAgewotICAgICAgICBhZGRQb3NpdGlvbkF0dHJpYnV0ZShx
dWFkWCwgcXVhZFkpOwotICAgICAgICBhZGRUZXhDb29yZEF0dHJpYnV0ZShxdWFkWCwgcXVhZFkp
OwotICAgICAgICBhZGRNZXNoQ29vcmRBdHRyaWJ1dGUocXVhZFgsIHF1YWRZKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGFkZERldGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMoaW50IHF1YWRYLCBpbnQg
cXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSkKLSAgICB7
Ci0gICAgICAgIGFkZEF0dGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMocXVhZFggKyB0cmlhbmds
ZVgsIHF1YWRZICsgdHJpYW5nbGVZKTsKLSAgICAgICAgYWRkVHJpYW5nbGVDb29yZEF0dHJpYnV0
ZShxdWFkWCwgcXVhZFksIHRyaWFuZ2xlKTsKLSAgICB9Ci0gICAgCi0jaWZuZGVmIE5ERUJVRwot
ICAgIHZvaWQgZHVtcEJ1ZmZlcnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcHJpbnRmKCJNZXNo
IGJ1ZmZlcnM6IFBvaW50cy53aWR0aCgpOiAlZCwgUG9pbnRzLmhlaWdodCgpOiAlZCBtZXNoQm94
OiAlZiwgJWYsICVmLCAlZiwgdHlwZTogJXNcbiIsIAotICAgICAgICAgICAgICAgbV9wb2ludHMu
d2lkdGgoKSwgbV9wb2ludHMuaGVpZ2h0KCksIG1fbWVzaEJveC54KCksIG1fbWVzaEJveC55KCks
IG1fbWVzaEJveC53aWR0aCgpLCBtX21lc2hCb3guaGVpZ2h0KCksIAotICAgICAgICAgICAgICAg
KG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCkgPyAiQXR0YWNo
ZWQiIDogIkRldGFjaGVkIik7Ci0gICAgICAgIHByaW50ZigiLS0tVmVydGV4OlxuXHQiKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmVydGljZXMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgICAgIHByaW50ZigiJWYgIiwgbV92ZXJ0aWNlcy5hdChpKSk7Ci0gICAgICAgICAg
ICBpZiAoISgoaSArIDEpICUgZmxvYXRzUGVyVmVydGV4KCkpKQotICAgICAgICAgICAgICAgIHBy
aW50ZigiXG5cdCIpOwotICAgICAgICB9Ci0gICAgICAgIHByaW50ZigiXG4tLS1JbmRpY2VzOiAi
KTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW5kaWNlcy5zaXplKCk7ICsr
aSkKLSAgICAgICAgICAgIHByaW50ZigiJWQgIiwgbV9pbmRpY2VzLmF0KGkpKTsKLSAgICAgICAg
cHJpbnRmKCJcbiIpOwotICAgIH0KLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFZlY3RvcjxmbG9h
dD4gbV92ZXJ0aWNlczsKLSAgICBWZWN0b3I8dWludDE2X3Q+IG1faW5kaWNlczsKLSAgICAKLSAg
ICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1fbWVzaFR5cGU7Ci0gICAgSW50U2l6
ZSBtX3BvaW50czsKLSAgICBJbnRTaXplIG1fdGlsZXM7Ci0gICAgRmxvYXRTaXplIG1fdGlsZVNp
emVJblBpeGVsczsKLSAgICBGbG9hdFNpemUgbV90aWxlU2l6ZUluRGV2aWNlU3BhY2U7Ci0gICAg
RmxvYXRSZWN0IG1fbWVzaEJveDsKLX07CiAKLUN1c3RvbUZpbHRlck1lc2g6OkN1c3RvbUZpbHRl
ck1lc2goR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIGNvbHVtbnMsIHVuc2ln
bmVkIHJvd3MsIAorQ3VzdG9tRmlsdGVyTWVzaDo6Q3VzdG9tRmlsdGVyTWVzaChHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgY29sdW1ucywgdW5zaWduZWQgcm93cywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBD
dXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQogICAgIDogbV9jb250ZXh0
KGNvbnRleHQpCiAgICAgLCBtX3ZlcnRpY2VzQnVmZmVyT2JqZWN0KDApCkBAIC0yNDEsNyArNDQs
NyBAQCBDdXN0b21GaWx0ZXJNZXNoOjpDdXN0b21GaWx0ZXJNZXNoKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCBjb2x1bW5zLAogICAgICwgbV9tZXNoQm94KG1lc2hCb3gpCiAg
ICAgLCBtX21lc2hUeXBlKG1lc2hUeXBlKQogewotICAgIE1lc2hHZW5lcmF0b3IgZ2VuZXJhdG9y
KGNvbHVtbnMsIHJvd3MsIG1lc2hCb3gsIG1lc2hUeXBlKTsKKyAgICBDdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yIGdlbmVyYXRvcihjb2x1bW5zLCByb3dzLCBtZXNoQm94LCBtZXNoVHlwZSk7CiAg
ICAgbV9pbmRpY2VzQ291bnQgPSBnZW5lcmF0b3IuaW5kaWNlc0NvdW50KCk7CiAgICAgbV9ieXRl
c1BlclZlcnRleCA9IGdlbmVyYXRvci5mbG9hdHNQZXJWZXJ0ZXgoKSAqIHNpemVvZihmbG9hdCk7
ICAgIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZDlkNGQxYjIwZDMyNWI1YTlkZGQxYzlkM2Y1YmRmODdmNzFjNjYwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJNZXNoR2VuZXJhdG9yLmNwcApAQCAtMCwwICsxLDE3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisg
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19T
SEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZm5kZWYgTkRFQlVHCisvLyBV
c2UgImNhbGwgJ1dlYkNvcmU6OnNfZHVtcEN1c3RvbUZpbHRlck1lc2hCdWZmZXJzJyA9IDEiIGlu
IEdEQiB0byBhY3RpdmF0ZSBwcmludGluZyBvZiB0aGUgbWVzaCBidWZmZXJzLgorc3RhdGljIGJv
b2wgc19kdW1wQ3VzdG9tRmlsdGVyTWVzaEJ1ZmZlcnMgPSBmYWxzZTsKKyNlbmRpZgorCitDdXN0
b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yKHVuc2lnbmVk
IGNvbHVtbnMsIHVuc2lnbmVkIHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkKKyAgICA6IG1fbWVzaFR5cGUobWVz
aFR5cGUpCisgICAgLCBtX3BvaW50cyhjb2x1bW5zICsgMSwgcm93cyArIDEpCisgICAgLCBtX3Rp
bGVzKGNvbHVtbnMsIHJvd3MpCisgICAgLCBtX3RpbGVTaXplSW5QaXhlbHMobWVzaEJveC53aWR0
aCgpIC8gbV90aWxlcy53aWR0aCgpLCBtZXNoQm94LmhlaWdodCgpIC8gbV90aWxlcy5oZWlnaHQo
KSkKKyAgICAsIG1fdGlsZVNpemVJbkRldmljZVNwYWNlKDEuMGYgLyBtX3RpbGVzLndpZHRoKCks
IDEuMGYgLyBtX3RpbGVzLmhlaWdodCgpKQorICAgICwgbV9tZXNoQm94KG1lc2hCb3gpCit7Cisg
ICAgLy8gQnVpbGQgdGhlIHR3byBidWZmZXJzIG5lZWRlZCB0byBkcmF3IHRyaWFuZ2xlczoKKyAg
ICAvLyAqIG1fdmVydGljZXMgaGFzIGEgbnVtYmVyIG9mIGZsb2F0IGF0dHJpYnV0ZXMgdGhhdCB3
aWxsIGJlIHBhc3NlZCB0byB0aGUgdmVydGV4IHNoYWRlcgorICAgIC8vIGZvciBlYWNoIGNvbXB1
dGVkIHZlcnRleC4gVGhpcyBudW1iZXIgaXMgY2FsY3VsYXRlZCBpbiBmbG9hdHNQZXJWZXJ0ZXgo
KSBiYXNlZCBvbiB0aGUgbWVzaFR5cGUuCisgICAgLy8gKiBtX2luZGljZXMgaXMgYSBidWZmZXIg
dGhhdCB3aWxsIGhhdmUgMyBpbmRpY2VzIHBlciB0cmlhbmdsZS4gRWFjaCBpbmRleCB3aWxsIHBv
aW50IGluc2lkZQorICAgIC8vIHRoZSBtX3ZlcnRpY2VzIGJ1ZmZlci4KKyAgICBtX3ZlcnRpY2Vz
LnJlc2VydmVDYXBhY2l0eSh2ZXJ0aWNlc0NvdW50KCkgKiBmbG9hdHNQZXJWZXJ0ZXgoKSk7Cisg
ICAgbV9pbmRpY2VzLnJlc2VydmVDYXBhY2l0eShpbmRpY2VzQ291bnQoKSk7CisKKyAgICAvLyBC
YXNlZCBvbiB0aGUgbWVzaFR5cGUgdGhlcmUgY2FuIGJlIHR3byB0eXBlcyBvZiBtZXNoZXMuCisg
ICAgLy8gKiBhdHRhY2hlZDogZWFjaCB0cmlhbmdsZSB1c2VzIHZlcnRpY2VzIGZyb20gdGhlIG5l
aWdoYm9yIHRyaWFuZ2xlcy4gVGhpcyBpcyB1c2VmdWwgdG8gc2F2ZSBzb21lIEdQVSBtZW1vcnkK
KyAgICAvLyB3aGVuIHRoZXJlJ3Mgbm8gbmVlZCB0byBleHBsb2RlIHRoZSB0aWxlcy4KKyAgICAv
LyAqIGRldGFjaGVkOiBlYWNoIHRyaWFuZ2xlIGhhcyBpdHMgb3duIHZlcnRpY2VzLiBUaGlzIG1l
YW5zIGVhY2ggdHJpYW5nbGUgY2FuIGJlIG1vdmVkIGluZGVwZW5kZW50bHkgYW5kIGEgdmVjMwor
ICAgIC8vIGF0dHJpYnV0ZSBpcyBwYXNzZWQsIHNvIHRoYXQgZWFjaCB2ZXJ0ZXggY2FuIGJlIHVu
aXF1ZWx5IGlkZW50aWZpZWQuCisgICAgaWYgKG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpBVFRBQ0hFRCkKKyAgICAgICAgZ2VuZXJhdGVBdHRhY2hlZE1lc2goKTsKKyAgICBl
bHNlCisgICAgICAgIGdlbmVyYXRlRGV0YWNoZWRNZXNoKCk7CisKKyNpZm5kZWYgTkRFQlVHCisg
ICAgaWYgKHNfZHVtcEN1c3RvbUZpbHRlck1lc2hCdWZmZXJzKQorICAgICAgICBkdW1wQnVmZmVy
cygpOworI2VuZGlmCit9CisKK3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0
YWNoZWRNZXNoSW5kZXgoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0
cmlhbmdsZVksIGludCB0cmlhbmdsZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odHJpYW5nbGUpOwor
ICAgIG1faW5kaWNlcy5hcHBlbmQoKHF1YWRZICsgdHJpYW5nbGVZKSAqIG1fcG9pbnRzLndpZHRo
KCkgKyAocXVhZFggKyB0cmlhbmdsZVgpKTsKK30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNoR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUF0dGFjaGVkTWVzaCgpCit7CisgICAgZm9yIChpbnQgaiA9IDA7IGog
PCBtX3BvaW50cy5oZWlnaHQoKTsgKytqKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bV9wb2ludHMud2lkdGgoKTsgKytpKQorICAgICAgICAgICAgYWRkQXR0YWNoZWRNZXNoVmVydGV4
QXR0cmlidXRlcyhpLCBqKTsKKyAgICB9CisKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IG1fdGls
ZXMuaGVpZ2h0KCk7ICsraikgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdGlsZXMu
d2lkdGgoKTsgKytpKQorICAgICAgICAgICAgYWRkVGlsZTwmQ3VzdG9tRmlsdGVyTWVzaEdlbmVy
YXRvcjo6YWRkQXR0YWNoZWRNZXNoSW5kZXg+KGksIGopOworICAgIH0KK30KKwordm9pZCBDdXN0
b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleChpbnQg
cXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFu
Z2xlKQoreworICAgIGFkZERldGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMocXVhZFgsIHF1YWRZ
LCB0cmlhbmdsZVgsIHRyaWFuZ2xlWSwgdHJpYW5nbGUpOworICAgIG1faW5kaWNlcy5hcHBlbmQo
bV9pbmRpY2VzLnNpemUoKSk7Cit9CisKK3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6
Z2VuZXJhdGVEZXRhY2hlZE1lc2goKQoreworICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV90aWxl
cy5oZWlnaHQoKTsgKytqKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV90aWxlcy53
aWR0aCgpOyArK2kpCisgICAgICAgICAgICBhZGRUaWxlPCZDdXN0b21GaWx0ZXJNZXNoR2VuZXJh
dG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleD4oaSwgaik7CisgICAgfQorfQorCit2
b2lkIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZFBvc2l0aW9uQXR0cmlidXRlKGludCBx
dWFkWCwgaW50IHF1YWRZKQoreworICAgIC8vIHZlYzQgYV9wb3NpdGlvbgorICAgIG1fdmVydGlj
ZXMuYXBwZW5kKG1fdGlsZVNpemVJblBpeGVscy53aWR0aCgpICogcXVhZFggLSAwLjVmICsgbV9t
ZXNoQm94LngoKSk7CisgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluUGl4ZWxzLmhl
aWdodCgpICogcXVhZFkgLSAwLjVmICsgbV9tZXNoQm94LnkoKSk7CisgICAgbV92ZXJ0aWNlcy5h
cHBlbmQoMC4wZik7IC8vIHoKKyAgICBtX3ZlcnRpY2VzLmFwcGVuZCgxLjBmKTsKK30KKwordm9p
ZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGRUZXhDb29yZEF0dHJpYnV0ZShpbnQgcXVh
ZFgsIGludCBxdWFkWSkKK3sKKyAgICAvLyB2ZWMyIGFfdGV4Q29vcmQKKyAgICBtX3ZlcnRpY2Vz
LmFwcGVuZChtX3RpbGVTaXplSW5QaXhlbHMud2lkdGgoKSAqIHF1YWRYICsgbV9tZXNoQm94Lngo
KSk7CisgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluUGl4ZWxzLmhlaWdodCgpICog
cXVhZFkgKyBtX21lc2hCb3gueSgpKTsKK30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJh
dG9yOjphZGRNZXNoQ29vcmRBdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCit7CisgICAg
Ly8gdmVjMiBhX21lc2hDb29yZAorICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJbkRl
dmljZVNwYWNlLndpZHRoKCkgKiBxdWFkWCk7CisgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxl
U2l6ZUluRGV2aWNlU3BhY2UuaGVpZ2h0KCkgKiBxdWFkWSk7Cit9CisKK3ZvaWQgQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvcjo6YWRkVHJpYW5nbGVDb29yZEF0dHJpYnV0ZShpbnQgcXVhZFgsIGlu
dCBxdWFkWSwgaW50IHRyaWFuZ2xlKQoreworICAgIC8vIHZlYzMgYV90cmlhbmdsZUNvb3JkCisg
ICAgbV92ZXJ0aWNlcy5hcHBlbmQocXVhZFgpOworICAgIG1fdmVydGljZXMuYXBwZW5kKHF1YWRZ
KTsKKyAgICBtX3ZlcnRpY2VzLmFwcGVuZCh0cmlhbmdsZSk7Cit9CisKK3ZvaWQgQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhpbnQgcXVh
ZFgsIGludCBxdWFkWSkKK3sKKyAgICBhZGRQb3NpdGlvbkF0dHJpYnV0ZShxdWFkWCwgcXVhZFkp
OworICAgIGFkZFRleENvb3JkQXR0cmlidXRlKHF1YWRYLCBxdWFkWSk7CisgICAgYWRkTWVzaENv
b3JkQXR0cmlidXRlKHF1YWRYLCBxdWFkWSk7Cit9CisKK3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvcjo6YWRkRGV0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhpbnQgcXVhZFgsIGludCBx
dWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xlKQoreworICAg
IGFkZEF0dGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMocXVhZFggKyB0cmlhbmdsZVgsIHF1YWRZ
ICsgdHJpYW5nbGVZKTsKKyAgICBhZGRUcmlhbmdsZUNvb3JkQXR0cmlidXRlKHF1YWRYLCBxdWFk
WSwgdHJpYW5nbGUpOworfQorCisjaWZuZGVmIE5ERUJVRwordm9pZCBDdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yOjpkdW1wQnVmZmVycygpIGNvbnN0Cit7CisgICAgcHJpbnRmKCJNZXNoIGJ1ZmZl
cnM6IFBvaW50cy53aWR0aCgpOiAlZCwgUG9pbnRzLmhlaWdodCgpOiAlZCBtZXNoQm94OiAlZiwg
JWYsICVmLCAlZiwgdHlwZTogJXNcbiIsCisgICAgICAgICAgIG1fcG9pbnRzLndpZHRoKCksIG1f
cG9pbnRzLmhlaWdodCgpLCBtX21lc2hCb3gueCgpLCBtX21lc2hCb3gueSgpLCBtX21lc2hCb3gu
d2lkdGgoKSwgbV9tZXNoQm94LmhlaWdodCgpLAorICAgICAgICAgICAobV9tZXNoVHlwZSA9PSBD
dXN0b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVEKSA/ICJBdHRhY2hlZCIgOiAiRGV0YWNoZWQi
KTsKKyAgICBwcmludGYoIi0tLVZlcnRleDpcblx0Iik7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fdmVydGljZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcHJpbnRmKCIlZiAiLCBt
X3ZlcnRpY2VzLmF0KGkpKTsKKyAgICAgICAgaWYgKCEoKGkgKyAxKSAlIGZsb2F0c1BlclZlcnRl
eCgpKSkKKyAgICAgICAgICAgIHByaW50ZigiXG5cdCIpOworICAgIH0KKyAgICBwcmludGYoIlxu
LS0tSW5kaWNlczogIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW5kaWNlcy5z
aXplKCk7ICsraSkKKyAgICAgICAgcHJpbnRmKCIlZCAiLCBtX2luZGljZXMuYXQoaSkpOworICAg
IHByaW50ZigiXG4iKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIFVTRSgzRF9HUkFQSElDUykKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJNZXNoR2VuZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWY3NTYyMWI0NjVk
MTYxZTc1ZGNkZTZkMjE5ZTFhOTZiNjliZGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9y
LmgKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcl9oCisjZGVmaW5lIEN1c3RvbUZpbHRlck1l
c2hHZW5lcmF0b3JfaAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJ
Q1MpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yIHsKK3B1YmxpYzoKKyAgICAvLyBMaW5lcyBhbmQgY29sdW1ucyBhcmUgdGhlIHZh
bHVlcyBwYXNzZWQgaW4gQ1NTLiBUaGUgcmVzdWx0IGlzIHZlcnRleCBtZXNoIHRoYXQgaGFzICdy
b3dzJyBudW1iZXJzIG9mIHJvd3MKKyAgICAvLyBhbmQgJ2NvbHVtbnMnIG51bWJlciBvZiBjb2x1
bW5zIHdpdGggYSB0b3RhbCBvZiAncm93cyArIDEnICogJ2NvbHVtbnMgKyAxJyB2ZXJ0aWNlcy4K
KyAgICAvLyBNZXNoQm94IGlzIHRoZSBmaWx0ZXJlZCBhcmVhIGNhbGN1bGF0ZWQgZGVmaW5lZCB1
c2luZyB0aGUgYm9yZGVyLWJveCwgcGFkZGluZy1ib3gsIGNvbnRlbnQtYm94IG9yIGZpbHRlci1i
b3gKKyAgICAvLyBhdHRyaWJ1dGVzLiBBIHZhbHVlIG9mICgwLCAwLCAxLCAxKSB3aWxsIGNvdmVy
IHRoZSBlbnRpcmUgb3V0cHV0IHN1cmZhY2UuCisgICAgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
cih1bnNpZ25lZCBjb2x1bW5zLCB1bnNpZ25lZCByb3dzLCBjb25zdCBGbG9hdFJlY3QmIG1lc2hC
b3gsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUpOworCisgICAgY29uc3QgVmVjdG9y
PGZsb2F0PiYgdmVydGljZXMoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2VzOyB9CisgICAgY29u
c3QgVmVjdG9yPHVpbnQxNl90PiYgaW5kaWNlcygpIGNvbnN0IHsgcmV0dXJuIG1faW5kaWNlczsg
fQorCisgICAgY29uc3QgSW50U2l6ZSYgcG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludHM7
IH0KKyAgICB1bnNpZ25lZCBwb2ludHNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzLndp
ZHRoKCkgKiBtX3BvaW50cy5oZWlnaHQoKTsgfQorCisgICAgY29uc3QgSW50U2l6ZSYgdGlsZXMo
KSBjb25zdCB7IHJldHVybiBtX3RpbGVzOyB9CisgICAgdW5zaWduZWQgdGlsZXNDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGlsZXMud2lkdGgoKSAqIG1fdGlsZXMuaGVpZ2h0KCk7IH0KKworICAg
IHVuc2lnbmVkIGluZGljZXNDb3VudCgpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdCB1bnNp
Z25lZCB0cmlhbmdsZXNQZXJUaWxlID0gMjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW5kaWNl
c1BlclRyaWFuZ2xlID0gMzsKKyAgICAgICAgcmV0dXJuIHRpbGVzQ291bnQoKSAqIHRyaWFuZ2xl
c1BlclRpbGUgKiBpbmRpY2VzUGVyVHJpYW5nbGU7CisgICAgfQorCisgICAgdW5zaWduZWQgZmxv
YXRzUGVyVmVydGV4KCkgY29uc3QKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBBdHRhY2hlZE1lc2hWZXJ0ZXhTaXplID0gNCArIC8vIHZlYzQgYV9wb3NpdGlvbgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKyAvLyB2
ZWMyIGFfdGV4Q29vcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyOyAvLyB2ZWMyIGFfbWVzaENvb3JkCisKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIERldGFjaGVkTWVzaFZlcnRleFNpemUgPSBBdHRhY2hlZE1lc2hWZXJ0ZXhT
aXplICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzOyAvLyB2ZWMzIGFfdHJpYW5nbGVDb29yZAorCisgICAgICAgIHJldHVybiBtX21lc2hU
eXBlID09IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6QVRUQUNIRUQgPyBBdHRhY2hlZE1lc2hWZXJ0
ZXhTaXplIDogRGV0YWNoZWRNZXNoVmVydGV4U2l6ZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCB2
ZXJ0aWNlc0NvdW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX21lc2hUeXBlID09
IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6QVRUQUNIRUQgPyBwb2ludHNDb3VudCgpIDogaW5kaWNl
c0NvdW50KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHR5cGVkZWYgdm9pZCAoQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvcjo6KkFkZFRyaWFuZ2xlVmVydGV4RnVuY3Rpb24pKGludCBxdWFkWCwg
aW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpOwor
CisgICAgdGVtcGxhdGUgPEFkZFRyaWFuZ2xlVmVydGV4RnVuY3Rpb24gYWRkVHJpYW5nbGVWZXJ0
ZXg+CisgICAgdm9pZCBhZGRUaWxlKGludCBxdWFkWCwgaW50IHF1YWRZKQorICAgIHsKKyAgICAg
ICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMCwgMCwgMSk7
CisgICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDEs
IDAsIDIpOworICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1
YWRZLCAxLCAxLCAzKTsKKyAgICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1
YWRYLCBxdWFkWSwgMCwgMCwgNCk7CisgICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0
ZXgpKShxdWFkWCwgcXVhZFksIDEsIDEsIDUpOworICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFu
Z2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAwLCAxLCA2KTsKKyAgICB9CisKKyAgICB2b2lkIGFk
ZEF0dGFjaGVkTWVzaEluZGV4KGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBp
bnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpOworCisgICAgdm9pZCBnZW5lcmF0ZUF0dGFjaGVk
TWVzaCgpOworCisgICAgdm9pZCBhZGREZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleChpbnQgcXVh
ZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xl
KTsKKworICAgIHZvaWQgZ2VuZXJhdGVEZXRhY2hlZE1lc2goKTsKKyAgICB2b2lkIGFkZFBvc2l0
aW9uQXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZKTsKKyAgICB2b2lkIGFkZFRleENvb3Jk
QXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZKTsKKyAgICB2b2lkIGFkZE1lc2hDb29yZEF0
dHJpYnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSk7CisgICAgdm9pZCBhZGRUcmlhbmdsZUNvb3Jk
QXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGUpOworICAgIHZvaWQg
YWRkQXR0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhpbnQgcXVhZFgsIGludCBxdWFkWSk7Cisg
ICAgdm9pZCBhZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKGludCBxdWFkWCwgaW50IHF1
YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpOworCisjaWZu
ZGVmIE5ERUJVRworICAgIHZvaWQgZHVtcEJ1ZmZlcnMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIFZlY3RvcjxmbG9hdD4gbV92ZXJ0aWNlczsKKyAgICBWZWN0b3I8dWludDE2X3Q+
IG1faW5kaWNlczsKKworICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbV9tZXNo
VHlwZTsKKyAgICBJbnRTaXplIG1fcG9pbnRzOworICAgIEludFNpemUgbV90aWxlczsKKyAgICBG
bG9hdFNpemUgbV90aWxlU2l6ZUluUGl4ZWxzOworICAgIEZsb2F0U2l6ZSBtX3RpbGVTaXplSW5E
ZXZpY2VTcGFjZTsKKyAgICBGbG9hdFJlY3QgbV9tZXNoQm94OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JB
UEhJQ1MpCisKKyNlbmRpZiAvLyBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwCmluZGV4IDIxNzc4YTg4MjBj
ZWNmOWYxMmM4ZjMzMzgwNjgyNzU4MDFjOWJkZTguLjE4MDJmZTA2M2U1YWQ0MjBiY2U2ODVhNTFm
YjRlZWZmNDdjNzk1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQ
cm9ncmFtLmNwcApAQCAtNzAsNiArNzAsNyBAQCBTdHJpbmcgQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbTo6ZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKCkKIEN1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0oQ3VzdG9tRmlsdGVyR2xv
YmFsQ29udGV4dCogZ2xvYmFsQ29udGV4dCwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8m
IHByb2dyYW1JbmZvKQogICAgIDogbV9nbG9iYWxDb250ZXh0KGdsb2JhbENvbnRleHQpCiAgICAg
LCBtX3Byb2dyYW1JbmZvKHByb2dyYW1JbmZvKQorICAgICwgbV9wbGF0Zm9ybUNvbXBpbGVkUHJv
Z3JhbSgwKQogICAgICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQogewogICAgIFN0cmluZyBvcmln
aW5hbFZlcnRleFNoYWRlciA9IHByb2dyYW1JbmZvLnZlcnRleFNoYWRlclN0cmluZygpOwpAQCAt
MTAyLDcgKzEwMyw3IEBAIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRl
clZhbGlkYXRlZFByb2dyYW0oQ3VzdG9tRmlsdGVyR2xvYmFsQ29uCiAKIFBhc3NSZWZQdHI8Q3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpj
b21waWxlZFByb2dyYW0oKQogewotICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQgJiYgIW1fdmFs
aWRhdGVkVmVydGV4U2hhZGVyLmlzTnVsbCgpICYmICFtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVy
LmlzTnVsbCgpKTsKKyAgICBBU1NFUlQobV9pc0luaXRpYWxpemVkICYmIG1fZ2xvYmFsQ29udGV4
dCAmJiAhbV92YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIuaXNOdWxsKCkgJiYgIW1fdmFsaWRhdGVkRnJh
Z21lbnRTaGFkZXIuaXNOdWxsKCkpOwogICAgIGlmICghbV9jb21waWxlZFByb2dyYW0pCiAgICAg
ICAgIG1fY29tcGlsZWRQcm9ncmFtID0gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpjcmVh
dGUobV9nbG9iYWxDb250ZXh0LT5jb250ZXh0KCksIG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBt
X3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKTsKICAgICByZXR1cm4gbV9jb21waWxlZFByb2dyYW07
CkBAIC0yNjMsMTAgKzI2NCwyMyBAQCBTdHJpbmcgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bTo6Y29tcG9zaXRlRnVuY3Rpb25TdHJpbmcoQ29tcG9zaXRlT3BlcmF0b3IgYwogICAgIAogQ3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6fkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0o
KQogeworICAgIHBsYXRmb3JtRGVzdHJveSgpOworCiAgICAgaWYgKG1fZ2xvYmFsQ29udGV4dCkK
ICAgICAgICAgbV9nbG9iYWxDb250ZXh0LT5yZW1vdmVWYWxpZGF0ZWRQcm9ncmFtKHRoaXMpOwog
fQogCisjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCitQbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSog
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6cGxhdGZvcm1Db21waWxlZFByb2dyYW0oKQor
eworICAgIHJldHVybiAwOworfQorCit2b2lkIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06
OnBsYXRmb3JtRGVzdHJveSgpCit7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW0uaAppbmRleCAzYTllMGYxOWNlYzYyNDhhMWU0Mzk3ZWI3NjY4
ZTFmM2Q2YzNlYjY5Li5hZmE3ZTEyYTY5NmUzZWMzMDRiYTMyMTRmYTk1YWNlMmFmYWZhYTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaApAQCAtMzksNiAr
MzksMTYgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKKy8vIFBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtIGRlZmluZXMgYSB0eXBlIHRo
YXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBmcmFtZXdvcmsgdXNlZCB0byBpbXBsZW1lbnQgYWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgb24gYSBwYXJ0aWN1bGFyIHBsYXRmb3JtLgorI2lmIFBMQVRG
T1JNKEJMQUNLQkVSUlkpCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBMYXllckNvbXBpbGVk
UHJvZ3JhbTsKK30KK3R5cGVkZWYgV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dyYW0gUGxhdGZv
cm1Db21waWxlZFByb2dyYW07CisjZWxzZQordHlwZWRlZiB2b2lkIFBsYXRmb3JtQ29tcGlsZWRQ
cm9ncmFtOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQU5HTEVXZWJL
aXRCcmlkZ2U7CkBAIC03MSw2ICs4MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBDdXN0b21GaWx0
ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8oKSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW1JbmZv
OyB9CiAgICAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IGNvbXBpbGVk
UHJvZ3JhbSgpOwogCisgICAgUGxhdGZvcm1Db21waWxlZFByb2dyYW0qIHBsYXRmb3JtQ29tcGls
ZWRQcm9ncmFtKCk7CisKICAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5pdGlhbGl6ZWQ7IH0KIAogICAgIC8vICdkZXRhY2hGcm9tR2xvYmFsQ29udGV4dCcgaXMg
Y2FsbGVkIHdoZW4gdGhlIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQgaXMgZGVsZXRlZCwgYW5k
IHRoZXJlJ3Mgbm8gbmVlZCBmb3IgdGhlIGNhbGxiYWNrIGFueW1vcmUuIApAQCAtNzksNiArOTEs
OCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0o
Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCosIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZv
Jik7CiAKKyAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOworCiAgICAgc3RhdGljIFN0cmluZyBk
ZWZhdWx0VmVydGV4U2hhZGVyU3RyaW5nKCk7CiAgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0RnJh
Z21lbnRTaGFkZXJTdHJpbmcoKTsKIApAQCAtOTUsNiArMTA5LDcgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlcjsKIAogICAgIFJlZlB0cjxDdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW0+IG1fY29tcGlsZWRQcm9ncmFtOworICAgIFBsYXRmb3JtQ29tcGls
ZWRQcm9ncmFtKiBtX3BsYXRmb3JtQ29tcGlsZWRQcm9ncmFtOwogCiAgICAgYm9vbCBtX2lzSW5p
dGlhbGl6ZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9ibGFja2JlcnJ5L0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW1CbGFja0Jl
cnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYmxhY2ti
ZXJyeS9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtQmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTBlYzcyMGJhNGQyNzg4ZWJiZGRmOTlhMmRkYzViZWRiYzYxMTc5ZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYmxhY2tiZXJy
eS9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtQmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSw1
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFT
IElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyVmFs
aWRhdGVkUHJvZ3JhbS5oIgorCisjaW5jbHVkZSAiTGF5ZXJDb21waWxlZFByb2dyYW0uaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitMYXllckNvbXBpbGVkUHJvZ3JhbSogQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbTo6cGxhdGZvcm1Db21waWxlZFByb2dyYW0oKQoreworICAgIEFTU0VS
VChtX2lzSW5pdGlhbGl6ZWQgJiYgIW1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLmlzTnVsbCgpICYm
ICFtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLmlzTnVsbCgpKTsKKworICAgIGlmICghbV9wbGF0
Zm9ybUNvbXBpbGVkUHJvZ3JhbSkKKyAgICAgICAgbV9wbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSA9
IExheWVyQ29tcGlsZWRQcm9ncmFtOjpjcmVhdGUobV92YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIG1f
dmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIpLmxlYWtSZWYoKTsKKworICAgIHJldHVybiBtX3BsYXRm
b3JtQ29tcGlsZWRQcm9ncmFtOworfQorCit2b2lkIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW06OnBsYXRmb3JtRGVzdHJveSgpCit7CisgICAgZGVyZWZJZk5vdE51bGwobV9wbGF0Zm9ybUNv
bXBpbGVkUHJvZ3JhbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShDU1NfU0hBREVSUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162820</attachid>
            <date>2012-09-07 11:03:41 -0700</date>
            <delta_ts>2012-09-07 11:10:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94725-20120907200319.patch</filename>
            <type>text/plain</type>
            <size>40520</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM1MjA5NDE0Mjg5ZmJi
ZmYzZjg5ZjJjNTlhYjkxMDJjMDFjNTE3ZC4uMWQyMWE0OWRlYzkzMjExYWU2NTQxOGVjMzI0ODFl
ZTU1OTZhNjlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA5LTA3ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQ1NTIFNoYWRlcnNdIFtC
bGFja0JlcnJ5XSBSZWZhY3RvciBDdXN0b21GaWx0ZXJNZXNoIGFuZCBDdXN0b21GaWx0ZXIqUHJv
Z3JhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3
MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXBh
cmF0ZSB0aGUgTWVzaEdlbmVyYXRvciBmcm9tIHRoZSBDdXN0b21GaWx0ZXJNZXNoIGludG8KKyAg
ICAgICAgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oL2NwcC4gVGhpcyBhbGxvd3MgdGhlIEJs
YWNrQmVycnkgcG9ydCB0bworICAgICAgICByZXVzZSB0aGUgbWVzaCBnZW5lcmF0b3IgaW4gaXRz
IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIEFsc28g
YWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGEgIlBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtIiBmcm9t
IGEKKyAgICAgICAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSwgc28gdGhlIEJsYWNrQmVy
cnkgcG9ydCBjYW4gcmV1c2UgdGhlCisgICAgICAgIHNoYWRlciB2YWxpZGF0aW9uIGNvZGUgaW4g
aXRzIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIEl0
IHR1cm5zIG91dCB0aGUgR3JhcGhpY3NDb250ZXh0M0QgaXMgbm90IG5lZWRlZCBmb3IgQU5HTEUg
dG8gZnVuY3Rpb24sCisgICAgICAgIHNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyBhbiBBU1NFUlQgdGhh
dCByZXF1aXJlZCBhIGNvbnRleHQgYmVmb3JlCisgICAgICAgIHZhbGlkYXRpbmcgdGhlIHNoYWRl
cnMgdXNpbmcgQU5HTEUuIFRoaXMgYWxsb3dzIHRoZSBCbGFja0JlcnJ5IHBvcnQgdG8KKyAgICAg
ICAgcmV1c2UgdGhlIHZhbGlkYXRpb24gY29kZSB3aXRob3V0IHRyaWdnZXJpbmcgdGhlIGFzc2Vy
dC4gSW4gdGhlIGZ1dHVyZSwKKyAgICAgICAgdGhlIHZhbGlkYXRpb24gY29kZSBjb3VsZCBiZSBt
b3ZlZCB0byBhIHNlcGFyYXRlIGNsYXNzIHRvIG1ha2UgaXQgbW9yZQorICAgICAgICBvYnZpb3Vz
IHRoYXQgaXQgaXNuJ3QgcmVhbGx5IHJlbGF0ZWQgdG8gR3JhcGhpY3NDb250ZXh0M0QuCisKKyAg
ICAgICAgSW4gZ2VuZXJhbCwgdGhpcyByZWZhY3RvcmluZyBjYW4gYmUgdXNlZnVsIGZvciBhbnkg
cG9ydCB0aGF0IHVzZXMKKyAgICAgICAgT3BlbkdMIHRvIGltcGxlbWVudCBhY2NlbGVyYXRlZCBj
b21wb3NpdGluZy4KKworICAgICAgICBJbnNwaXJlZCBieSBhbiBvcmlnaW5hbCBwYXRjaCBieSBK
b3NodWEgTmV0dGVyZmllbGQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWNhdXNlIHRoaXMg
cGF0Y2ggaW1wbGVtZW50cyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpnZXRWYWxpZGF0ZWRQcm9ncmFt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6Q3VzdG9tRmlsdGVyTWVz
aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNo
ZWRNZXNoSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
cjo6Z2VuZXJhdGVBdHRhY2hlZE1lc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
TWVzaEdlbmVyYXRvcjo6YWRkRGV0YWNoZWRNZXNoVmVydGV4QW5kSW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6Z2VuZXJhdGVEZXRhY2hlZE1lc2gp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkUG9zaXRp
b25BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
cjo6YWRkVGV4Q29vcmRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
TWVzaEdlbmVyYXRvcjo6YWRkTWVzaENvb3JkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZFRyaWFuZ2xlQ29vcmRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRN
ZXNoVmVydGV4QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmR1bXBCdWZmZXJzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6dmVy
dGljZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6aW5k
aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjpwb2lu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6cG9pbnRz
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6dGls
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6dGlsZXND
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjppbmRp
Y2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6
ZmxvYXRzUGVyVmVydGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3I6OnZlcnRpY2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvcjo6YWRkVGlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0p
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Y29tcGls
ZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW06On5DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6cGxhdGZvcm1D
b21waWxlZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbTo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9ibGFja2JlcnJ5L0N1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW1CbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnBsYXRmb3JtQ29tcGlsZWRQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06
OnBsYXRmb3JtRGVzdHJveSk6CisKIDIwMTItMDktMDQgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3Rp
bEBnb29nbGUuY29tPgogCiAgICAgICAgIFJlZ2lzdGVyIHNjcm9sbGluZyBsYXllcnMgd2l0aCBT
Y3JvbGxpbmdDb29yZGluYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNmNh
ZmI4OTg1NzQwYjg1NTc1NzE4YmI2ZDA2MTU4NjRmMjNjMzkzMi4uZjZjNjc1NGI4ZDRlYTQ3NDc0
ZWViNzI4MmQxYzA4ZDlmODI4M2M1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0zMjcxLDYgKzMyNzEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1l
c2guY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck1lc2guaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFy
YW1ldGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA4MGRj
Mjg2OTcwNWI5MDljMDBlMjkzNTg0ODQ4MTk1OWY5YWYxNzI1Li5hYjRiNjY5MjFlOWI5MTJlZjg0
NzY0NzY4YWQyYTNmNDVkMDQ4YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTIwMzYsNiArMjAzNiw3IEBA
IEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFs
Q29udGV4dC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1l
c2guaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2Vu
ZXJhdG9yLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVt
YmVyUGFyYW1ldGVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyQ29tcGlsZWRQcm9ncmFtLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmggXApAQCAtMzIzOSw2ICszMjQwLDcgQEAgY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX0ZJTFRFUlM9MSkgewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcCBcCisgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAgXAogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW0uY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRT
b3VyY2UuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMmNkZjk5MDIxMGZkY2EwZmI1OWM1MWFmMTIyY2Y5OTgw
ZTczZGFkOS4uZmQwZjNhYjQ3NmIyYzAzNjM2OWVjMDgyNzVlNjQ4YmQwMDY5YTkwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMzY4MCw2ICszNjgwLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJN
ZXNoLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgnLApA
QCAtMzY5Myw2ICszNjk0LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNw
cCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5oJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNGM2NTkzYjE4
MjFmMGZkYTM1M2NkMzFjMjJlNzY3ODVlNjgwYzY2OC4uNTM0NTMwYmMyNjllMjBlYmUzNjAzNjVl
ZmU3MmU1MTZhYWE3MDIwZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKQEAgLTMxNjQ5LDYgKzMxNjQ5LDE0IEBACiAJCQkJCQk+CiAJCQkJCTwvRmls
ZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
ZmlsdGVyc1xDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCIKKwkJCQkJCT4KKwkJCQkJPC9G
aWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xmaWx0ZXJzXEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCIKKwkJCQkJCT4KKwkJCQkJPC9G
aWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xmaWx0ZXJzXEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oIgogCQkJCQkJPgogCQkJCQk8
L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGE4NWEyMWFhZDE2NjZhMzhkN2Q1NDRkNTlmY2RkMDU4ZWJmNTk3MC4uYzYx
OTZlYjVlZjZhNTdlNjhkNjE3MDcwMDdmNDE3NGFmM2I4ZTI2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTE0OSw2ICs5MTQ5
LDggQEAKIAkJN0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCOTE4NEQxMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVW5kb01hbmFnZXIuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzYwMTI4MDYwMDc4QkI3MEUzNjdBOTUgLyogRE5TUmVzb2x2ZVF1
ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVR
dWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFMTJFOTBEMTVGQTVEM0Ew
MDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDsgcGF0aCA9IGZpbHRl
cnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yLmNwcDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzNDRDAwMTI3RjM0MEQwMEJF
OEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0UzN0VGMkQx
MzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3VicmVzb3VyY2VMb2FkZXJDRi5jcHA7IHBhdGggPSBj
Zi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaW5kb3dGb2N1c0FsbG93
ZWRJbmRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9i
YWxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAKaW5kZXggZTAxNDRiOTA1NmIwMTlkYWQ0MGU1
YTI0YjQ5YjkwYWRhYzI1MWRkYS4uNTgyODQ2ZTdmOTNiYzI0YzQ0ODQyY2MzNjdlZDc5YTFjNjM3
YmU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwCkBAIC04
Nyw5ICs4Nyw2IEBAIHZvaWQgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6cHJlcGFyZUNvbnRl
eHRJZk5lZWRlZChIb3N0V2luZG93KiBob3N0V2luZG93KQogCiBQYXNzUmVmUHRyPEN1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW0+IEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OmdldFZhbGlk
YXRlZFByb2dyYW0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQog
ewotICAgIC8vIENoZWNrIHRoYXQgdGhlIGNvbnRleHQgaXMgYWxyZWFkeSBwcmVwYXJlZC4KLSAg
ICBBU1NFUlQobV9jb250ZXh0KTsKLQogICAgIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW1z
TWFwOjppdGVyYXRvciBpdGVyID0gbV9wcm9ncmFtcy5maW5kKHByb2dyYW1JbmZvKTsKICAgICBp
ZiAoaXRlciAhPSBtX3Byb2dyYW1zLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25k
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJNZXNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAKaW5kZXggZTAxNGYwYTA2NDQyNjdiM2M1M2E3NzFj
MzNiOTJlYzA1NDc5ZTA1OS4uMDI3OGFiYWQwMjZiNWEwZDkxOWZjNWMyMzI0YWVmMmJmNTAwNmEw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJNZXNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCkBAIC0zMSwyMDkgKzMxLDEyIEBACiAKICNp
ZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIFVTRSgzRF9HUkFQSElDUykKICNpbmNsdWRlICJDdXN0
b21GaWx0ZXJNZXNoLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICAKLSNpZm5kZWYgTkRFQlVHCi0vLyBVc2UgImNhbGwgJ1dlYkNvcmU6OnNfZHVtcEN1c3RvbUZp
bHRlck1lc2hCdWZmZXJzJyA9IDEiIGluIEdEQiB0byBhY3RpdmF0ZSBwcmludGluZyBvZiB0aGUg
bWVzaCBidWZmZXJzLgotc3RhdGljIGJvb2wgc19kdW1wQ3VzdG9tRmlsdGVyTWVzaEJ1ZmZlcnMg
PSBmYWxzZTsKLSNlbmRpZgotCi1jbGFzcyBNZXNoR2VuZXJhdG9yIHsKLXB1YmxpYzoKLSAgICAv
LyBMaW5lcyBhbmQgY29sdW1ucyBhcmUgdGhlIHZhbHVlcyBwYXNzZWQgaW4gQ1NTLiBUaGUgcmVz
dWx0IGlzIHZlcnRleCBtZXNoIHRoYXQgaGFzICdyb3dzJyBudW1iZXJzIG9mIHJvd3MKLSAgICAv
LyBhbmQgJ2NvbHVtbnMnIG51bWJlciBvZiBjb2x1bW5zIHdpdGggYSB0b3RhbCBvZiAncm93cyAr
IDEnICogJ2NvbHVtbnMgKyAxJyB2ZXJ0aWNlcy4KLSAgICAvLyBNZXNoQm94IGlzIHRoZSBmaWx0
ZXJlZCBhcmVhIGNhbGN1bGF0ZWQgZGVmaW5lZCB1c2luZyB0aGUgYm9yZGVyLWJveCwgcGFkZGlu
Zy1ib3gsIGNvbnRlbnQtYm94IG9yIGZpbHRlci1ib3ggCi0gICAgLy8gYXR0cmlidXRlcy4gQSB2
YWx1ZSBvZiAoMCwgMCwgMSwgMSkgd2lsbCBjb3ZlciB0aGUgZW50aXJlIG91dHB1dCBzdXJmYWNl
LgotICAgIE1lc2hHZW5lcmF0b3IodW5zaWduZWQgY29sdW1ucywgdW5zaWduZWQgcm93cywgY29u
c3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1l
c2hUeXBlKQotICAgICAgICA6IG1fbWVzaFR5cGUobWVzaFR5cGUpCi0gICAgICAgICwgbV9wb2lu
dHMoY29sdW1ucyArIDEsIHJvd3MgKyAxKQotICAgICAgICAsIG1fdGlsZXMoY29sdW1ucywgcm93
cykKLSAgICAgICAgLCBtX3RpbGVTaXplSW5QaXhlbHMobWVzaEJveC53aWR0aCgpIC8gbV90aWxl
cy53aWR0aCgpLCBtZXNoQm94LmhlaWdodCgpIC8gbV90aWxlcy5oZWlnaHQoKSkKLSAgICAgICAg
LCBtX3RpbGVTaXplSW5EZXZpY2VTcGFjZSgxLjBmIC8gbV90aWxlcy53aWR0aCgpLCAxLjBmIC8g
bV90aWxlcy5oZWlnaHQoKSkKLSAgICAgICAgLCBtX21lc2hCb3gobWVzaEJveCkKLSAgICB7Ci0g
ICAgICAgIC8vIEJ1aWxkIHRoZSB0d28gYnVmZmVycyBuZWVkZWQgdG8gZHJhdyB0cmlhbmdsZXM6
Ci0gICAgICAgIC8vICogbV92ZXJ0aWNlcyBoYXMgYSBudW1iZXIgb2YgZmxvYXQgYXR0cmlidXRl
cyB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSB2ZXJ0ZXggc2hhZGVyCi0gICAgICAgIC8vIGZv
ciBlYWNoIGNvbXB1dGVkIHZlcnRleC4gVGhpcyBudW1iZXIgaXMgY2FsY3VsYXRlZCBpbiBmbG9h
dHNQZXJWZXJ0ZXgoKSBiYXNlZCBvbiB0aGUgbWVzaFR5cGUuCi0gICAgICAgIC8vICogbV9pbmRp
Y2VzIGlzIGEgYnVmZmVyIHRoYXQgd2lsbCBoYXZlIDMgaW5kaWNlcyBwZXIgdHJpYW5nbGUuIEVh
Y2ggaW5kZXggd2lsbCBwb2ludCBpbnNpZGUKLSAgICAgICAgLy8gdGhlIG1fdmVydGljZXMgYnVm
ZmVyLgotICAgICAgICBtX3ZlcnRpY2VzLnJlc2VydmVDYXBhY2l0eSh2ZXJ0aWNlc0NvdW50KCkg
KiBmbG9hdHNQZXJWZXJ0ZXgoKSk7Ci0gICAgICAgIG1faW5kaWNlcy5yZXNlcnZlQ2FwYWNpdHko
aW5kaWNlc0NvdW50KCkpOwotICAgICAgICAKLSAgICAgICAgLy8gQmFzZWQgb24gdGhlIG1lc2hU
eXBlIHRoZXJlIGNhbiBiZSB0d28gdHlwZXMgb2YgbWVzaGVzLgotICAgICAgICAvLyAqIGF0dGFj
aGVkOiBlYWNoIHRyaWFuZ2xlIHVzZXMgdmVydGljZXMgZnJvbSB0aGUgbmVpZ2hib3IgdHJpYW5n
bGVzLiBUaGlzIGlzIHVzZWZ1bCB0byBzYXZlIHNvbWUgR1BVIG1lbW9yeQotICAgICAgICAvLyB3
aGVuIHRoZXJlJ3Mgbm8gbmVlZCB0byBleHBsb2RlIHRoZSB0aWxlcy4KLSAgICAgICAgLy8gKiBk
ZXRhY2hlZDogZWFjaCB0cmlhbmdsZSBoYXMgaXRzIG93biB2ZXJ0aWNlcy4gVGhpcyBtZWFucyBl
YWNoIHRyaWFuZ2xlIGNhbiBiZSBtb3ZlZCBpbmRlcGVuZGVudGx5IGFuZCBhIHZlYzMKLSAgICAg
ICAgLy8gYXR0cmlidXRlIGlzIHBhc3NlZCwgc28gdGhhdCBlYWNoIHZlcnRleCBjYW4gYmUgdW5p
cXVlbHkgaWRlbnRpZmllZC4KLSAgICAgICAgaWYgKG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uOjpBVFRBQ0hFRCkKLSAgICAgICAgICAgIGdlbmVyYXRlQXR0YWNoZWRNZXNoKCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdlbmVyYXRlRGV0YWNoZWRNZXNoKCk7Ci0gICAg
ICAgIAotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgaWYgKHNfZHVtcEN1c3RvbUZpbHRlck1lc2hC
dWZmZXJzKQotICAgICAgICAgICAgZHVtcEJ1ZmZlcnMoKTsKLSNlbmRpZgotICAgIH0KLQotICAg
IGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2VzKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNl
czsgfQotICAgIGNvbnN0IFZlY3Rvcjx1aW50MTZfdD4mIGluZGljZXMoKSBjb25zdCB7IHJldHVy
biBtX2luZGljZXM7IH0KLQotICAgIGNvbnN0IEludFNpemUmIHBvaW50cygpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pbnRzOyB9Ci0gICAgdW5zaWduZWQgcG9pbnRzQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX3BvaW50cy53aWR0aCgpICogbV9wb2ludHMuaGVpZ2h0KCk7IH0KLSAgICAKLSAgICBjb25z
dCBJbnRTaXplJiB0aWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZXM7IH0KLSAgICB1bnNpZ25l
ZCB0aWxlc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV90aWxlcy53aWR0aCgpICogbV90aWxlcy5o
ZWlnaHQoKTsgfQotICAgIAotICAgIHVuc2lnbmVkIGluZGljZXNDb3VudCgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBjb25zdCB1bnNpZ25lZCB0cmlhbmdsZXNQZXJUaWxlID0gMjsKLSAgICAgICAg
Y29uc3QgdW5zaWduZWQgaW5kaWNlc1BlclRyaWFuZ2xlID0gMzsKLSAgICAgICAgcmV0dXJuIHRp
bGVzQ291bnQoKSAqIHRyaWFuZ2xlc1BlclRpbGUgKiBpbmRpY2VzUGVyVHJpYW5nbGU7Ci0gICAg
fQotICAgIAotICAgIHVuc2lnbmVkIGZsb2F0c1BlclZlcnRleCgpIGNvbnN0Ci0gICAgewotICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQXR0YWNoZWRNZXNoVmVydGV4U2l6ZSA9IDQgKyAv
LyB2ZWM0IGFfcG9zaXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyICsgLy8gdmVjMiBhX3RleENvb3JkCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjsgLy8gdmVjMiBhX21lc2hD
b29yZAotCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBEZXRhY2hlZE1lc2hWZXJ0ZXhT
aXplID0gQXR0YWNoZWRNZXNoVmVydGV4U2l6ZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzsgLy8gdmVjMyBhX3RyaWFuZ2xlQ29vcmQK
LQotICAgICAgICByZXR1cm4gbV9tZXNoVHlwZSA9PSBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkFU
VEFDSEVEID8gQXR0YWNoZWRNZXNoVmVydGV4U2l6ZSA6IERldGFjaGVkTWVzaFZlcnRleFNpemU7
Ci0gICAgfQotICAgIAotICAgIHVuc2lnbmVkIHZlcnRpY2VzQ291bnQoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRB
Q0hFRCA/IHBvaW50c0NvdW50KCkgOiBpbmRpY2VzQ291bnQoKTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgdHlwZWRlZiB2b2lkIChNZXNoR2VuZXJhdG9yOjoqQWRkVHJpYW5nbGVWZXJ0ZXhGdW5j
dGlvbikoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlhbmdsZVks
IGludCB0cmlhbmdsZSk7Ci0gICAgCi0gICAgdGVtcGxhdGUgPEFkZFRyaWFuZ2xlVmVydGV4RnVu
Y3Rpb24gYWRkVHJpYW5nbGVWZXJ0ZXg+Ci0gICAgdm9pZCBhZGRUaWxlKGludCBxdWFkWCwgaW50
IHF1YWRZKQotICAgIHsKLSAgICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1
YWRYLCBxdWFkWSwgMCwgMCwgMSk7Ci0gICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0
ZXgpKShxdWFkWCwgcXVhZFksIDEsIDAsIDIpOwotICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFu
Z2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAxLCAxLCAzKTsKLSAgICAgICAgKCgqdGhpcykuKihh
ZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMCwgMCwgNCk7Ci0gICAgICAgICgoKnRo
aXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDEsIDEsIDUpOwotICAgICAg
ICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAwLCAxLCA2KTsK
LSAgICB9Ci0gICAgCi0gICAgdm9pZCBhZGRBdHRhY2hlZE1lc2hJbmRleChpbnQgcXVhZFgsIGlu
dCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xlKQotICAg
IHsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHRyaWFuZ2xlKTsKLSAgICAgICAgbV9pbmRpY2VzLmFw
cGVuZCgocXVhZFkgKyB0cmlhbmdsZVkpICogbV9wb2ludHMud2lkdGgoKSArIChxdWFkWCArIHRy
aWFuZ2xlWCkpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGdlbmVyYXRlQXR0YWNoZWRNZXNoKCkK
LSAgICB7Ci0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV9wb2ludHMuaGVpZ2h0KCk7ICsr
aikgewotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3BvaW50cy53aWR0aCgpOyAr
K2kpCi0gICAgICAgICAgICAgICAgYWRkQXR0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhpLCBq
KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtX3Rp
bGVzLmhlaWdodCgpOyArK2opIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV90
aWxlcy53aWR0aCgpOyArK2kpCi0gICAgICAgICAgICAgICAgYWRkVGlsZTwmTWVzaEdlbmVyYXRv
cjo6YWRkQXR0YWNoZWRNZXNoSW5kZXg+KGksIGopOwotICAgICAgICB9Ci0gICAgfQotICAgIAot
ICAgIHZvaWQgYWRkRGV0YWNoZWRNZXNoVmVydGV4QW5kSW5kZXgoaW50IHF1YWRYLCBpbnQgcXVh
ZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSkKLSAgICB7Ci0g
ICAgICAgIGFkZERldGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMocXVhZFgsIHF1YWRZLCB0cmlh
bmdsZVgsIHRyaWFuZ2xlWSwgdHJpYW5nbGUpOwotICAgICAgICBtX2luZGljZXMuYXBwZW5kKG1f
aW5kaWNlcy5zaXplKCkpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGdlbmVyYXRlRGV0YWNoZWRN
ZXNoKCkKLSAgICB7Ci0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV90aWxlcy5oZWlnaHQo
KTsgKytqKSB7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdGlsZXMud2lkdGgo
KTsgKytpKQotICAgICAgICAgICAgICAgIGFkZFRpbGU8Jk1lc2hHZW5lcmF0b3I6OmFkZERldGFj
aGVkTWVzaFZlcnRleEFuZEluZGV4PihpLCBqKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAg
ICB2b2lkIGFkZFBvc2l0aW9uQXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZKQotICAgIHsK
LSAgICAgICAgLy8gdmVjNCBhX3Bvc2l0aW9uCi0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKG1f
dGlsZVNpemVJblBpeGVscy53aWR0aCgpICogcXVhZFggLSAwLjVmICsgbV9tZXNoQm94LngoKSk7
Ci0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJblBpeGVscy5oZWlnaHQoKSAq
IHF1YWRZIC0gMC41ZiArIG1fbWVzaEJveC55KCkpOwotICAgICAgICBtX3ZlcnRpY2VzLmFwcGVu
ZCgwLjBmKTsgLy8gegotICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZCgxLjBmKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGFkZFRleENvb3JkQXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZKQotICAg
IHsKLSAgICAgICAgLy8gdmVjMiBhX3RleENvb3JkCi0gICAgICAgIG1fdmVydGljZXMuYXBwZW5k
KG1fdGlsZVNpemVJblBpeGVscy53aWR0aCgpICogcXVhZFggKyBtX21lc2hCb3gueCgpKTsKLSAg
ICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluUGl4ZWxzLmhlaWdodCgpICogcXVh
ZFkgKyBtX21lc2hCb3gueSgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZE1lc2hDb29yZEF0dHJp
YnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSkKLSAgICB7Ci0gICAgICAgIC8vIHZlYzIgYV9tZXNo
Q29vcmQKLSAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluRGV2aWNlU3BhY2Uu
d2lkdGgoKSAqIHF1YWRYKTsKLSAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUlu
RGV2aWNlU3BhY2UuaGVpZ2h0KCkgKiBxdWFkWSk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRUcmlh
bmdsZUNvb3JkQXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGUpCi0g
ICAgewotICAgICAgICAvLyB2ZWMzIGFfdHJpYW5nbGVDb29yZAotICAgICAgICBtX3ZlcnRpY2Vz
LmFwcGVuZChxdWFkWCk7Ci0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKHF1YWRZKTsKLSAgICAg
ICAgbV92ZXJ0aWNlcy5hcHBlbmQodHJpYW5nbGUpOwotICAgIH0KLQotICAgIHZvaWQgYWRkQXR0
YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhpbnQgcXVhZFgsIGludCBxdWFkWSkKLSAgICB7Ci0g
ICAgICAgIGFkZFBvc2l0aW9uQXR0cmlidXRlKHF1YWRYLCBxdWFkWSk7Ci0gICAgICAgIGFkZFRl
eENvb3JkQXR0cmlidXRlKHF1YWRYLCBxdWFkWSk7Ci0gICAgICAgIGFkZE1lc2hDb29yZEF0dHJp
YnV0ZShxdWFkWCwgcXVhZFkpOwotICAgIH0KLQotICAgIHZvaWQgYWRkRGV0YWNoZWRNZXNoVmVy
dGV4QXR0cmlidXRlcyhpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRy
aWFuZ2xlWSwgaW50IHRyaWFuZ2xlKQotICAgIHsKLSAgICAgICAgYWRkQXR0YWNoZWRNZXNoVmVy
dGV4QXR0cmlidXRlcyhxdWFkWCArIHRyaWFuZ2xlWCwgcXVhZFkgKyB0cmlhbmdsZVkpOwotICAg
ICAgICBhZGRUcmlhbmdsZUNvb3JkQXR0cmlidXRlKHF1YWRYLCBxdWFkWSwgdHJpYW5nbGUpOwot
ICAgIH0KLSAgICAKLSNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBkdW1wQnVmZmVycygpIGNvbnN0
Ci0gICAgewotICAgICAgICBwcmludGYoIk1lc2ggYnVmZmVyczogUG9pbnRzLndpZHRoKCk6ICVk
LCBQb2ludHMuaGVpZ2h0KCk6ICVkIG1lc2hCb3g6ICVmLCAlZiwgJWYsICVmLCB0eXBlOiAlc1xu
IiwgCi0gICAgICAgICAgICAgICBtX3BvaW50cy53aWR0aCgpLCBtX3BvaW50cy5oZWlnaHQoKSwg
bV9tZXNoQm94LngoKSwgbV9tZXNoQm94LnkoKSwgbV9tZXNoQm94LndpZHRoKCksIG1fbWVzaEJv
eC5oZWlnaHQoKSwgCi0gICAgICAgICAgICAgICAobV9tZXNoVHlwZSA9PSBDdXN0b21GaWx0ZXJP
cGVyYXRpb246OkFUVEFDSEVEKSA/ICJBdHRhY2hlZCIgOiAiRGV0YWNoZWQiKTsKLSAgICAgICAg
cHJpbnRmKCItLS1WZXJ0ZXg6XG5cdCIpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV92ZXJ0aWNlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgcHJpbnRmKCIlZiAiLCBt
X3ZlcnRpY2VzLmF0KGkpKTsKLSAgICAgICAgICAgIGlmICghKChpICsgMSkgJSBmbG9hdHNQZXJW
ZXJ0ZXgoKSkpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJcblx0Iik7Ci0gICAgICAgIH0KLSAg
ICAgICAgcHJpbnRmKCJcbi0tLUluZGljZXM6ICIpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9pbmRpY2VzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgcHJpbnRmKCIlZCAi
LCBtX2luZGljZXMuYXQoaSkpOwotICAgICAgICBwcmludGYoIlxuIik7Ci0gICAgfQotI2VuZGlm
Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPGZsb2F0PiBtX3ZlcnRpY2VzOwotICAgIFZlY3Rvcjx1
aW50MTZfdD4gbV9pbmRpY2VzOwotICAgIAotICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVz
aFR5cGUgbV9tZXNoVHlwZTsKLSAgICBJbnRTaXplIG1fcG9pbnRzOwotICAgIEludFNpemUgbV90
aWxlczsKLSAgICBGbG9hdFNpemUgbV90aWxlU2l6ZUluUGl4ZWxzOwotICAgIEZsb2F0U2l6ZSBt
X3RpbGVTaXplSW5EZXZpY2VTcGFjZTsKLSAgICBGbG9hdFJlY3QgbV9tZXNoQm94OwotfTsKIAot
Q3VzdG9tRmlsdGVyTWVzaDo6Q3VzdG9tRmlsdGVyTWVzaChHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgdW5zaWduZWQgY29sdW1ucywgdW5zaWduZWQgcm93cywgCitDdXN0b21GaWx0ZXJNZXNo
OjpDdXN0b21GaWx0ZXJNZXNoKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBj
b2x1bW5zLCB1bnNpZ25lZCByb3dzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBGbG9hdFJlY3QmIG1lc2hCb3gsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5
cGUgbWVzaFR5cGUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fdmVydGljZXNC
dWZmZXJPYmplY3QoMCkKQEAgLTI0MSw3ICs0NCw3IEBAIEN1c3RvbUZpbHRlck1lc2g6OkN1c3Rv
bUZpbHRlck1lc2goR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIGNvbHVtbnMs
CiAgICAgLCBtX21lc2hCb3gobWVzaEJveCkKICAgICAsIG1fbWVzaFR5cGUobWVzaFR5cGUpCiB7
Ci0gICAgTWVzaEdlbmVyYXRvciBnZW5lcmF0b3IoY29sdW1ucywgcm93cywgbWVzaEJveCwgbWVz
aFR5cGUpOworICAgIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IgZ2VuZXJhdG9yKGNvbHVtbnMs
IHJvd3MsIG1lc2hCb3gsIG1lc2hUeXBlKTsKICAgICBtX2luZGljZXNDb3VudCA9IGdlbmVyYXRv
ci5pbmRpY2VzQ291bnQoKTsKICAgICBtX2J5dGVzUGVyVmVydGV4ID0gZ2VuZXJhdG9yLmZsb2F0
c1BlclZlcnRleCgpICogc2l6ZW9mKGZsb2F0KTsgICAgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlck1lc2hHZW5lcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkOWQ0ZDFiMjBkMzI1YjVhOWRkZDFj
OWQzZjViZGY4N2Y3MWM2NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwCkBAIC0w
LDAgKzEsMTczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5j
b3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAq
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIFVTRSgzRF9HUkFQSElDUykK
KyNpbmNsdWRlICJDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworI2lmbmRlZiBOREVCVUcKKy8vIFVzZSAiY2FsbCAnV2ViQ29yZTo6c19kdW1wQ3Vz
dG9tRmlsdGVyTWVzaEJ1ZmZlcnMnID0gMSIgaW4gR0RCIHRvIGFjdGl2YXRlIHByaW50aW5nIG9m
IHRoZSBtZXNoIGJ1ZmZlcnMuCitzdGF0aWMgYm9vbCBzX2R1bXBDdXN0b21GaWx0ZXJNZXNoQnVm
ZmVycyA9IGZhbHNlOworI2VuZGlmCisKK0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OkN1c3Rv
bUZpbHRlck1lc2hHZW5lcmF0b3IodW5zaWduZWQgY29sdW1ucywgdW5zaWduZWQgcm93cywgY29u
c3QgRmxvYXRSZWN0JiBtZXNoQm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1l
c2hUeXBlKQorICAgIDogbV9tZXNoVHlwZShtZXNoVHlwZSkKKyAgICAsIG1fcG9pbnRzKGNvbHVt
bnMgKyAxLCByb3dzICsgMSkKKyAgICAsIG1fdGlsZXMoY29sdW1ucywgcm93cykKKyAgICAsIG1f
dGlsZVNpemVJblBpeGVscyhtZXNoQm94LndpZHRoKCkgLyBtX3RpbGVzLndpZHRoKCksIG1lc2hC
b3guaGVpZ2h0KCkgLyBtX3RpbGVzLmhlaWdodCgpKQorICAgICwgbV90aWxlU2l6ZUluRGV2aWNl
U3BhY2UoMS4wZiAvIG1fdGlsZXMud2lkdGgoKSwgMS4wZiAvIG1fdGlsZXMuaGVpZ2h0KCkpCisg
ICAgLCBtX21lc2hCb3gobWVzaEJveCkKK3sKKyAgICAvLyBCdWlsZCB0aGUgdHdvIGJ1ZmZlcnMg
bmVlZGVkIHRvIGRyYXcgdHJpYW5nbGVzOgorICAgIC8vICogbV92ZXJ0aWNlcyBoYXMgYSBudW1i
ZXIgb2YgZmxvYXQgYXR0cmlidXRlcyB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSB2ZXJ0ZXgg
c2hhZGVyCisgICAgLy8gZm9yIGVhY2ggY29tcHV0ZWQgdmVydGV4LiBUaGlzIG51bWJlciBpcyBj
YWxjdWxhdGVkIGluIGZsb2F0c1BlclZlcnRleCgpIGJhc2VkIG9uIHRoZSBtZXNoVHlwZS4KKyAg
ICAvLyAqIG1faW5kaWNlcyBpcyBhIGJ1ZmZlciB0aGF0IHdpbGwgaGF2ZSAzIGluZGljZXMgcGVy
IHRyaWFuZ2xlLiBFYWNoIGluZGV4IHdpbGwgcG9pbnQgaW5zaWRlCisgICAgLy8gdGhlIG1fdmVy
dGljZXMgYnVmZmVyLgorICAgIG1fdmVydGljZXMucmVzZXJ2ZUNhcGFjaXR5KHZlcnRpY2VzQ291
bnQoKSAqIGZsb2F0c1BlclZlcnRleCgpKTsKKyAgICBtX2luZGljZXMucmVzZXJ2ZUNhcGFjaXR5
KGluZGljZXNDb3VudCgpKTsKKworICAgIC8vIEJhc2VkIG9uIHRoZSBtZXNoVHlwZSB0aGVyZSBj
YW4gYmUgdHdvIHR5cGVzIG9mIG1lc2hlcy4KKyAgICAvLyAqIGF0dGFjaGVkOiBlYWNoIHRyaWFu
Z2xlIHVzZXMgdmVydGljZXMgZnJvbSB0aGUgbmVpZ2hib3IgdHJpYW5nbGVzLiBUaGlzIGlzIHVz
ZWZ1bCB0byBzYXZlIHNvbWUgR1BVIG1lbW9yeQorICAgIC8vIHdoZW4gdGhlcmUncyBubyBuZWVk
IHRvIGV4cGxvZGUgdGhlIHRpbGVzLgorICAgIC8vICogZGV0YWNoZWQ6IGVhY2ggdHJpYW5nbGUg
aGFzIGl0cyBvd24gdmVydGljZXMuIFRoaXMgbWVhbnMgZWFjaCB0cmlhbmdsZSBjYW4gYmUgbW92
ZWQgaW5kZXBlbmRlbnRseSBhbmQgYSB2ZWMzCisgICAgLy8gYXR0cmlidXRlIGlzIHBhc3NlZCwg
c28gdGhhdCBlYWNoIHZlcnRleCBjYW4gYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KKyAgICBpZiAo
bV9tZXNoVHlwZSA9PSBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVEKQorICAgICAgICBn
ZW5lcmF0ZUF0dGFjaGVkTWVzaCgpOworICAgIGVsc2UKKyAgICAgICAgZ2VuZXJhdGVEZXRhY2hl
ZE1lc2goKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICBpZiAoc19kdW1wQ3VzdG9tRmlsdGVyTWVz
aEJ1ZmZlcnMpCisgICAgICAgIGR1bXBCdWZmZXJzKCk7CisjZW5kaWYKK30KKwordm9pZCBDdXN0
b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGRBdHRhY2hlZE1lc2hJbmRleChpbnQgcXVhZFgsIGlu
dCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xlKQorewor
ICAgIFVOVVNFRF9QQVJBTSh0cmlhbmdsZSk7CisgICAgbV9pbmRpY2VzLmFwcGVuZCgocXVhZFkg
KyB0cmlhbmdsZVkpICogbV9wb2ludHMud2lkdGgoKSArIChxdWFkWCArIHRyaWFuZ2xlWCkpOwor
fQorCit2b2lkIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmdlbmVyYXRlQXR0YWNoZWRNZXNo
KCkKK3sKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IG1fcG9pbnRzLmhlaWdodCgpOyArK2opIHsK
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3BvaW50cy53aWR0aCgpOyArK2kpCisgICAg
ICAgICAgICBhZGRBdHRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKGksIGopOworICAgIH0KKwor
ICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV90aWxlcy5oZWlnaHQoKTsgKytqKSB7CisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbV90aWxlcy53aWR0aCgpOyArK2kpCisgICAgICAgICAgICBh
ZGRUaWxlPCZDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGRBdHRhY2hlZE1lc2hJbmRleD4o
aSwgaik7CisgICAgfQorfQorCit2b2lkIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZERl
dGFjaGVkTWVzaFZlcnRleEFuZEluZGV4KGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5n
bGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpCit7CisgICAgYWRkRGV0YWNoZWRNZXNo
VmVydGV4QXR0cmlidXRlcyhxdWFkWCwgcXVhZFksIHRyaWFuZ2xlWCwgdHJpYW5nbGVZLCB0cmlh
bmdsZSk7CisgICAgbV9pbmRpY2VzLmFwcGVuZChtX2luZGljZXMuc2l6ZSgpKTsKK30KKwordm9p
ZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjpnZW5lcmF0ZURldGFjaGVkTWVzaCgpCit7Cisg
ICAgZm9yIChpbnQgaiA9IDA7IGogPCBtX3RpbGVzLmhlaWdodCgpOyArK2opIHsKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBtX3RpbGVzLndpZHRoKCk7ICsraSkKKyAgICAgICAgICAgIGFk
ZFRpbGU8JkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZERldGFjaGVkTWVzaFZlcnRleEFu
ZEluZGV4PihpLCBqKTsKKyAgICB9Cit9CisKK3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
cjo6YWRkUG9zaXRpb25BdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCit7CisgICAgLy8g
dmVjNCBhX3Bvc2l0aW9uCisgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluUGl4ZWxz
LndpZHRoKCkgKiBxdWFkWCAtIDAuNWYgKyBtX21lc2hCb3gueCgpKTsKKyAgICBtX3ZlcnRpY2Vz
LmFwcGVuZChtX3RpbGVTaXplSW5QaXhlbHMuaGVpZ2h0KCkgKiBxdWFkWSAtIDAuNWYgKyBtX21l
c2hCb3gueSgpKTsKKyAgICBtX3ZlcnRpY2VzLmFwcGVuZCgwLjBmKTsgLy8gegorICAgIG1fdmVy
dGljZXMuYXBwZW5kKDEuMGYpOworfQorCit2b2lkIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6
OmFkZFRleENvb3JkQXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZKQoreworICAgIC8vIHZl
YzIgYV90ZXhDb29yZAorICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJblBpeGVscy53
aWR0aCgpICogcXVhZFggKyBtX21lc2hCb3gueCgpKTsKKyAgICBtX3ZlcnRpY2VzLmFwcGVuZCht
X3RpbGVTaXplSW5QaXhlbHMuaGVpZ2h0KCkgKiBxdWFkWSArIG1fbWVzaEJveC55KCkpOworfQor
Cit2b2lkIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZE1lc2hDb29yZEF0dHJpYnV0ZShp
bnQgcXVhZFgsIGludCBxdWFkWSkKK3sKKyAgICAvLyB2ZWMyIGFfbWVzaENvb3JkCisgICAgbV92
ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluRGV2aWNlU3BhY2Uud2lkdGgoKSAqIHF1YWRYKTsK
KyAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5EZXZpY2VTcGFjZS5oZWlnaHQoKSAq
IHF1YWRZKTsKK30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGRUcmlhbmds
ZUNvb3JkQXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGUpCit7Cisg
ICAgLy8gdmVjMyBhX3RyaWFuZ2xlQ29vcmQKKyAgICBtX3ZlcnRpY2VzLmFwcGVuZChxdWFkWCk7
CisgICAgbV92ZXJ0aWNlcy5hcHBlbmQocXVhZFkpOworICAgIG1fdmVydGljZXMuYXBwZW5kKHRy
aWFuZ2xlKTsKK30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGRBdHRhY2hl
ZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKGludCBxdWFkWCwgaW50IHF1YWRZKQoreworICAgIGFkZFBv
c2l0aW9uQXR0cmlidXRlKHF1YWRYLCBxdWFkWSk7CisgICAgYWRkVGV4Q29vcmRBdHRyaWJ1dGUo
cXVhZFgsIHF1YWRZKTsKKyAgICBhZGRNZXNoQ29vcmRBdHRyaWJ1dGUocXVhZFgsIHF1YWRZKTsK
K30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0
ZXhBdHRyaWJ1dGVzKGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJp
YW5nbGVZLCBpbnQgdHJpYW5nbGUpCit7CisgICAgYWRkQXR0YWNoZWRNZXNoVmVydGV4QXR0cmli
dXRlcyhxdWFkWCArIHRyaWFuZ2xlWCwgcXVhZFkgKyB0cmlhbmdsZVkpOworICAgIGFkZFRyaWFu
Z2xlQ29vcmRBdHRyaWJ1dGUocXVhZFgsIHF1YWRZLCB0cmlhbmdsZSk7Cit9CisKKyNpZm5kZWYg
TkRFQlVHCit2b2lkIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmR1bXBCdWZmZXJzKCkgY29u
c3QKK3sKKyAgICBwcmludGYoIk1lc2ggYnVmZmVyczogUG9pbnRzLndpZHRoKCk6ICVkLCBQb2lu
dHMuaGVpZ2h0KCk6ICVkIG1lc2hCb3g6ICVmLCAlZiwgJWYsICVmLCB0eXBlOiAlc1xuIiwKKyAg
ICAgICAgICAgbV9wb2ludHMud2lkdGgoKSwgbV9wb2ludHMuaGVpZ2h0KCksIG1fbWVzaEJveC54
KCksIG1fbWVzaEJveC55KCksIG1fbWVzaEJveC53aWR0aCgpLCBtX21lc2hCb3guaGVpZ2h0KCks
CisgICAgICAgICAgIChtX21lc2hUeXBlID09IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6QVRUQUNI
RUQpID8gIkF0dGFjaGVkIiA6ICJEZXRhY2hlZCIpOworICAgIHByaW50ZigiLS0tVmVydGV4Olxu
XHQiKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92ZXJ0aWNlcy5zaXplKCk7ICsr
aSkgeworICAgICAgICBwcmludGYoIiVmICIsIG1fdmVydGljZXMuYXQoaSkpOworICAgICAgICBp
ZiAoISgoaSArIDEpICUgZmxvYXRzUGVyVmVydGV4KCkpKQorICAgICAgICAgICAgcHJpbnRmKCJc
blx0Iik7CisgICAgfQorICAgIHByaW50ZigiXG4tLS1JbmRpY2VzOiAiKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9pbmRpY2VzLnNpemUoKTsgKytpKQorICAgICAgICBwcmludGYo
IiVkICIsIG1faW5kaWNlcy5hdChpKSk7CisgICAgcHJpbnRmKCJcbiIpOworfQorI2VuZGlmCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykg
JiYgVVNFKDNEX0dSQVBISUNTKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA5Zjc1NjIxYjQ2NWQxNjFlNzVkY2RlNmQyMTllMWE5NmI2OWJkZjAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisg
KiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJh
dG9yX2gKKyNkZWZpbmUgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcl9oCisKKyNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpICYmIFVTRSgzRF9HUkFQSElDUykKKworI2luY2x1ZGUgIkN1c3RvbUZpbHRl
ck9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IgeworcHVibGljOgorICAgIC8v
IExpbmVzIGFuZCBjb2x1bW5zIGFyZSB0aGUgdmFsdWVzIHBhc3NlZCBpbiBDU1MuIFRoZSByZXN1
bHQgaXMgdmVydGV4IG1lc2ggdGhhdCBoYXMgJ3Jvd3MnIG51bWJlcnMgb2Ygcm93cworICAgIC8v
IGFuZCAnY29sdW1ucycgbnVtYmVyIG9mIGNvbHVtbnMgd2l0aCBhIHRvdGFsIG9mICdyb3dzICsg
MScgKiAnY29sdW1ucyArIDEnIHZlcnRpY2VzLgorICAgIC8vIE1lc2hCb3ggaXMgdGhlIGZpbHRl
cmVkIGFyZWEgY2FsY3VsYXRlZCBkZWZpbmVkIHVzaW5nIHRoZSBib3JkZXItYm94LCBwYWRkaW5n
LWJveCwgY29udGVudC1ib3ggb3IgZmlsdGVyLWJveAorICAgIC8vIGF0dHJpYnV0ZXMuIEEgdmFs
dWUgb2YgKDAsIDAsIDEsIDEpIHdpbGwgY292ZXIgdGhlIGVudGlyZSBvdXRwdXQgc3VyZmFjZS4K
KyAgICBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yKHVuc2lnbmVkIGNvbHVtbnMsIHVuc2lnbmVk
IHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpN
ZXNoVHlwZSk7CisKKyAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNlcygpIGNvbnN0IHsg
cmV0dXJuIG1fdmVydGljZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8dWludDE2X3Q+JiBpbmRpY2Vz
KCkgY29uc3QgeyByZXR1cm4gbV9pbmRpY2VzOyB9CisKKyAgICBjb25zdCBJbnRTaXplJiBwb2lu
dHMoKSBjb25zdCB7IHJldHVybiBtX3BvaW50czsgfQorICAgIHVuc2lnbmVkIHBvaW50c0NvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9wb2ludHMud2lkdGgoKSAqIG1fcG9pbnRzLmhlaWdodCgpOyB9
CisKKyAgICBjb25zdCBJbnRTaXplJiB0aWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZXM7IH0K
KyAgICB1bnNpZ25lZCB0aWxlc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV90aWxlcy53aWR0aCgp
ICogbV90aWxlcy5oZWlnaHQoKTsgfQorCisgICAgdW5zaWduZWQgaW5kaWNlc0NvdW50KCkgY29u
c3QKKyAgICB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHRyaWFuZ2xlc1BlclRpbGUgPSAyOwor
ICAgICAgICBjb25zdCB1bnNpZ25lZCBpbmRpY2VzUGVyVHJpYW5nbGUgPSAzOworICAgICAgICBy
ZXR1cm4gdGlsZXNDb3VudCgpICogdHJpYW5nbGVzUGVyVGlsZSAqIGluZGljZXNQZXJUcmlhbmds
ZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBmbG9hdHNQZXJWZXJ0ZXgoKSBjb25zdAorICAgIHsK
KyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEF0dGFjaGVkTWVzaFZlcnRleFNpemUgPSA0
ICsgLy8gdmVjNCBhX3Bvc2l0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMiArIC8vIHZlYzIgYV90ZXhDb29yZAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI7IC8vIHZlYzIgYV9t
ZXNoQ29vcmQKKworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRGV0YWNoZWRNZXNoVmVy
dGV4U2l6ZSA9IEF0dGFjaGVkTWVzaFZlcnRleFNpemUgKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM7IC8vIHZlYzMgYV90cmlhbmdsZUNv
b3JkCisKKyAgICAgICAgcmV0dXJuIG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
OjpBVFRBQ0hFRCA/IEF0dGFjaGVkTWVzaFZlcnRleFNpemUgOiBEZXRhY2hlZE1lc2hWZXJ0ZXhT
aXplOworICAgIH0KKworICAgIHVuc2lnbmVkIHZlcnRpY2VzQ291bnQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRB
Q0hFRCA/IHBvaW50c0NvdW50KCkgOiBpbmRpY2VzQ291bnQoKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgdHlwZWRlZiB2b2lkIChDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjoqQWRkVHJpYW5n
bGVWZXJ0ZXhGdW5jdGlvbikoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGlu
dCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSk7CisKKyAgICB0ZW1wbGF0ZSA8QWRkVHJpYW5nbGVW
ZXJ0ZXhGdW5jdGlvbiBhZGRUcmlhbmdsZVZlcnRleD4KKyAgICB2b2lkIGFkZFRpbGUoaW50IHF1
YWRYLCBpbnQgcXVhZFkpCisgICAgeworICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVy
dGV4KSkocXVhZFgsIHF1YWRZLCAwLCAwLCAxKTsKKyAgICAgICAgKCgqdGhpcykuKihhZGRUcmlh
bmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMSwgMCwgMik7CisgICAgICAgICgoKnRoaXMpLioo
YWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDEsIDEsIDMpOworICAgICAgICAoKCp0
aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAwLCAwLCA0KTsKKyAgICAg
ICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMSwgMSwgNSk7
CisgICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDAs
IDEsIDYpOworICAgIH0KKworICAgIHZvaWQgYWRkQXR0YWNoZWRNZXNoSW5kZXgoaW50IHF1YWRY
LCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSk7
CisKKyAgICB2b2lkIGdlbmVyYXRlQXR0YWNoZWRNZXNoKCk7CisKKyAgICB2b2lkIGFkZERldGFj
aGVkTWVzaFZlcnRleEFuZEluZGV4KGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVY
LCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpOworCisgICAgdm9pZCBnZW5lcmF0ZURldGFj
aGVkTWVzaCgpOworICAgIHZvaWQgYWRkUG9zaXRpb25BdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQg
cXVhZFkpOworICAgIHZvaWQgYWRkVGV4Q29vcmRBdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVh
ZFkpOworICAgIHZvaWQgYWRkTWVzaENvb3JkQXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZ
KTsKKyAgICB2b2lkIGFkZFRyaWFuZ2xlQ29vcmRBdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVh
ZFksIGludCB0cmlhbmdsZSk7CisgICAgdm9pZCBhZGRBdHRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1
dGVzKGludCBxdWFkWCwgaW50IHF1YWRZKTsKKyAgICB2b2lkIGFkZERldGFjaGVkTWVzaFZlcnRl
eEF0dHJpYnV0ZXMoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlh
bmdsZVksIGludCB0cmlhbmdsZSk7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgdm9pZCBkdW1wQnVm
ZmVycygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgVmVjdG9yPGZsb2F0PiBtX3Zl
cnRpY2VzOworICAgIFZlY3Rvcjx1aW50MTZfdD4gbV9pbmRpY2VzOworCisgICAgQ3VzdG9tRmls
dGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtX21lc2hUeXBlOworICAgIEludFNpemUgbV9wb2ludHM7
CisgICAgSW50U2l6ZSBtX3RpbGVzOworICAgIEZsb2F0U2l6ZSBtX3RpbGVTaXplSW5QaXhlbHM7
CisgICAgRmxvYXRTaXplIG1fdGlsZVNpemVJbkRldmljZVNwYWNlOworICAgIEZsb2F0UmVjdCBt
X21lc2hCb3g7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoQ1NTX1NIQURFUlMpICYmIFVTRSgzRF9HUkFQSElDUykKKworI2VuZGlmIC8vIEN1c3RvbUZp
bHRlck1lc2hHZW5lcmF0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbS5jcHAKaW5kZXggOGE5NmQ5NWYzM2UzNDIxYjdhYmZmZDg1NTYxYmU3YWExODRmYmNm
Ni4uMzk1YTgxMjFmNzc3MTUyNjQwZTgxODMzMDY1ZmZkNTJlMzQ0ODhlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxp
ZGF0ZWRQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwCkBAIC03MCw2ICs3MCw3IEBA
IFN0cmluZyBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpkZWZhdWx0RnJhZ21lbnRTaGFk
ZXJTdHJpbmcoKQogQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFs
aWRhdGVkUHJvZ3JhbShDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0KiBnbG9iYWxDb250ZXh0LCBj
b25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8pCiAgICAgOiBtX2dsb2Jh
bENvbnRleHQoZ2xvYmFsQ29udGV4dCkKICAgICAsIG1fcHJvZ3JhbUluZm8ocHJvZ3JhbUluZm8p
CisgICAgLCBtX3BsYXRmb3JtQ29tcGlsZWRQcm9ncmFtKDApCiAgICAgLCBtX2lzSW5pdGlhbGl6
ZWQoZmFsc2UpCiB7CiAgICAgU3RyaW5nIG9yaWdpbmFsVmVydGV4U2hhZGVyID0gcHJvZ3JhbUlu
Zm8udmVydGV4U2hhZGVyU3RyaW5nKCk7CkBAIC0xMDIsNyArMTAzLDcgQEAgQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbShDdXN0b21GaWx0
ZXJHbG9iYWxDb24KIAogUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IEN1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmNvbXBpbGVkUHJvZ3JhbSgpCiB7Ci0gICAgQVNT
RVJUKG1faXNJbml0aWFsaXplZCAmJiAhbV92YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIuaXNOdWxsKCkg
JiYgIW1fdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIuaXNOdWxsKCkpOworICAgIEFTU0VSVChtX2lz
SW5pdGlhbGl6ZWQgJiYgbV9nbG9iYWxDb250ZXh0ICYmICFtX3ZhbGlkYXRlZFZlcnRleFNoYWRl
ci5pc051bGwoKSAmJiAhbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlci5pc051bGwoKSk7CiAgICAg
aWYgKCFtX2NvbXBpbGVkUHJvZ3JhbSkKICAgICAgICAgbV9jb21waWxlZFByb2dyYW0gPSBDdXN0
b21GaWx0ZXJDb21waWxlZFByb2dyYW06OmNyZWF0ZShtX2dsb2JhbENvbnRleHQtPmNvbnRleHQo
KSwgbV92YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIG1fdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIpOwog
ICAgIHJldHVybiBtX2NvbXBpbGVkUHJvZ3JhbTsKQEAgLTI1MSwxMCArMjUyLDIzIEBAIFN0cmlu
ZyBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpjb21wb3NpdGVGdW5jdGlvblN0cmluZyhD
b21wb3NpdGVPcGVyYXRvciBjCiAgICAgCiBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjp+
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSgpCiB7CisgICAgcGxhdGZvcm1EZXN0cm95KCk7
CisKICAgICBpZiAobV9nbG9iYWxDb250ZXh0KQogICAgICAgICBtX2dsb2JhbENvbnRleHQtPnJl
bW92ZVZhbGlkYXRlZFByb2dyYW0odGhpcyk7CiB9CiAKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJS
WSkKK1BsYXRmb3JtQ29tcGlsZWRQcm9ncmFtKiBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFt
OjpwbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQg
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6cGxhdGZvcm1EZXN0cm95KCkKK3sKK30KKyNl
bmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NI
QURFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5oCmluZGV4
IDNhOWUwZjE5Y2VjNjI0OGExZTQzOTdlYjc2NjhlMWYzZDZjM2ViNjkuLmFmYTdlMTJhNjk2ZTNl
YzMwNGJhMzIxNGZhOTVhY2UyYWZhZmFhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbS5oCkBAIC0zOSw2ICszOSwxNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorLy8gUGxhdGZvcm1Db21w
aWxlZFByb2dyYW0gZGVmaW5lcyBhIHR5cGUgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIGZy
YW1ld29yayB1c2VkIHRvIGltcGxlbWVudCBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBvbiBhIHBh
cnRpY3VsYXIgcGxhdGZvcm0uCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIExheWVyQ29tcGlsZWRQcm9ncmFtOworfQordHlwZWRlZiBXZWJDb3Jl
OjpMYXllckNvbXBpbGVkUHJvZ3JhbSBQbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbTsKKyNlbHNlCit0
eXBlZGVmIHZvaWQgUGxhdGZvcm1Db21waWxlZFByb2dyYW07CisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBTkdMRVdlYktpdEJyaWRnZTsKQEAgLTcxLDYgKzgxLDggQEAg
cHVibGljOgogICAgIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJiBwcm9ncmFtSW5mbygp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3JhbUluZm87IH0KICAgICBQYXNzUmVmUHRyPEN1c3RvbUZp
bHRlckNvbXBpbGVkUHJvZ3JhbT4gY29tcGlsZWRQcm9ncmFtKCk7CiAKKyAgICBQbGF0Zm9ybUNv
bXBpbGVkUHJvZ3JhbSogcGxhdGZvcm1Db21waWxlZFByb2dyYW0oKTsKKwogICAgIGJvb2wgaXNJ
bml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsaXplZDsgfQogCiAgICAgLy8g
J2RldGFjaEZyb21HbG9iYWxDb250ZXh0JyBpcyBjYWxsZWQgd2hlbiB0aGUgQ3VzdG9tRmlsdGVy
R2xvYmFsQ29udGV4dCBpcyBkZWxldGVkLCBhbmQgdGhlcmUncyBubyBuZWVkIGZvciB0aGUgY2Fs
bGJhY2sgYW55bW9yZS4gCkBAIC03OSw2ICs5MSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbShDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0Kiwg
Y29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKTsKIAorICAgIHZvaWQgcGxhdGZvcm1EZXN0
cm95KCk7CisKICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmcoKTsK
ICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRGcmFnbWVudFNoYWRlclN0cmluZygpOwogCkBAIC05
NSw2ICsxMDksNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3ZhbGlkYXRlZEZyYWdtZW50U2hh
ZGVyOwogCiAgICAgUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gbV9jb21waWxl
ZFByb2dyYW07CisgICAgUGxhdGZvcm1Db21waWxlZFByb2dyYW0qIG1fcGxhdGZvcm1Db21waWxl
ZFByb2dyYW07CiAKICAgICBib29sIG1faXNJbml0aWFsaXplZDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2JsYWNrYmVycnkvQ3VzdG9t
RmlsdGVyVmFsaWRhdGVkUHJvZ3JhbUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9ibGFja2JlcnJ5L0N1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW1CbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDk4ZWY3Y2MwODIzZmQyMmE2MDQ3ZjAy
OWM3MjViYzkzMWVlZDM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9ibGFja2JlcnJ5L0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW1CbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
CisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMp
CisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmgiCisKKyNpbmNsdWRl
ICJMYXllckNvbXBpbGVkUHJvZ3JhbS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0xheWVy
Q29tcGlsZWRQcm9ncmFtKiBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpwbGF0Zm9ybUNv
bXBpbGVkUHJvZ3JhbSgpCit7CisgICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCAmJiAhbV92YWxp
ZGF0ZWRWZXJ0ZXhTaGFkZXIuaXNOdWxsKCkgJiYgIW1fdmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIu
aXNOdWxsKCkpOworCisgICAgaWYgKCFtX3BsYXRmb3JtQ29tcGlsZWRQcm9ncmFtKQorICAgICAg
ICBtX3BsYXRmb3JtQ29tcGlsZWRQcm9ncmFtID0gTGF5ZXJDb21waWxlZFByb2dyYW06OmNyZWF0
ZShtX3ZhbGlkYXRlZFZlcnRleFNoYWRlciwgbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlcikubGVh
a1JlZigpOworCisgICAgcmV0dXJuIG1fcGxhdGZvcm1Db21waWxlZFByb2dyYW07Cit9CisKK3Zv
aWQgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAg
ICBkZXJlZklmTm90TnVsbChtX3BsYXRmb3JtQ29tcGlsZWRQcm9ncmFtKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162823</attachid>
            <date>2012-09-07 11:10:22 -0700</date>
            <delta_ts>2012-09-07 14:53:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94725-20120907201000.patch</filename>
            <type>text/plain</type>
            <size>43056</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZjNmFmNTFlNmZiZmU0
Y2Q5ZjRkMTY5NDk2OTg5NGFiMmQwMTE1ZC4uNDJmZTcwMjlhNGFmOTlmNTUzOTljZmNiMmIwMDE1
OGRhMTU5NWJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA5LTA3ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQ1NTIFNoYWRlcnNdIFtC
bGFja0JlcnJ5XSBSZWZhY3RvciBDdXN0b21GaWx0ZXJNZXNoIGFuZCBDdXN0b21GaWx0ZXIqUHJv
Z3JhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3
MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXBh
cmF0ZSB0aGUgTWVzaEdlbmVyYXRvciBmcm9tIHRoZSBDdXN0b21GaWx0ZXJNZXNoIGludG8KKyAg
ICAgICAgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oL2NwcC4gVGhpcyBhbGxvd3MgdGhlIEJs
YWNrQmVycnkgcG9ydCB0bworICAgICAgICByZXVzZSB0aGUgbWVzaCBnZW5lcmF0b3IgaW4gaXRz
IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIEFsc28g
YWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGEgIlBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtIiBmcm9t
IGEKKyAgICAgICAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSwgc28gdGhlIEJsYWNrQmVy
cnkgcG9ydCBjYW4gcmV1c2UgdGhlCisgICAgICAgIHNoYWRlciB2YWxpZGF0aW9uIGNvZGUgaW4g
aXRzIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIEl0
IHR1cm5zIG91dCB0aGUgR3JhcGhpY3NDb250ZXh0M0QgaXMgbm90IG5lZWRlZCBmb3IgQU5HTEUg
dG8gZnVuY3Rpb24sCisgICAgICAgIHNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyBhbiBBU1NFUlQgdGhh
dCByZXF1aXJlZCBhIGNvbnRleHQgYmVmb3JlCisgICAgICAgIHZhbGlkYXRpbmcgdGhlIHNoYWRl
cnMgdXNpbmcgQU5HTEUuIFRoaXMgYWxsb3dzIHRoZSBCbGFja0JlcnJ5IHBvcnQgdG8KKyAgICAg
ICAgcmV1c2UgdGhlIHZhbGlkYXRpb24gY29kZSB3aXRob3V0IHRyaWdnZXJpbmcgdGhlIGFzc2Vy
dC4gSW4gdGhlIGZ1dHVyZSwKKyAgICAgICAgdGhlIHZhbGlkYXRpb24gY29kZSBjb3VsZCBiZSBt
b3ZlZCB0byBhIHNlcGFyYXRlIGNsYXNzIHRvIG1ha2UgaXQgbW9yZQorICAgICAgICBvYnZpb3Vz
IHRoYXQgaXQgaXNuJ3QgcmVhbGx5IHJlbGF0ZWQgdG8gR3JhcGhpY3NDb250ZXh0M0QuCisKKyAg
ICAgICAgSW4gZ2VuZXJhbCwgdGhpcyByZWZhY3RvcmluZyBjYW4gYmUgdXNlZnVsIGZvciBhbnkg
cG9ydCB0aGF0IHVzZXMKKyAgICAgICAgT3BlbkdMIHRvIGltcGxlbWVudCBhY2NlbGVyYXRlZCBj
b21wb3NpdGluZy4KKworICAgICAgICBJbnNwaXJlZCBieSBhbiBvcmlnaW5hbCBwYXRjaCBieSBK
b3NodWEgTmV0dGVyZmllbGQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWNhdXNlIHRoaXMg
cGF0Y2ggaW1wbGVtZW50cyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpnZXRWYWxpZGF0ZWRQcm9ncmFt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6Q3VzdG9tRmlsdGVyTWVz
aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNo
ZWRNZXNoSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
cjo6Z2VuZXJhdGVBdHRhY2hlZE1lc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
TWVzaEdlbmVyYXRvcjo6YWRkRGV0YWNoZWRNZXNoVmVydGV4QW5kSW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6Z2VuZXJhdGVEZXRhY2hlZE1lc2gp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkUG9zaXRp
b25BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
cjo6YWRkVGV4Q29vcmRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
TWVzaEdlbmVyYXRvcjo6YWRkTWVzaENvb3JkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZFRyaWFuZ2xlQ29vcmRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRN
ZXNoVmVydGV4QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmR1bXBCdWZmZXJzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6dmVy
dGljZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6aW5k
aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjpwb2lu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6cG9pbnRz
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6dGls
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6dGlsZXND
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjppbmRp
Y2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6
ZmxvYXRzUGVyVmVydGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3I6OnZlcnRpY2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvcjo6YWRkVGlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0p
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Y29tcGls
ZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW06On5DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6cGxhdGZvcm1D
b21waWxlZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbTo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9ibGFja2JlcnJ5L0N1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW1CbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnBsYXRmb3JtQ29tcGlsZWRQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06
OnBsYXRmb3JtRGVzdHJveSk6CisKIDIwMTItMDktMDcgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gQWRkIGFub3RoZXIgYWxsLWluLW9u
ZSBzb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDU2ZTk4NTY1NjI4NWVh
ZWZlYTY3MDQ3OGFkNGFiYjY3MDAwNzBlYjYuLmI5NWY4OGVlZjEzNmFjMWFjNmYzZDQ5ODU1OThm
YzUwMGI1NDhiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDI1MSw2ICs0
MjUxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNo
LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9w
ZXJhdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNzhlMDMwOGQwNTM2YzY0
NGQ3YzNkMzZkMTlmYWRmM2M4MDFiOTY3NC4uZWRiZTJmNDM3YjYxNTBjMzlkMGY4NWY3OTc0ZjBk
YWYzNTA3OTA5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yMDQ0LDYgKzIwNDQsNyBAQCBIRUFERVJTICs9
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmggXAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRl
ci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNvbXBpbGVk
UHJvZ3JhbS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9w
ZXJhdGlvbi5oIFwKQEAgLTM0NDYsNiArMzQ0Nyw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9GSUxURVJTPTEpIHsKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJQcm9ncmFtLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcCBcCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcCBc
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDMzNTlkZjgyMmYwYmQzY2E5YWQ0YzVhNDgyNDNhNzNiYjM0OTE0MmQuLjVl
M2NlZGIyNTRmYmM3OTA1NTk0NzgyNTQxNzBiMmNlZjZhMjIzODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTQ5MTIsNiArNDkxMiw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5oJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oJywKQEAgLTQ5MjUsNiAr
NDkyNiw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyVHJhbnNmb3JtUGFyYW1ldGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGZkMmI1NjJhZjA1NTlhMzYzZTVi
MTIwOGNlYjViNTY4NTkxYjE2YTMuLjdlMmYwYjBiODAxMDUyZDYzZDgxY2M2N2UzNzJiNGNkYTNl
ZWU5ZjkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC0zMTg4NSw2ICszMTg4NSwxNCBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxG
aWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNcQ3Vz
dG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJ
PEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xD
dXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmgiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJ
PEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xD
dXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaCIKIAkJCQkJCT4KIAkJCQkJPC9GaWxlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGU0ZGNmNTAyZTc2MGY2N2MyZmM2YTljOTNmYTViMGM2NTQ1MWMzNjguLjg0ZmNhZDgxYzJmYWYy
YmI0MjNkZTM2MWE5NGQyOGQ0ZmJhY2E0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5ODcsNiArMTk4Nyw4IEBACiAJCTdC
RDExN0VCMTVCOERCMDEwMEM5NzRBMyAvKiBET01UcmFuc2FjdGlvblN0ZXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JEMTE3RTkxNUI4REIwMTAw
Qzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5jcHAgKi87IH07CiAJCTdCRDExN0VDMTVCOERC
MDEwMEM5NzRBMyAvKiBET01UcmFuc2FjdGlvblN0ZXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCRDExN0VBMTVCOERCMDEwMEM5NzRBMyAvKiBET01U
cmFuc2FjdGlvblN0ZXAuaCAqLzsgfTsKIAkJN0M1MjJENEIxNUI0NzdFODAwOUI3Qzk1IC8qIElu
c3BlY3Rvck92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0M1MjJENDkxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3Bw
ICovOyB9OworCQk3RTEyRTkwRjE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0UxMkU5MEQxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCAq
LzsgfTsKKwkJN0UxMkU5MTAxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0UxMkU5MEUxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3Bw
ICovOyB9OwogCQk3RTMzQ0QwMTEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UzM0NEMDAxMjdG
MzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTM3RUYyRTEzMzkyMDg4MDBCMjkyNTAgLyogU3Vi
cmVzb3VyY2VMb2FkZXJDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RTM3RUYyRDEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJD
Ri5jcHAgKi87IH07CiAJCTdFOTlBRjUxMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0Fs
bG93ZWRJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZElu
ZGljYXRvci5jcHAgKi87IH07CkBAIC05MTkyLDYgKzkxOTQsOCBAQAogCQk3QzUyMkQ0OTE1QjQ3
N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0M1MjJENEExNUI0NzhCMjAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yT3ZlcmxheS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzYwMTI4MDYwMDc4QkI3MEUzNjdBOTUgLyog
RE5TUmVzb2x2ZVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEROU1Jlc29sdmVRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFMTJF
OTBEMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDsg
cGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVy
TWVzaEdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBD
dXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVy
TWVzaEdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzNDRDAw
MTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0UzN0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3VicmVzb3VyY2VMb2FkZXJDRi5j
cHA7IHBhdGggPSBjZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dl
ZEluZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaW5k
b3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTgxNTAsNiArMTgxNTQsOCBAQAogCQlBNzVFOEI3RjBFMURFMkIwMDA3RjI0ODEgLyogZmls
dGVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0Ux
MkU5MEQxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCAqLywK
KwkJCQk3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5jcHAgKi8sCiAJCQkJNTA5RUMxMDgxNUU4NDhDQTAwRTgyNTgxIC8qIEN1c3RvbUZpbHRlclRy
YW5zZm9ybVBhcmFtZXRlci5oICovLAogCQkJCTQ5RUNFQjVDMTQ5OTc5MEQwMENERDNBNCAvKiBh
cm0gKi8sCiAJCQkJNTBENDA2MEYxNDdENDlERTAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbS5jcHAgKi8sCkBAIC0yNTUxMSw2ICsyNTUxNyw3IEBACiAJCQkJNzZGMkUyRUMx
NUY3NENFRjAwNUZGNjY0IC8qIFJlbmRlckRpYWxvZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2
MDVBRUQxNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0RjM3N0ZGNTE1RkEzNTZBMDBFNUQ2MEQgLyogV2ViQ29yZU1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0UxMkU5MEYxNUZBNUQzQTAwNUU0MTI2
IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjg2MDMs
NiArMjg2MTAsNyBAQAogCQkJCUJDRDhBNUYwMTVGNTZGMkMwMDk4RDA3MSAvKiBUZXh0QnJlYWtJ
dGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NkYyRTJFQjE1Rjc0Q0VGMDA1RkY2NjQg
LyogUmVuZGVyRGlhbG9nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjA1QUVDMTVGOTQ4NDgw
MDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3
RTEyRTkxMDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3Bw
CmluZGV4IGUwMTQ0YjkwNTZiMDE5ZGFkNDBlNWEyNGI0OWI5MGFkYWMyNTFkZGEuLjU4Mjg0NmU3
ZjkzYmMyNGM0NDg0MmNjMzY3ZWQ3OWExYzYzN2JlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJHbG9iYWxDb250ZXh0LmNwcApAQCAtODcsOSArODcsNiBAQCB2b2lkIEN1c3RvbUZpbHRl
ckdsb2JhbENvbnRleHQ6OnByZXBhcmVDb250ZXh0SWZOZWVkZWQoSG9zdFdpbmRvdyogaG9zdFdp
bmRvdykKIAogUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtPiBDdXN0b21G
aWx0ZXJHbG9iYWxDb250ZXh0OjpnZXRWYWxpZGF0ZWRQcm9ncmFtKGNvbnN0IEN1c3RvbUZpbHRl
clByb2dyYW1JbmZvJiBwcm9ncmFtSW5mbykKIHsKLSAgICAvLyBDaGVjayB0aGF0IHRoZSBjb250
ZXh0IGlzIGFscmVhZHkgcHJlcGFyZWQuCi0gICAgQVNTRVJUKG1fY29udGV4dCk7Ci0KICAgICBD
dXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtc01hcDo6aXRlcmF0b3IgaXRlciA9IG1fcHJvZ3Jh
bXMuZmluZChwcm9ncmFtSW5mbyk7CiAgICAgaWYgKGl0ZXIgIT0gbV9wcm9ncmFtcy5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIGl0ZXItPnNlY29uZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwCmlu
ZGV4IGUwMTRmMGEwNjQ0MjY3YjNjNTNhNzcxYzMzYjkyZWMwNTQ3OWUwNTkuLjAyNzhhYmFkMDI2
YjVhMGQ5MTlmYzVjMjMyNGFlZjJiZjUwMDZhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNw
cApAQCAtMzEsMjA5ICszMSwxMiBAQAogCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0Uo
M0RfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyTWVzaC5oIgorI2luY2x1ZGUgIkN1
c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi0jaWZuZGVmIE5ERUJVRwotLy8gVXNlICJj
YWxsICdXZWJDb3JlOjpzX2R1bXBDdXN0b21GaWx0ZXJNZXNoQnVmZmVycycgPSAxIiBpbiBHREIg
dG8gYWN0aXZhdGUgcHJpbnRpbmcgb2YgdGhlIG1lc2ggYnVmZmVycy4KLXN0YXRpYyBib29sIHNf
ZHVtcEN1c3RvbUZpbHRlck1lc2hCdWZmZXJzID0gZmFsc2U7Ci0jZW5kaWYKLQotY2xhc3MgTWVz
aEdlbmVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgLy8gTGluZXMgYW5kIGNvbHVtbnMgYXJlIHRoZSB2
YWx1ZXMgcGFzc2VkIGluIENTUy4gVGhlIHJlc3VsdCBpcyB2ZXJ0ZXggbWVzaCB0aGF0IGhhcyAn
cm93cycgbnVtYmVycyBvZiByb3dzCi0gICAgLy8gYW5kICdjb2x1bW5zJyBudW1iZXIgb2YgY29s
dW1ucyB3aXRoIGEgdG90YWwgb2YgJ3Jvd3MgKyAxJyAqICdjb2x1bW5zICsgMScgdmVydGljZXMu
Ci0gICAgLy8gTWVzaEJveCBpcyB0aGUgZmlsdGVyZWQgYXJlYSBjYWxjdWxhdGVkIGRlZmluZWQg
dXNpbmcgdGhlIGJvcmRlci1ib3gsIHBhZGRpbmctYm94LCBjb250ZW50LWJveCBvciBmaWx0ZXIt
Ym94IAotICAgIC8vIGF0dHJpYnV0ZXMuIEEgdmFsdWUgb2YgKDAsIDAsIDEsIDEpIHdpbGwgY292
ZXIgdGhlIGVudGlyZSBvdXRwdXQgc3VyZmFjZS4KLSAgICBNZXNoR2VuZXJhdG9yKHVuc2lnbmVk
IGNvbHVtbnMsIHVuc2lnbmVkIHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkKLSAgICAgICAgOiBtX21lc2hUeXBl
KG1lc2hUeXBlKQotICAgICAgICAsIG1fcG9pbnRzKGNvbHVtbnMgKyAxLCByb3dzICsgMSkKLSAg
ICAgICAgLCBtX3RpbGVzKGNvbHVtbnMsIHJvd3MpCi0gICAgICAgICwgbV90aWxlU2l6ZUluUGl4
ZWxzKG1lc2hCb3gud2lkdGgoKSAvIG1fdGlsZXMud2lkdGgoKSwgbWVzaEJveC5oZWlnaHQoKSAv
IG1fdGlsZXMuaGVpZ2h0KCkpCi0gICAgICAgICwgbV90aWxlU2l6ZUluRGV2aWNlU3BhY2UoMS4w
ZiAvIG1fdGlsZXMud2lkdGgoKSwgMS4wZiAvIG1fdGlsZXMuaGVpZ2h0KCkpCi0gICAgICAgICwg
bV9tZXNoQm94KG1lc2hCb3gpCi0gICAgewotICAgICAgICAvLyBCdWlsZCB0aGUgdHdvIGJ1ZmZl
cnMgbmVlZGVkIHRvIGRyYXcgdHJpYW5nbGVzOgotICAgICAgICAvLyAqIG1fdmVydGljZXMgaGFz
IGEgbnVtYmVyIG9mIGZsb2F0IGF0dHJpYnV0ZXMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUg
dmVydGV4IHNoYWRlcgotICAgICAgICAvLyBmb3IgZWFjaCBjb21wdXRlZCB2ZXJ0ZXguIFRoaXMg
bnVtYmVyIGlzIGNhbGN1bGF0ZWQgaW4gZmxvYXRzUGVyVmVydGV4KCkgYmFzZWQgb24gdGhlIG1l
c2hUeXBlLgotICAgICAgICAvLyAqIG1faW5kaWNlcyBpcyBhIGJ1ZmZlciB0aGF0IHdpbGwgaGF2
ZSAzIGluZGljZXMgcGVyIHRyaWFuZ2xlLiBFYWNoIGluZGV4IHdpbGwgcG9pbnQgaW5zaWRlCi0g
ICAgICAgIC8vIHRoZSBtX3ZlcnRpY2VzIGJ1ZmZlci4KLSAgICAgICAgbV92ZXJ0aWNlcy5yZXNl
cnZlQ2FwYWNpdHkodmVydGljZXNDb3VudCgpICogZmxvYXRzUGVyVmVydGV4KCkpOwotICAgICAg
ICBtX2luZGljZXMucmVzZXJ2ZUNhcGFjaXR5KGluZGljZXNDb3VudCgpKTsKLSAgICAgICAgCi0g
ICAgICAgIC8vIEJhc2VkIG9uIHRoZSBtZXNoVHlwZSB0aGVyZSBjYW4gYmUgdHdvIHR5cGVzIG9m
IG1lc2hlcy4KLSAgICAgICAgLy8gKiBhdHRhY2hlZDogZWFjaCB0cmlhbmdsZSB1c2VzIHZlcnRp
Y2VzIGZyb20gdGhlIG5laWdoYm9yIHRyaWFuZ2xlcy4gVGhpcyBpcyB1c2VmdWwgdG8gc2F2ZSBz
b21lIEdQVSBtZW1vcnkKLSAgICAgICAgLy8gd2hlbiB0aGVyZSdzIG5vIG5lZWQgdG8gZXhwbG9k
ZSB0aGUgdGlsZXMuCi0gICAgICAgIC8vICogZGV0YWNoZWQ6IGVhY2ggdHJpYW5nbGUgaGFzIGl0
cyBvd24gdmVydGljZXMuIFRoaXMgbWVhbnMgZWFjaCB0cmlhbmdsZSBjYW4gYmUgbW92ZWQgaW5k
ZXBlbmRlbnRseSBhbmQgYSB2ZWMzCi0gICAgICAgIC8vIGF0dHJpYnV0ZSBpcyBwYXNzZWQsIHNv
IHRoYXQgZWFjaCB2ZXJ0ZXggY2FuIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCi0gICAgICAgIGlm
IChtX21lc2hUeXBlID09IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6QVRUQUNIRUQpCi0gICAgICAg
ICAgICBnZW5lcmF0ZUF0dGFjaGVkTWVzaCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBn
ZW5lcmF0ZURldGFjaGVkTWVzaCgpOwotICAgICAgICAKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAg
IGlmIChzX2R1bXBDdXN0b21GaWx0ZXJNZXNoQnVmZmVycykKLSAgICAgICAgICAgIGR1bXBCdWZm
ZXJzKCk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNl
cygpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGljZXM7IH0KLSAgICBjb25zdCBWZWN0b3I8dWludDE2
X3Q+JiBpbmRpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9pbmRpY2VzOyB9Ci0KLSAgICBjb25zdCBJ
bnRTaXplJiBwb2ludHMoKSBjb25zdCB7IHJldHVybiBtX3BvaW50czsgfQotICAgIHVuc2lnbmVk
IHBvaW50c0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wb2ludHMud2lkdGgoKSAqIG1fcG9pbnRz
LmhlaWdodCgpOyB9Ci0gICAgCi0gICAgY29uc3QgSW50U2l6ZSYgdGlsZXMoKSBjb25zdCB7IHJl
dHVybiBtX3RpbGVzOyB9Ci0gICAgdW5zaWduZWQgdGlsZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGlsZXMud2lkdGgoKSAqIG1fdGlsZXMuaGVpZ2h0KCk7IH0KLSAgICAKLSAgICB1bnNpZ25l
ZCBpbmRpY2VzQ291bnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgdHJp
YW5nbGVzUGVyVGlsZSA9IDI7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGluZGljZXNQZXJUcmlh
bmdsZSA9IDM7Ci0gICAgICAgIHJldHVybiB0aWxlc0NvdW50KCkgKiB0cmlhbmdsZXNQZXJUaWxl
ICogaW5kaWNlc1BlclRyaWFuZ2xlOwotICAgIH0KLSAgICAKLSAgICB1bnNpZ25lZCBmbG9hdHNQ
ZXJWZXJ0ZXgoKSBjb25zdAotICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEF0
dGFjaGVkTWVzaFZlcnRleFNpemUgPSA0ICsgLy8gdmVjNCBhX3Bvc2l0aW9uCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiArIC8vIHZlYzIg
YV90ZXhDb29yZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDI7IC8vIHZlYzIgYV9tZXNoQ29vcmQKLQotICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgRGV0YWNoZWRNZXNoVmVydGV4U2l6ZSA9IEF0dGFjaGVkTWVzaFZlcnRleFNpemUg
KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDM7IC8vIHZlYzMgYV90cmlhbmdsZUNvb3JkCi0KLSAgICAgICAgcmV0dXJuIG1fbWVzaFR5cGUg
PT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCA/IEF0dGFjaGVkTWVzaFZlcnRleFNp
emUgOiBEZXRhY2hlZE1lc2hWZXJ0ZXhTaXplOwotICAgIH0KLSAgICAKLSAgICB1bnNpZ25lZCB2
ZXJ0aWNlc0NvdW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX21lc2hUeXBlID09
IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6QVRUQUNIRUQgPyBwb2ludHNDb3VudCgpIDogaW5kaWNl
c0NvdW50KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHR5cGVkZWYgdm9pZCAoTWVzaEdlbmVy
YXRvcjo6KkFkZFRyaWFuZ2xlVmVydGV4RnVuY3Rpb24pKGludCBxdWFkWCwgaW50IHF1YWRZLCBp
bnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpOwotICAgIAotICAgIHRl
bXBsYXRlIDxBZGRUcmlhbmdsZVZlcnRleEZ1bmN0aW9uIGFkZFRyaWFuZ2xlVmVydGV4PgotICAg
IHZvaWQgYWRkVGlsZShpbnQgcXVhZFgsIGludCBxdWFkWSkKLSAgICB7Ci0gICAgICAgICgoKnRo
aXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDAsIDAsIDEpOwotICAgICAg
ICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAxLCAwLCAyKTsK
LSAgICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMSwg
MSwgMyk7Ci0gICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVh
ZFksIDAsIDAsIDQpOwotICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVh
ZFgsIHF1YWRZLCAxLCAxLCA1KTsKLSAgICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRl
eCkpKHF1YWRYLCBxdWFkWSwgMCwgMSwgNik7Ci0gICAgfQotICAgIAotICAgIHZvaWQgYWRkQXR0
YWNoZWRNZXNoSW5kZXgoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0
cmlhbmdsZVksIGludCB0cmlhbmdsZSkKLSAgICB7Ci0gICAgICAgIFVOVVNFRF9QQVJBTSh0cmlh
bmdsZSk7Ci0gICAgICAgIG1faW5kaWNlcy5hcHBlbmQoKHF1YWRZICsgdHJpYW5nbGVZKSAqIG1f
cG9pbnRzLndpZHRoKCkgKyAocXVhZFggKyB0cmlhbmdsZVgpKTsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBnZW5lcmF0ZUF0dGFjaGVkTWVzaCgpCi0gICAgewotICAgICAgICBmb3IgKGludCBqID0g
MDsgaiA8IG1fcG9pbnRzLmhlaWdodCgpOyArK2opIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbV9wb2ludHMud2lkdGgoKTsgKytpKQotICAgICAgICAgICAgICAgIGFkZEF0dGFj
aGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMoaSwgaik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV90aWxlcy5oZWlnaHQoKTsgKytqKSB7Ci0gICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdGlsZXMud2lkdGgoKTsgKytpKQotICAgICAgICAg
ICAgICAgIGFkZFRpbGU8Jk1lc2hHZW5lcmF0b3I6OmFkZEF0dGFjaGVkTWVzaEluZGV4PihpLCBq
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICB2b2lkIGFkZERldGFjaGVkTWVzaFZlcnRl
eEFuZEluZGV4KGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5n
bGVZLCBpbnQgdHJpYW5nbGUpCi0gICAgewotICAgICAgICBhZGREZXRhY2hlZE1lc2hWZXJ0ZXhB
dHRyaWJ1dGVzKHF1YWRYLCBxdWFkWSwgdHJpYW5nbGVYLCB0cmlhbmdsZVksIHRyaWFuZ2xlKTsK
LSAgICAgICAgbV9pbmRpY2VzLmFwcGVuZChtX2luZGljZXMuc2l6ZSgpKTsKLSAgICB9Ci0gICAg
Ci0gICAgdm9pZCBnZW5lcmF0ZURldGFjaGVkTWVzaCgpCi0gICAgewotICAgICAgICBmb3IgKGlu
dCBqID0gMDsgaiA8IG1fdGlsZXMuaGVpZ2h0KCk7ICsraikgewotICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBtX3RpbGVzLndpZHRoKCk7ICsraSkKLSAgICAgICAgICAgICAgICBhZGRU
aWxlPCZNZXNoR2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleD4oaSwgaik7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgdm9pZCBhZGRQb3NpdGlvbkF0dHJpYnV0ZShp
bnQgcXVhZFgsIGludCBxdWFkWSkKLSAgICB7Ci0gICAgICAgIC8vIHZlYzQgYV9wb3NpdGlvbgot
ICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5QaXhlbHMud2lkdGgoKSAqIHF1
YWRYIC0gMC41ZiArIG1fbWVzaEJveC54KCkpOwotICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZCht
X3RpbGVTaXplSW5QaXhlbHMuaGVpZ2h0KCkgKiBxdWFkWSAtIDAuNWYgKyBtX21lc2hCb3gueSgp
KTsKLSAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQoMC4wZik7IC8vIHoKLSAgICAgICAgbV92ZXJ0
aWNlcy5hcHBlbmQoMS4wZik7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRUZXhDb29yZEF0dHJpYnV0
ZShpbnQgcXVhZFgsIGludCBxdWFkWSkKLSAgICB7Ci0gICAgICAgIC8vIHZlYzIgYV90ZXhDb29y
ZAotICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5QaXhlbHMud2lkdGgoKSAq
IHF1YWRYICsgbV9tZXNoQm94LngoKSk7Ci0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGls
ZVNpemVJblBpeGVscy5oZWlnaHQoKSAqIHF1YWRZICsgbV9tZXNoQm94LnkoKSk7Ci0gICAgfQot
Ci0gICAgdm9pZCBhZGRNZXNoQ29vcmRBdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCi0g
ICAgewotICAgICAgICAvLyB2ZWMyIGFfbWVzaENvb3JkCi0gICAgICAgIG1fdmVydGljZXMuYXBw
ZW5kKG1fdGlsZVNpemVJbkRldmljZVNwYWNlLndpZHRoKCkgKiBxdWFkWCk7Ci0gICAgICAgIG1f
dmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJbkRldmljZVNwYWNlLmhlaWdodCgpICogcXVhZFkp
OwotICAgIH0KLQotICAgIHZvaWQgYWRkVHJpYW5nbGVDb29yZEF0dHJpYnV0ZShpbnQgcXVhZFgs
IGludCBxdWFkWSwgaW50IHRyaWFuZ2xlKQotICAgIHsKLSAgICAgICAgLy8gdmVjMyBhX3RyaWFu
Z2xlQ29vcmQKLSAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQocXVhZFgpOwotICAgICAgICBtX3Zl
cnRpY2VzLmFwcGVuZChxdWFkWSk7Ci0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKHRyaWFuZ2xl
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZEF0dGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMoaW50
IHF1YWRYLCBpbnQgcXVhZFkpCi0gICAgewotICAgICAgICBhZGRQb3NpdGlvbkF0dHJpYnV0ZShx
dWFkWCwgcXVhZFkpOwotICAgICAgICBhZGRUZXhDb29yZEF0dHJpYnV0ZShxdWFkWCwgcXVhZFkp
OwotICAgICAgICBhZGRNZXNoQ29vcmRBdHRyaWJ1dGUocXVhZFgsIHF1YWRZKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGFkZERldGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMoaW50IHF1YWRYLCBpbnQg
cXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSkKLSAgICB7
Ci0gICAgICAgIGFkZEF0dGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMocXVhZFggKyB0cmlhbmds
ZVgsIHF1YWRZICsgdHJpYW5nbGVZKTsKLSAgICAgICAgYWRkVHJpYW5nbGVDb29yZEF0dHJpYnV0
ZShxdWFkWCwgcXVhZFksIHRyaWFuZ2xlKTsKLSAgICB9Ci0gICAgCi0jaWZuZGVmIE5ERUJVRwot
ICAgIHZvaWQgZHVtcEJ1ZmZlcnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcHJpbnRmKCJNZXNo
IGJ1ZmZlcnM6IFBvaW50cy53aWR0aCgpOiAlZCwgUG9pbnRzLmhlaWdodCgpOiAlZCBtZXNoQm94
OiAlZiwgJWYsICVmLCAlZiwgdHlwZTogJXNcbiIsIAotICAgICAgICAgICAgICAgbV9wb2ludHMu
d2lkdGgoKSwgbV9wb2ludHMuaGVpZ2h0KCksIG1fbWVzaEJveC54KCksIG1fbWVzaEJveC55KCks
IG1fbWVzaEJveC53aWR0aCgpLCBtX21lc2hCb3guaGVpZ2h0KCksIAotICAgICAgICAgICAgICAg
KG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCkgPyAiQXR0YWNo
ZWQiIDogIkRldGFjaGVkIik7Ci0gICAgICAgIHByaW50ZigiLS0tVmVydGV4OlxuXHQiKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmVydGljZXMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgICAgIHByaW50ZigiJWYgIiwgbV92ZXJ0aWNlcy5hdChpKSk7Ci0gICAgICAgICAg
ICBpZiAoISgoaSArIDEpICUgZmxvYXRzUGVyVmVydGV4KCkpKQotICAgICAgICAgICAgICAgIHBy
aW50ZigiXG5cdCIpOwotICAgICAgICB9Ci0gICAgICAgIHByaW50ZigiXG4tLS1JbmRpY2VzOiAi
KTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW5kaWNlcy5zaXplKCk7ICsr
aSkKLSAgICAgICAgICAgIHByaW50ZigiJWQgIiwgbV9pbmRpY2VzLmF0KGkpKTsKLSAgICAgICAg
cHJpbnRmKCJcbiIpOwotICAgIH0KLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFZlY3RvcjxmbG9h
dD4gbV92ZXJ0aWNlczsKLSAgICBWZWN0b3I8dWludDE2X3Q+IG1faW5kaWNlczsKLSAgICAKLSAg
ICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1fbWVzaFR5cGU7Ci0gICAgSW50U2l6
ZSBtX3BvaW50czsKLSAgICBJbnRTaXplIG1fdGlsZXM7Ci0gICAgRmxvYXRTaXplIG1fdGlsZVNp
emVJblBpeGVsczsKLSAgICBGbG9hdFNpemUgbV90aWxlU2l6ZUluRGV2aWNlU3BhY2U7Ci0gICAg
RmxvYXRSZWN0IG1fbWVzaEJveDsKLX07CiAKLUN1c3RvbUZpbHRlck1lc2g6OkN1c3RvbUZpbHRl
ck1lc2goR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIGNvbHVtbnMsIHVuc2ln
bmVkIHJvd3MsIAorQ3VzdG9tRmlsdGVyTWVzaDo6Q3VzdG9tRmlsdGVyTWVzaChHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgY29sdW1ucywgdW5zaWduZWQgcm93cywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBtZXNoQm94LCBD
dXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQogICAgIDogbV9jb250ZXh0
KGNvbnRleHQpCiAgICAgLCBtX3ZlcnRpY2VzQnVmZmVyT2JqZWN0KDApCkBAIC0yNDEsNyArNDQs
NyBAQCBDdXN0b21GaWx0ZXJNZXNoOjpDdXN0b21GaWx0ZXJNZXNoKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCB1bnNpZ25lZCBjb2x1bW5zLAogICAgICwgbV9tZXNoQm94KG1lc2hCb3gpCiAg
ICAgLCBtX21lc2hUeXBlKG1lc2hUeXBlKQogewotICAgIE1lc2hHZW5lcmF0b3IgZ2VuZXJhdG9y
KGNvbHVtbnMsIHJvd3MsIG1lc2hCb3gsIG1lc2hUeXBlKTsKKyAgICBDdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yIGdlbmVyYXRvcihjb2x1bW5zLCByb3dzLCBtZXNoQm94LCBtZXNoVHlwZSk7CiAg
ICAgbV9pbmRpY2VzQ291bnQgPSBnZW5lcmF0b3IuaW5kaWNlc0NvdW50KCk7CiAgICAgbV9ieXRl
c1BlclZlcnRleCA9IGdlbmVyYXRvci5mbG9hdHNQZXJWZXJ0ZXgoKSAqIHNpemVvZihmbG9hdCk7
ICAgIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZDlkNGQxYjIwZDMyNWI1YTlkZGQxYzlkM2Y1YmRmODdmNzFjNjYwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJNZXNoR2VuZXJhdG9yLmNwcApAQCAtMCwwICsxLDE3MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisg
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19T
SEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJQ1MpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZm5kZWYgTkRFQlVHCisvLyBV
c2UgImNhbGwgJ1dlYkNvcmU6OnNfZHVtcEN1c3RvbUZpbHRlck1lc2hCdWZmZXJzJyA9IDEiIGlu
IEdEQiB0byBhY3RpdmF0ZSBwcmludGluZyBvZiB0aGUgbWVzaCBidWZmZXJzLgorc3RhdGljIGJv
b2wgc19kdW1wQ3VzdG9tRmlsdGVyTWVzaEJ1ZmZlcnMgPSBmYWxzZTsKKyNlbmRpZgorCitDdXN0
b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yKHVuc2lnbmVk
IGNvbHVtbnMsIHVuc2lnbmVkIHJvd3MsIGNvbnN0IEZsb2F0UmVjdCYgbWVzaEJveCwgQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSkKKyAgICA6IG1fbWVzaFR5cGUobWVz
aFR5cGUpCisgICAgLCBtX3BvaW50cyhjb2x1bW5zICsgMSwgcm93cyArIDEpCisgICAgLCBtX3Rp
bGVzKGNvbHVtbnMsIHJvd3MpCisgICAgLCBtX3RpbGVTaXplSW5QaXhlbHMobWVzaEJveC53aWR0
aCgpIC8gbV90aWxlcy53aWR0aCgpLCBtZXNoQm94LmhlaWdodCgpIC8gbV90aWxlcy5oZWlnaHQo
KSkKKyAgICAsIG1fdGlsZVNpemVJbkRldmljZVNwYWNlKDEuMGYgLyBtX3RpbGVzLndpZHRoKCks
IDEuMGYgLyBtX3RpbGVzLmhlaWdodCgpKQorICAgICwgbV9tZXNoQm94KG1lc2hCb3gpCit7Cisg
ICAgLy8gQnVpbGQgdGhlIHR3byBidWZmZXJzIG5lZWRlZCB0byBkcmF3IHRyaWFuZ2xlczoKKyAg
ICAvLyAqIG1fdmVydGljZXMgaGFzIGEgbnVtYmVyIG9mIGZsb2F0IGF0dHJpYnV0ZXMgdGhhdCB3
aWxsIGJlIHBhc3NlZCB0byB0aGUgdmVydGV4IHNoYWRlcgorICAgIC8vIGZvciBlYWNoIGNvbXB1
dGVkIHZlcnRleC4gVGhpcyBudW1iZXIgaXMgY2FsY3VsYXRlZCBpbiBmbG9hdHNQZXJWZXJ0ZXgo
KSBiYXNlZCBvbiB0aGUgbWVzaFR5cGUuCisgICAgLy8gKiBtX2luZGljZXMgaXMgYSBidWZmZXIg
dGhhdCB3aWxsIGhhdmUgMyBpbmRpY2VzIHBlciB0cmlhbmdsZS4gRWFjaCBpbmRleCB3aWxsIHBv
aW50IGluc2lkZQorICAgIC8vIHRoZSBtX3ZlcnRpY2VzIGJ1ZmZlci4KKyAgICBtX3ZlcnRpY2Vz
LnJlc2VydmVDYXBhY2l0eSh2ZXJ0aWNlc0NvdW50KCkgKiBmbG9hdHNQZXJWZXJ0ZXgoKSk7Cisg
ICAgbV9pbmRpY2VzLnJlc2VydmVDYXBhY2l0eShpbmRpY2VzQ291bnQoKSk7CisKKyAgICAvLyBC
YXNlZCBvbiB0aGUgbWVzaFR5cGUgdGhlcmUgY2FuIGJlIHR3byB0eXBlcyBvZiBtZXNoZXMuCisg
ICAgLy8gKiBhdHRhY2hlZDogZWFjaCB0cmlhbmdsZSB1c2VzIHZlcnRpY2VzIGZyb20gdGhlIG5l
aWdoYm9yIHRyaWFuZ2xlcy4gVGhpcyBpcyB1c2VmdWwgdG8gc2F2ZSBzb21lIEdQVSBtZW1vcnkK
KyAgICAvLyB3aGVuIHRoZXJlJ3Mgbm8gbmVlZCB0byBleHBsb2RlIHRoZSB0aWxlcy4KKyAgICAv
LyAqIGRldGFjaGVkOiBlYWNoIHRyaWFuZ2xlIGhhcyBpdHMgb3duIHZlcnRpY2VzLiBUaGlzIG1l
YW5zIGVhY2ggdHJpYW5nbGUgY2FuIGJlIG1vdmVkIGluZGVwZW5kZW50bHkgYW5kIGEgdmVjMwor
ICAgIC8vIGF0dHJpYnV0ZSBpcyBwYXNzZWQsIHNvIHRoYXQgZWFjaCB2ZXJ0ZXggY2FuIGJlIHVu
aXF1ZWx5IGlkZW50aWZpZWQuCisgICAgaWYgKG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpBVFRBQ0hFRCkKKyAgICAgICAgZ2VuZXJhdGVBdHRhY2hlZE1lc2goKTsKKyAgICBl
bHNlCisgICAgICAgIGdlbmVyYXRlRGV0YWNoZWRNZXNoKCk7CisKKyNpZm5kZWYgTkRFQlVHCisg
ICAgaWYgKHNfZHVtcEN1c3RvbUZpbHRlck1lc2hCdWZmZXJzKQorICAgICAgICBkdW1wQnVmZmVy
cygpOworI2VuZGlmCit9CisKK3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0
YWNoZWRNZXNoSW5kZXgoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0
cmlhbmdsZVksIGludCB0cmlhbmdsZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odHJpYW5nbGUpOwor
ICAgIG1faW5kaWNlcy5hcHBlbmQoKHF1YWRZICsgdHJpYW5nbGVZKSAqIG1fcG9pbnRzLndpZHRo
KCkgKyAocXVhZFggKyB0cmlhbmdsZVgpKTsKK30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNoR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUF0dGFjaGVkTWVzaCgpCit7CisgICAgZm9yIChpbnQgaiA9IDA7IGog
PCBtX3BvaW50cy5oZWlnaHQoKTsgKytqKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bV9wb2ludHMud2lkdGgoKTsgKytpKQorICAgICAgICAgICAgYWRkQXR0YWNoZWRNZXNoVmVydGV4
QXR0cmlidXRlcyhpLCBqKTsKKyAgICB9CisKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IG1fdGls
ZXMuaGVpZ2h0KCk7ICsraikgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdGlsZXMu
d2lkdGgoKTsgKytpKQorICAgICAgICAgICAgYWRkVGlsZTwmQ3VzdG9tRmlsdGVyTWVzaEdlbmVy
YXRvcjo6YWRkQXR0YWNoZWRNZXNoSW5kZXg+KGksIGopOworICAgIH0KK30KKwordm9pZCBDdXN0
b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleChpbnQg
cXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFu
Z2xlKQoreworICAgIGFkZERldGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMocXVhZFgsIHF1YWRZ
LCB0cmlhbmdsZVgsIHRyaWFuZ2xlWSwgdHJpYW5nbGUpOworICAgIG1faW5kaWNlcy5hcHBlbmQo
bV9pbmRpY2VzLnNpemUoKSk7Cit9CisKK3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6
Z2VuZXJhdGVEZXRhY2hlZE1lc2goKQoreworICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV90aWxl
cy5oZWlnaHQoKTsgKytqKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV90aWxlcy53
aWR0aCgpOyArK2kpCisgICAgICAgICAgICBhZGRUaWxlPCZDdXN0b21GaWx0ZXJNZXNoR2VuZXJh
dG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleD4oaSwgaik7CisgICAgfQorfQorCit2
b2lkIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZFBvc2l0aW9uQXR0cmlidXRlKGludCBx
dWFkWCwgaW50IHF1YWRZKQoreworICAgIC8vIHZlYzQgYV9wb3NpdGlvbgorICAgIG1fdmVydGlj
ZXMuYXBwZW5kKG1fdGlsZVNpemVJblBpeGVscy53aWR0aCgpICogcXVhZFggLSAwLjVmICsgbV9t
ZXNoQm94LngoKSk7CisgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluUGl4ZWxzLmhl
aWdodCgpICogcXVhZFkgLSAwLjVmICsgbV9tZXNoQm94LnkoKSk7CisgICAgbV92ZXJ0aWNlcy5h
cHBlbmQoMC4wZik7IC8vIHoKKyAgICBtX3ZlcnRpY2VzLmFwcGVuZCgxLjBmKTsKK30KKwordm9p
ZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGRUZXhDb29yZEF0dHJpYnV0ZShpbnQgcXVh
ZFgsIGludCBxdWFkWSkKK3sKKyAgICAvLyB2ZWMyIGFfdGV4Q29vcmQKKyAgICBtX3ZlcnRpY2Vz
LmFwcGVuZChtX3RpbGVTaXplSW5QaXhlbHMud2lkdGgoKSAqIHF1YWRYICsgbV9tZXNoQm94Lngo
KSk7CisgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluUGl4ZWxzLmhlaWdodCgpICog
cXVhZFkgKyBtX21lc2hCb3gueSgpKTsKK30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJh
dG9yOjphZGRNZXNoQ29vcmRBdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCit7CisgICAg
Ly8gdmVjMiBhX21lc2hDb29yZAorICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJbkRl
dmljZVNwYWNlLndpZHRoKCkgKiBxdWFkWCk7CisgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxl
U2l6ZUluRGV2aWNlU3BhY2UuaGVpZ2h0KCkgKiBxdWFkWSk7Cit9CisKK3ZvaWQgQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvcjo6YWRkVHJpYW5nbGVDb29yZEF0dHJpYnV0ZShpbnQgcXVhZFgsIGlu
dCBxdWFkWSwgaW50IHRyaWFuZ2xlKQoreworICAgIC8vIHZlYzMgYV90cmlhbmdsZUNvb3JkCisg
ICAgbV92ZXJ0aWNlcy5hcHBlbmQocXVhZFgpOworICAgIG1fdmVydGljZXMuYXBwZW5kKHF1YWRZ
KTsKKyAgICBtX3ZlcnRpY2VzLmFwcGVuZCh0cmlhbmdsZSk7Cit9CisKK3ZvaWQgQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhpbnQgcXVh
ZFgsIGludCBxdWFkWSkKK3sKKyAgICBhZGRQb3NpdGlvbkF0dHJpYnV0ZShxdWFkWCwgcXVhZFkp
OworICAgIGFkZFRleENvb3JkQXR0cmlidXRlKHF1YWRYLCBxdWFkWSk7CisgICAgYWRkTWVzaENv
b3JkQXR0cmlidXRlKHF1YWRYLCBxdWFkWSk7Cit9CisKK3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvcjo6YWRkRGV0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhpbnQgcXVhZFgsIGludCBx
dWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xlKQoreworICAg
IGFkZEF0dGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMocXVhZFggKyB0cmlhbmdsZVgsIHF1YWRZ
ICsgdHJpYW5nbGVZKTsKKyAgICBhZGRUcmlhbmdsZUNvb3JkQXR0cmlidXRlKHF1YWRYLCBxdWFk
WSwgdHJpYW5nbGUpOworfQorCisjaWZuZGVmIE5ERUJVRwordm9pZCBDdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yOjpkdW1wQnVmZmVycygpIGNvbnN0Cit7CisgICAgcHJpbnRmKCJNZXNoIGJ1ZmZl
cnM6IFBvaW50cy53aWR0aCgpOiAlZCwgUG9pbnRzLmhlaWdodCgpOiAlZCBtZXNoQm94OiAlZiwg
JWYsICVmLCAlZiwgdHlwZTogJXNcbiIsCisgICAgICAgICAgIG1fcG9pbnRzLndpZHRoKCksIG1f
cG9pbnRzLmhlaWdodCgpLCBtX21lc2hCb3gueCgpLCBtX21lc2hCb3gueSgpLCBtX21lc2hCb3gu
d2lkdGgoKSwgbV9tZXNoQm94LmhlaWdodCgpLAorICAgICAgICAgICAobV9tZXNoVHlwZSA9PSBD
dXN0b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVEKSA/ICJBdHRhY2hlZCIgOiAiRGV0YWNoZWQi
KTsKKyAgICBwcmludGYoIi0tLVZlcnRleDpcblx0Iik7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fdmVydGljZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcHJpbnRmKCIlZiAiLCBt
X3ZlcnRpY2VzLmF0KGkpKTsKKyAgICAgICAgaWYgKCEoKGkgKyAxKSAlIGZsb2F0c1BlclZlcnRl
eCgpKSkKKyAgICAgICAgICAgIHByaW50ZigiXG5cdCIpOworICAgIH0KKyAgICBwcmludGYoIlxu
LS0tSW5kaWNlczogIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW5kaWNlcy5z
aXplKCk7ICsraSkKKyAgICAgICAgcHJpbnRmKCIlZCAiLCBtX2luZGljZXMuYXQoaSkpOworICAg
IHByaW50ZigiXG4iKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIFVTRSgzRF9HUkFQSElDUykKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJNZXNoR2VuZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWY3NTYyMWI0NjVk
MTYxZTc1ZGNkZTZkMjE5ZTFhOTZiNjliZGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9y
LmgKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcl9oCisjZGVmaW5lIEN1c3RvbUZpbHRlck1l
c2hHZW5lcmF0b3JfaAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JBUEhJ
Q1MpCisKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yIHsKK3B1YmxpYzoKKyAgICAvLyBMaW5lcyBhbmQgY29sdW1ucyBhcmUgdGhlIHZh
bHVlcyBwYXNzZWQgaW4gQ1NTLiBUaGUgcmVzdWx0IGlzIHZlcnRleCBtZXNoIHRoYXQgaGFzICdy
b3dzJyBudW1iZXJzIG9mIHJvd3MKKyAgICAvLyBhbmQgJ2NvbHVtbnMnIG51bWJlciBvZiBjb2x1
bW5zIHdpdGggYSB0b3RhbCBvZiAncm93cyArIDEnICogJ2NvbHVtbnMgKyAxJyB2ZXJ0aWNlcy4K
KyAgICAvLyBNZXNoQm94IGlzIHRoZSBmaWx0ZXJlZCBhcmVhIGNhbGN1bGF0ZWQgZGVmaW5lZCB1
c2luZyB0aGUgYm9yZGVyLWJveCwgcGFkZGluZy1ib3gsIGNvbnRlbnQtYm94IG9yIGZpbHRlci1i
b3gKKyAgICAvLyBhdHRyaWJ1dGVzLiBBIHZhbHVlIG9mICgwLCAwLCAxLCAxKSB3aWxsIGNvdmVy
IHRoZSBlbnRpcmUgb3V0cHV0IHN1cmZhY2UuCisgICAgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
cih1bnNpZ25lZCBjb2x1bW5zLCB1bnNpZ25lZCByb3dzLCBjb25zdCBGbG9hdFJlY3QmIG1lc2hC
b3gsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUpOworCisgICAgY29uc3QgVmVjdG9y
PGZsb2F0PiYgdmVydGljZXMoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2VzOyB9CisgICAgY29u
c3QgVmVjdG9yPHVpbnQxNl90PiYgaW5kaWNlcygpIGNvbnN0IHsgcmV0dXJuIG1faW5kaWNlczsg
fQorCisgICAgY29uc3QgSW50U2l6ZSYgcG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludHM7
IH0KKyAgICB1bnNpZ25lZCBwb2ludHNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzLndp
ZHRoKCkgKiBtX3BvaW50cy5oZWlnaHQoKTsgfQorCisgICAgY29uc3QgSW50U2l6ZSYgdGlsZXMo
KSBjb25zdCB7IHJldHVybiBtX3RpbGVzOyB9CisgICAgdW5zaWduZWQgdGlsZXNDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGlsZXMud2lkdGgoKSAqIG1fdGlsZXMuaGVpZ2h0KCk7IH0KKworICAg
IHVuc2lnbmVkIGluZGljZXNDb3VudCgpIGNvbnN0CisgICAgeworICAgICAgICBjb25zdCB1bnNp
Z25lZCB0cmlhbmdsZXNQZXJUaWxlID0gMjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW5kaWNl
c1BlclRyaWFuZ2xlID0gMzsKKyAgICAgICAgcmV0dXJuIHRpbGVzQ291bnQoKSAqIHRyaWFuZ2xl
c1BlclRpbGUgKiBpbmRpY2VzUGVyVHJpYW5nbGU7CisgICAgfQorCisgICAgdW5zaWduZWQgZmxv
YXRzUGVyVmVydGV4KCkgY29uc3QKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBBdHRhY2hlZE1lc2hWZXJ0ZXhTaXplID0gNCArIC8vIHZlYzQgYV9wb3NpdGlvbgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKyAvLyB2
ZWMyIGFfdGV4Q29vcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyOyAvLyB2ZWMyIGFfbWVzaENvb3JkCisKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIERldGFjaGVkTWVzaFZlcnRleFNpemUgPSBBdHRhY2hlZE1lc2hWZXJ0ZXhT
aXplICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzOyAvLyB2ZWMzIGFfdHJpYW5nbGVDb29yZAorCisgICAgICAgIHJldHVybiBtX21lc2hU
eXBlID09IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6QVRUQUNIRUQgPyBBdHRhY2hlZE1lc2hWZXJ0
ZXhTaXplIDogRGV0YWNoZWRNZXNoVmVydGV4U2l6ZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCB2
ZXJ0aWNlc0NvdW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX21lc2hUeXBlID09
IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6QVRUQUNIRUQgPyBwb2ludHNDb3VudCgpIDogaW5kaWNl
c0NvdW50KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHR5cGVkZWYgdm9pZCAoQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvcjo6KkFkZFRyaWFuZ2xlVmVydGV4RnVuY3Rpb24pKGludCBxdWFkWCwg
aW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpOwor
CisgICAgdGVtcGxhdGUgPEFkZFRyaWFuZ2xlVmVydGV4RnVuY3Rpb24gYWRkVHJpYW5nbGVWZXJ0
ZXg+CisgICAgdm9pZCBhZGRUaWxlKGludCBxdWFkWCwgaW50IHF1YWRZKQorICAgIHsKKyAgICAg
ICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMCwgMCwgMSk7
CisgICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDEs
IDAsIDIpOworICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1
YWRZLCAxLCAxLCAzKTsKKyAgICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1
YWRYLCBxdWFkWSwgMCwgMCwgNCk7CisgICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0
ZXgpKShxdWFkWCwgcXVhZFksIDEsIDEsIDUpOworICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFu
Z2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAwLCAxLCA2KTsKKyAgICB9CisKKyAgICB2b2lkIGFk
ZEF0dGFjaGVkTWVzaEluZGV4KGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBp
bnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpOworCisgICAgdm9pZCBnZW5lcmF0ZUF0dGFjaGVk
TWVzaCgpOworCisgICAgdm9pZCBhZGREZXRhY2hlZE1lc2hWZXJ0ZXhBbmRJbmRleChpbnQgcXVh
ZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xl
KTsKKworICAgIHZvaWQgZ2VuZXJhdGVEZXRhY2hlZE1lc2goKTsKKyAgICB2b2lkIGFkZFBvc2l0
aW9uQXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZKTsKKyAgICB2b2lkIGFkZFRleENvb3Jk
QXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZKTsKKyAgICB2b2lkIGFkZE1lc2hDb29yZEF0
dHJpYnV0ZShpbnQgcXVhZFgsIGludCBxdWFkWSk7CisgICAgdm9pZCBhZGRUcmlhbmdsZUNvb3Jk
QXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGUpOworICAgIHZvaWQg
YWRkQXR0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhpbnQgcXVhZFgsIGludCBxdWFkWSk7Cisg
ICAgdm9pZCBhZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKGludCBxdWFkWCwgaW50IHF1
YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5nbGUpOworCisjaWZu
ZGVmIE5ERUJVRworICAgIHZvaWQgZHVtcEJ1ZmZlcnMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIFZlY3RvcjxmbG9hdD4gbV92ZXJ0aWNlczsKKyAgICBWZWN0b3I8dWludDE2X3Q+
IG1faW5kaWNlczsKKworICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbV9tZXNo
VHlwZTsKKyAgICBJbnRTaXplIG1fcG9pbnRzOworICAgIEludFNpemUgbV90aWxlczsKKyAgICBG
bG9hdFNpemUgbV90aWxlU2l6ZUluUGl4ZWxzOworICAgIEZsb2F0U2l6ZSBtX3RpbGVTaXplSW5E
ZXZpY2VTcGFjZTsKKyAgICBGbG9hdFJlY3QgbV9tZXNoQm94OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKSAmJiBVU0UoM0RfR1JB
UEhJQ1MpCisKKyNlbmRpZiAvLyBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwCmluZGV4IDIxNzc4YTg4MjBj
ZWNmOWYxMmM4ZjMzMzgwNjgyNzU4MDFjOWJkZTguLjE4MDJmZTA2M2U1YWQ0MjBiY2U2ODVhNTFm
YjRlZWZmNDdjNzk1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQ
cm9ncmFtLmNwcApAQCAtNzAsNiArNzAsNyBAQCBTdHJpbmcgQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbTo6ZGVmYXVsdEZyYWdtZW50U2hhZGVyU3RyaW5nKCkKIEN1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0oQ3VzdG9tRmlsdGVyR2xv
YmFsQ29udGV4dCogZ2xvYmFsQ29udGV4dCwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8m
IHByb2dyYW1JbmZvKQogICAgIDogbV9nbG9iYWxDb250ZXh0KGdsb2JhbENvbnRleHQpCiAgICAg
LCBtX3Byb2dyYW1JbmZvKHByb2dyYW1JbmZvKQorICAgICwgbV9wbGF0Zm9ybUNvbXBpbGVkUHJv
Z3JhbSgwKQogICAgICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQogewogICAgIFN0cmluZyBvcmln
aW5hbFZlcnRleFNoYWRlciA9IHByb2dyYW1JbmZvLnZlcnRleFNoYWRlclN0cmluZygpOwpAQCAt
MTAyLDcgKzEwMyw3IEBAIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRl
clZhbGlkYXRlZFByb2dyYW0oQ3VzdG9tRmlsdGVyR2xvYmFsQ29uCiAKIFBhc3NSZWZQdHI8Q3Vz
dG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpj
b21waWxlZFByb2dyYW0oKQogewotICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQgJiYgIW1fdmFs
aWRhdGVkVmVydGV4U2hhZGVyLmlzTnVsbCgpICYmICFtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVy
LmlzTnVsbCgpKTsKKyAgICBBU1NFUlQobV9pc0luaXRpYWxpemVkICYmIG1fZ2xvYmFsQ29udGV4
dCAmJiAhbV92YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIuaXNOdWxsKCkgJiYgIW1fdmFsaWRhdGVkRnJh
Z21lbnRTaGFkZXIuaXNOdWxsKCkpOwogICAgIGlmICghbV9jb21waWxlZFByb2dyYW0pCiAgICAg
ICAgIG1fY29tcGlsZWRQcm9ncmFtID0gQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtOjpjcmVh
dGUobV9nbG9iYWxDb250ZXh0LT5jb250ZXh0KCksIG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBt
X3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyKTsKICAgICByZXR1cm4gbV9jb21waWxlZFByb2dyYW07
CkBAIC0yNjMsMTAgKzI2NCwyMyBAQCBTdHJpbmcgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bTo6Y29tcG9zaXRlRnVuY3Rpb25TdHJpbmcoQ29tcG9zaXRlT3BlcmF0b3IgYwogICAgIAogQ3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6fkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0o
KQogeworICAgIHBsYXRmb3JtRGVzdHJveSgpOworCiAgICAgaWYgKG1fZ2xvYmFsQ29udGV4dCkK
ICAgICAgICAgbV9nbG9iYWxDb250ZXh0LT5yZW1vdmVWYWxpZGF0ZWRQcm9ncmFtKHRoaXMpOwog
fQogCisjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCitQbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSog
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6cGxhdGZvcm1Db21waWxlZFByb2dyYW0oKQor
eworICAgIHJldHVybiAwOworfQorCit2b2lkIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06
OnBsYXRmb3JtRGVzdHJveSgpCit7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW0uaAppbmRleCAzYTllMGYxOWNlYzYyNDhhMWU0Mzk3ZWI3NjY4
ZTFmM2Q2YzNlYjY5Li5hZmE3ZTEyYTY5NmUzZWMzMDRiYTMyMTRmYTk1YWNlMmFmYWZhYTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaApAQCAtMzksNiAr
MzksMTYgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKKy8vIFBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtIGRlZmluZXMgYSB0eXBlIHRo
YXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBmcmFtZXdvcmsgdXNlZCB0byBpbXBsZW1lbnQgYWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgb24gYSBwYXJ0aWN1bGFyIHBsYXRmb3JtLgorI2lmIFBMQVRG
T1JNKEJMQUNLQkVSUlkpCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBMYXllckNvbXBpbGVk
UHJvZ3JhbTsKK30KK3R5cGVkZWYgV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dyYW0gUGxhdGZv
cm1Db21waWxlZFByb2dyYW07CisjZWxzZQordHlwZWRlZiB2b2lkIFBsYXRmb3JtQ29tcGlsZWRQ
cm9ncmFtOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQU5HTEVXZWJL
aXRCcmlkZ2U7CkBAIC03MSw2ICs4MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBDdXN0b21GaWx0
ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8oKSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW1JbmZv
OyB9CiAgICAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IGNvbXBpbGVk
UHJvZ3JhbSgpOwogCisgICAgUGxhdGZvcm1Db21waWxlZFByb2dyYW0qIHBsYXRmb3JtQ29tcGls
ZWRQcm9ncmFtKCk7CisKICAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5pdGlhbGl6ZWQ7IH0KIAogICAgIC8vICdkZXRhY2hGcm9tR2xvYmFsQ29udGV4dCcgaXMg
Y2FsbGVkIHdoZW4gdGhlIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQgaXMgZGVsZXRlZCwgYW5k
IHRoZXJlJ3Mgbm8gbmVlZCBmb3IgdGhlIGNhbGxiYWNrIGFueW1vcmUuIApAQCAtNzksNiArOTEs
OCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0o
Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dCosIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZv
Jik7CiAKKyAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOworCiAgICAgc3RhdGljIFN0cmluZyBk
ZWZhdWx0VmVydGV4U2hhZGVyU3RyaW5nKCk7CiAgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0RnJh
Z21lbnRTaGFkZXJTdHJpbmcoKTsKIApAQCAtOTUsNiArMTA5LDcgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlcjsKIAogICAgIFJlZlB0cjxDdXN0b21GaWx0
ZXJDb21waWxlZFByb2dyYW0+IG1fY29tcGlsZWRQcm9ncmFtOworICAgIFBsYXRmb3JtQ29tcGls
ZWRQcm9ncmFtKiBtX3BsYXRmb3JtQ29tcGlsZWRQcm9ncmFtOwogCiAgICAgYm9vbCBtX2lzSW5p
dGlhbGl6ZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9ibGFja2JlcnJ5L0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW1CbGFja0Jl
cnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYmxhY2ti
ZXJyeS9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtQmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjQ5OGVmN2NjMDgyM2ZkMjJhNjA0N2YwMjljNzI1YmM5MzFlZWQzOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYmxhY2tiZXJy
eS9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtQmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSw1
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFT
IElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyVmFs
aWRhdGVkUHJvZ3JhbS5oIgorCisjaW5jbHVkZSAiTGF5ZXJDb21waWxlZFByb2dyYW0uaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitMYXllckNvbXBpbGVkUHJvZ3JhbSogQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbTo6cGxhdGZvcm1Db21waWxlZFByb2dyYW0oKQoreworICAgIEFTU0VS
VChtX2lzSW5pdGlhbGl6ZWQgJiYgIW1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLmlzTnVsbCgpICYm
ICFtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLmlzTnVsbCgpKTsKKworICAgIGlmICghbV9wbGF0
Zm9ybUNvbXBpbGVkUHJvZ3JhbSkKKyAgICAgICAgbV9wbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSA9
IExheWVyQ29tcGlsZWRQcm9ncmFtOjpjcmVhdGUobV92YWxpZGF0ZWRWZXJ0ZXhTaGFkZXIsIG1f
dmFsaWRhdGVkRnJhZ21lbnRTaGFkZXIpLmxlYWtSZWYoKTsKKworICAgIHJldHVybiBtX3BsYXRm
b3JtQ29tcGlsZWRQcm9ncmFtOworfQorCit2b2lkIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW06OnBsYXRmb3JtRGVzdHJveSgpCit7CisgICAgZGVyZWZJZk5vdE51bGwobV9wbGF0Zm9ybUNv
bXBpbGVkUHJvZ3JhbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShDU1NfU0hBREVSUykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162878</attachid>
            <date>2012-09-07 14:53:12 -0700</date>
            <delta_ts>2012-09-08 00:31:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94725-20120907235250.patch</filename>
            <type>text/plain</type>
            <size>43083</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDZhNTNlMzJiYWM3MTFl
ODAzODZhYzU5YzA2OTVmYzYyYTgxZWI3Ni4uMDc1NmJlNWU1NmEyM2NhNTA3YThlM2M3YjExN2Nl
YmFhMjE2MjMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA5LTA3ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQ1NTIFNoYWRlcnNdIFtC
bGFja0JlcnJ5XSBSZWZhY3RvciBDdXN0b21GaWx0ZXJNZXNoIGFuZCBDdXN0b21GaWx0ZXIqUHJv
Z3JhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3
MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXBh
cmF0ZSB0aGUgTWVzaEdlbmVyYXRvciBmcm9tIHRoZSBDdXN0b21GaWx0ZXJNZXNoIGludG8KKyAg
ICAgICAgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oL2NwcC4gVGhpcyBhbGxvd3MgdGhlIEJs
YWNrQmVycnkgcG9ydCB0bworICAgICAgICByZXVzZSB0aGUgbWVzaCBnZW5lcmF0b3IgaW4gaXRz
IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIEFsc28g
YWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGEgIlBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtIiBmcm9t
IGEKKyAgICAgICAgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSwgc28gdGhlIEJsYWNrQmVy
cnkgcG9ydCBjYW4gcmV1c2UgdGhlCisgICAgICAgIHNoYWRlciB2YWxpZGF0aW9uIGNvZGUgaW4g
aXRzIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIEl0
IHR1cm5zIG91dCB0aGUgR3JhcGhpY3NDb250ZXh0M0QgaXMgbm90IG5lZWRlZCBmb3IgQU5HTEUg
dG8gZnVuY3Rpb24sCisgICAgICAgIHNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyBhbiBBU1NFUlQgdGhh
dCByZXF1aXJlZCBhIGNvbnRleHQgYmVmb3JlCisgICAgICAgIHZhbGlkYXRpbmcgdGhlIHNoYWRl
cnMgdXNpbmcgQU5HTEUuIFRoaXMgYWxsb3dzIHRoZSBCbGFja0JlcnJ5IHBvcnQgdG8KKyAgICAg
ICAgcmV1c2UgdGhlIHZhbGlkYXRpb24gY29kZSB3aXRob3V0IHRyaWdnZXJpbmcgdGhlIGFzc2Vy
dC4gSW4gdGhlIGZ1dHVyZSwKKyAgICAgICAgdGhlIHZhbGlkYXRpb24gY29kZSBjb3VsZCBiZSBt
b3ZlZCB0byBhIHNlcGFyYXRlIGNsYXNzIHRvIG1ha2UgaXQgbW9yZQorICAgICAgICBvYnZpb3Vz
IHRoYXQgaXQgaXNuJ3QgcmVhbGx5IHJlbGF0ZWQgdG8gR3JhcGhpY3NDb250ZXh0M0QuCisKKyAg
ICAgICAgSW4gZ2VuZXJhbCwgdGhpcyByZWZhY3RvcmluZyBjYW4gYmUgdXNlZnVsIGZvciBhbnkg
cG9ydCB0aGF0IHVzZXMKKyAgICAgICAgT3BlbkdMIHRvIGltcGxlbWVudCBhY2NlbGVyYXRlZCBj
b21wb3NpdGluZy4KKworICAgICAgICBJbnNwaXJlZCBieSBhbiBvcmlnaW5hbCBwYXRjaCBieSBK
b3NodWEgTmV0dGVyZmllbGQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWNhdXNlIHRoaXMg
cGF0Y2ggaW1wbGVtZW50cyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpnZXRWYWxpZGF0ZWRQcm9ncmFt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaDo6Q3VzdG9tRmlsdGVyTWVz
aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNo
ZWRNZXNoSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
cjo6Z2VuZXJhdGVBdHRhY2hlZE1lc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
TWVzaEdlbmVyYXRvcjo6YWRkRGV0YWNoZWRNZXNoVmVydGV4QW5kSW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6Z2VuZXJhdGVEZXRhY2hlZE1lc2gp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkUG9zaXRp
b25BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
cjo6YWRkVGV4Q29vcmRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
TWVzaEdlbmVyYXRvcjo6YWRkTWVzaENvb3JkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZFRyaWFuZ2xlQ29vcmRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRN
ZXNoVmVydGV4QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmR1bXBCdWZmZXJzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6dmVy
dGljZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6aW5k
aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjpwb2lu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6cG9pbnRz
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6dGls
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6dGlsZXND
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjppbmRp
Y2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6
ZmxvYXRzUGVyVmVydGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck1lc2hHZW5l
cmF0b3I6OnZlcnRpY2VzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvcjo6YWRkVGlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0p
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Y29tcGls
ZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW06On5DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6cGxhdGZvcm1D
b21waWxlZFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbTo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9ibGFja2JlcnJ5L0N1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW1CbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnBsYXRmb3JtQ29tcGlsZWRQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06
OnBsYXRmb3JtRGVzdHJveSk6CisKIDIwMTItMDktMDcgIExlbyBZYW5nICA8bGVveWFuZ0ByaW0u
Y29tPgogCiAgICAgICAgIEFwcGNhY2hlIGZhbGxiYWNrIFVSTCBtYXRjaCBzaG91bGQgdXNlIHRo
ZSBsb25nZXN0IGNhbmRpZGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMjUy
YTZjZjlhOGM1Yjc4MjYyY2RkZmM5NDI1YTMyMjAwMWYwNTc4ZC4uNjg3ZTJlMzY0OGEyNDdiZTYy
Y2M0NmZjYTE4Y2IyMGRkMjM0NWQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC00MjUyLDYgKzQyNTIsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1l
c2guY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck1lc2guaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFy
YW1ldGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA3OGUw
MzA4ZDA1MzZjNjQ0ZDdjM2QzNmQxOWZhZGYzYzgwMWI5Njc0Li5lZGJlMmY0MzdiNjE1MGMzOWQw
Zjg1Zjc5NzRmMGRhZjM1MDc5MDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTIwNDQsNiArMjA0NCw3IEBA
IEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFs
Q29udGV4dC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1l
c2guaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2Vu
ZXJhdG9yLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVt
YmVyUGFyYW1ldGVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyQ29tcGlsZWRQcm9ncmFtLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmggXApAQCAtMzQ0Niw2ICszNDQ3LDcgQEAgY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX0ZJTFRFUlM9MSkgewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcCBcCisgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAgXAogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW0uY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRT
b3VyY2UuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTBhZWVhYjZiNmFjM2ZjYmYwZWVmNzE3OTEzZTNlNzRj
YmZiODI3Mi4uYjRkYzY1NmFjNTBhY2Q4ODQ2MGYyMjk3MzM1YTUyZWYxZmM1ZDJhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtNDkxMiw2ICs0OTEyLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJN
ZXNoLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgnLApA
QCAtNDkyNSw2ICs0OTI2LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNw
cCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5oJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZmQyYjU2MmFm
MDU1OWEzNjNlNWIxMjA4Y2ViNWI1Njg1OTFiMTZhMy4uN2UyZjBiMGI4MDEwNTJkNjNkODFjYzY3
ZTM3MmI0Y2RhM2VlZTlmOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKQEAgLTMxODg1LDYgKzMxODg1LDE0IEBACiAJCQkJCQk+CiAJCQkJCTwvRmls
ZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
ZmlsdGVyc1xDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCIKKwkJCQkJCT4KKwkJCQkJPC9G
aWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xmaWx0ZXJzXEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCIKKwkJCQkJCT4KKwkJCQkJPC9G
aWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xmaWx0ZXJzXEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oIgogCQkJCQkJPgogCQkJCQk8
L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZTRkY2Y1MDJlNzYwZjY3YzJmYzZhOWM5M2ZhNWIwYzY1NDUxYzM2OC4uODRm
Y2FkODFjMmZhZjJiYjQyM2RlMzYxYTk0ZDI4ZDRmYmFjYTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTk4Nyw2ICsxOTg3
LDggQEAKIAkJN0JEMTE3RUIxNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkQxMTdF
OTE1QjhEQjAxMDBDOTc0QTMgLyogRE9NVHJhbnNhY3Rpb25TdGVwLmNwcCAqLzsgfTsKIAkJN0JE
MTE3RUMxNUI4REIwMTAwQzk3NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JEMTE3RUExNUI4REIwMTAwQzk3
NEEzIC8qIERPTVRyYW5zYWN0aW9uU3RlcC5oICovOyB9OwogCQk3QzUyMkQ0QjE1QjQ3N0U4MDA5
QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUyMkQ0OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9y
T3ZlcmxheS5jcHAgKi87IH07CisJCTdFMTJFOTBGMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21G
aWx0ZXJNZXNoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5oICovOyB9OworCQk3RTEyRTkxMDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHAgKi87IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVBy
aW9yaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFMzdFRjJFMTMzOTIwODgwMEIy
OTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMzdFRjJEMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJyZXNv
dXJjZUxvYWRlckNGLmNwcCAqLzsgfTsKIAkJN0U5OUFGNTEwQjEzODQ2NDY4RkIwMUE1IC8qIFdp
bmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9j
dXNBbGxvd2VkSW5kaWNhdG9yLmNwcCAqLzsgfTsKQEAgLTkxOTIsNiArOTE5NCw4IEBACiAJCTdD
NTIyRDQ5MTVCNDc3RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvck92ZXJsYXkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzUyMkQ0QTE1QjQ3OEIyMDA5QjdDOTUgLyogSW5zcGVj
dG9yT3ZlcmxheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JP
dmVybGF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNjAxMjgwNjAwNzhCQjcw
RTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0UxMkU5MEQxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFMTJFOTBFMTVGQTVEM0EwMDVFNDEyNiAvKiBD
dXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwOyBwYXRoID0gZmlsdGVycy9D
dXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVyZ2VQcmlvcml0eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3RTM3RUYyRDEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2Fk
ZXJDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdWJyZXNvdXJj
ZUxvYWRlckNGLmNwcDsgcGF0aCA9IGNmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93
Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODE1MCw2ICsxODE1NCw4IEBACiAJCUE3NUU4QjdGMEUxREUyQjAwMDdG
MjQ4MSAvKiBmaWx0ZXJzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQk3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVy
YXRvci5oICovLAorCQkJCTdFMTJFOTBFMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yLmNwcCAqLywKIAkJCQk1MDlFQzEwODE1RTg0OENBMDBFODI1ODEgLyogQ3Vz
dG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmggKi8sCiAJCQkJNDlFQ0VCNUMxNDk5NzkwRDAw
Q0REM0E0IC8qIGFybSAqLywKIAkJCQk1MEQ0MDYwRjE0N0Q0OURFMDBEMzBCQjUgLyogQ3VzdG9t
RmlsdGVyQ29tcGlsZWRQcm9ncmFtLmNwcCAqLywKQEAgLTI1NTExLDYgKzI1NTE3LDcgQEAKIAkJ
CQk3NkYyRTJFQzE1Rjc0Q0VGMDA1RkY2NjQgLyogUmVuZGVyRGlhbG9nLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjYwNUFFRDE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTRGMzc3RkY1MTVGQTM1NkEwMEU1RDYwRCAvKiBXZWJDb3Jl
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3RTEyRTkwRjE1RkE1
RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0yODYwMyw2ICsyODYxMCw3IEBACiAJCQkJQkNEOEE1RjAxNUY1NkYyQzAwOThEMDcxIC8q
IFRleHRCcmVha0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RjJFMkVCMTVGNzRD
RUYwMDVGRjY2NCAvKiBSZW5kZXJEaWFsb2cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MDVB
RUMxNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTdFMTJFOTEwMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2Vu
ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFs
Q29udGV4dC5jcHAKaW5kZXggZTAxNDRiOTA1NmIwMTlkYWQ0MGU1YTI0YjQ5YjkwYWRhYzI1MWRk
YS4uNTgyODQ2ZTdmOTNiYzI0YzQ0ODQyY2MzNjdlZDc5YTFjNjM3YmU2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9i
YWxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwCkBAIC04Nyw5ICs4Nyw2IEBAIHZvaWQg
Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6cHJlcGFyZUNvbnRleHRJZk5lZWRlZChIb3N0V2lu
ZG93KiBob3N0V2luZG93KQogCiBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW0+IEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQ6OmdldFZhbGlkYXRlZFByb2dyYW0oY29uc3Qg
Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQogewotICAgIC8vIENoZWNrIHRo
YXQgdGhlIGNvbnRleHQgaXMgYWxyZWFkeSBwcmVwYXJlZC4KLSAgICBBU1NFUlQobV9jb250ZXh0
KTsKLQogICAgIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW1zTWFwOjppdGVyYXRvciBpdGVy
ID0gbV9wcm9ncmFtcy5maW5kKHByb2dyYW1JbmZvKTsKICAgICBpZiAoaXRlciAhPSBtX3Byb2dy
YW1zLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
TWVzaC5jcHAKaW5kZXggZTAxNGYwYTA2NDQyNjdiM2M1M2E3NzFjMzNiOTJlYzA1NDc5ZTA1OS4u
MDI3OGFiYWQwMjZiNWEwZDkxOWZjNWMyMzI0YWVmMmJmNTAwNmEwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlck1lc2guY3BwCkBAIC0zMSwyMDkgKzMxLDEyIEBACiAKICNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpICYmIFVTRSgzRF9HUkFQSElDUykKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJNZXNoLmgiCisj
aW5jbHVkZSAiQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLSNpZm5kZWYgTkRFQlVH
Ci0vLyBVc2UgImNhbGwgJ1dlYkNvcmU6OnNfZHVtcEN1c3RvbUZpbHRlck1lc2hCdWZmZXJzJyA9
IDEiIGluIEdEQiB0byBhY3RpdmF0ZSBwcmludGluZyBvZiB0aGUgbWVzaCBidWZmZXJzLgotc3Rh
dGljIGJvb2wgc19kdW1wQ3VzdG9tRmlsdGVyTWVzaEJ1ZmZlcnMgPSBmYWxzZTsKLSNlbmRpZgot
Ci1jbGFzcyBNZXNoR2VuZXJhdG9yIHsKLXB1YmxpYzoKLSAgICAvLyBMaW5lcyBhbmQgY29sdW1u
cyBhcmUgdGhlIHZhbHVlcyBwYXNzZWQgaW4gQ1NTLiBUaGUgcmVzdWx0IGlzIHZlcnRleCBtZXNo
IHRoYXQgaGFzICdyb3dzJyBudW1iZXJzIG9mIHJvd3MKLSAgICAvLyBhbmQgJ2NvbHVtbnMnIG51
bWJlciBvZiBjb2x1bW5zIHdpdGggYSB0b3RhbCBvZiAncm93cyArIDEnICogJ2NvbHVtbnMgKyAx
JyB2ZXJ0aWNlcy4KLSAgICAvLyBNZXNoQm94IGlzIHRoZSBmaWx0ZXJlZCBhcmVhIGNhbGN1bGF0
ZWQgZGVmaW5lZCB1c2luZyB0aGUgYm9yZGVyLWJveCwgcGFkZGluZy1ib3gsIGNvbnRlbnQtYm94
IG9yIGZpbHRlci1ib3ggCi0gICAgLy8gYXR0cmlidXRlcy4gQSB2YWx1ZSBvZiAoMCwgMCwgMSwg
MSkgd2lsbCBjb3ZlciB0aGUgZW50aXJlIG91dHB1dCBzdXJmYWNlLgotICAgIE1lc2hHZW5lcmF0
b3IodW5zaWduZWQgY29sdW1ucywgdW5zaWduZWQgcm93cywgY29uc3QgRmxvYXRSZWN0JiBtZXNo
Qm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQotICAgICAgICA6
IG1fbWVzaFR5cGUobWVzaFR5cGUpCi0gICAgICAgICwgbV9wb2ludHMoY29sdW1ucyArIDEsIHJv
d3MgKyAxKQotICAgICAgICAsIG1fdGlsZXMoY29sdW1ucywgcm93cykKLSAgICAgICAgLCBtX3Rp
bGVTaXplSW5QaXhlbHMobWVzaEJveC53aWR0aCgpIC8gbV90aWxlcy53aWR0aCgpLCBtZXNoQm94
LmhlaWdodCgpIC8gbV90aWxlcy5oZWlnaHQoKSkKLSAgICAgICAgLCBtX3RpbGVTaXplSW5EZXZp
Y2VTcGFjZSgxLjBmIC8gbV90aWxlcy53aWR0aCgpLCAxLjBmIC8gbV90aWxlcy5oZWlnaHQoKSkK
LSAgICAgICAgLCBtX21lc2hCb3gobWVzaEJveCkKLSAgICB7Ci0gICAgICAgIC8vIEJ1aWxkIHRo
ZSB0d28gYnVmZmVycyBuZWVkZWQgdG8gZHJhdyB0cmlhbmdsZXM6Ci0gICAgICAgIC8vICogbV92
ZXJ0aWNlcyBoYXMgYSBudW1iZXIgb2YgZmxvYXQgYXR0cmlidXRlcyB0aGF0IHdpbGwgYmUgcGFz
c2VkIHRvIHRoZSB2ZXJ0ZXggc2hhZGVyCi0gICAgICAgIC8vIGZvciBlYWNoIGNvbXB1dGVkIHZl
cnRleC4gVGhpcyBudW1iZXIgaXMgY2FsY3VsYXRlZCBpbiBmbG9hdHNQZXJWZXJ0ZXgoKSBiYXNl
ZCBvbiB0aGUgbWVzaFR5cGUuCi0gICAgICAgIC8vICogbV9pbmRpY2VzIGlzIGEgYnVmZmVyIHRo
YXQgd2lsbCBoYXZlIDMgaW5kaWNlcyBwZXIgdHJpYW5nbGUuIEVhY2ggaW5kZXggd2lsbCBwb2lu
dCBpbnNpZGUKLSAgICAgICAgLy8gdGhlIG1fdmVydGljZXMgYnVmZmVyLgotICAgICAgICBtX3Zl
cnRpY2VzLnJlc2VydmVDYXBhY2l0eSh2ZXJ0aWNlc0NvdW50KCkgKiBmbG9hdHNQZXJWZXJ0ZXgo
KSk7Ci0gICAgICAgIG1faW5kaWNlcy5yZXNlcnZlQ2FwYWNpdHkoaW5kaWNlc0NvdW50KCkpOwot
ICAgICAgICAKLSAgICAgICAgLy8gQmFzZWQgb24gdGhlIG1lc2hUeXBlIHRoZXJlIGNhbiBiZSB0
d28gdHlwZXMgb2YgbWVzaGVzLgotICAgICAgICAvLyAqIGF0dGFjaGVkOiBlYWNoIHRyaWFuZ2xl
IHVzZXMgdmVydGljZXMgZnJvbSB0aGUgbmVpZ2hib3IgdHJpYW5nbGVzLiBUaGlzIGlzIHVzZWZ1
bCB0byBzYXZlIHNvbWUgR1BVIG1lbW9yeQotICAgICAgICAvLyB3aGVuIHRoZXJlJ3Mgbm8gbmVl
ZCB0byBleHBsb2RlIHRoZSB0aWxlcy4KLSAgICAgICAgLy8gKiBkZXRhY2hlZDogZWFjaCB0cmlh
bmdsZSBoYXMgaXRzIG93biB2ZXJ0aWNlcy4gVGhpcyBtZWFucyBlYWNoIHRyaWFuZ2xlIGNhbiBi
ZSBtb3ZlZCBpbmRlcGVuZGVudGx5IGFuZCBhIHZlYzMKLSAgICAgICAgLy8gYXR0cmlidXRlIGlz
IHBhc3NlZCwgc28gdGhhdCBlYWNoIHZlcnRleCBjYW4gYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4K
LSAgICAgICAgaWYgKG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hF
RCkKLSAgICAgICAgICAgIGdlbmVyYXRlQXR0YWNoZWRNZXNoKCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGdlbmVyYXRlRGV0YWNoZWRNZXNoKCk7Ci0gICAgICAgIAotI2lmbmRlZiBOREVC
VUcKLSAgICAgICAgaWYgKHNfZHVtcEN1c3RvbUZpbHRlck1lc2hCdWZmZXJzKQotICAgICAgICAg
ICAgZHVtcEJ1ZmZlcnMoKTsKLSNlbmRpZgotICAgIH0KLQotICAgIGNvbnN0IFZlY3RvcjxmbG9h
dD4mIHZlcnRpY2VzKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNlczsgfQotICAgIGNvbnN0IFZl
Y3Rvcjx1aW50MTZfdD4mIGluZGljZXMoKSBjb25zdCB7IHJldHVybiBtX2luZGljZXM7IH0KLQot
ICAgIGNvbnN0IEludFNpemUmIHBvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzOyB9Ci0g
ICAgdW5zaWduZWQgcG9pbnRzQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BvaW50cy53aWR0aCgp
ICogbV9wb2ludHMuaGVpZ2h0KCk7IH0KLSAgICAKLSAgICBjb25zdCBJbnRTaXplJiB0aWxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fdGlsZXM7IH0KLSAgICB1bnNpZ25lZCB0aWxlc0NvdW50KCkgY29u
c3QgeyByZXR1cm4gbV90aWxlcy53aWR0aCgpICogbV90aWxlcy5oZWlnaHQoKTsgfQotICAgIAot
ICAgIHVuc2lnbmVkIGluZGljZXNDb3VudCgpIGNvbnN0Ci0gICAgewotICAgICAgICBjb25zdCB1
bnNpZ25lZCB0cmlhbmdsZXNQZXJUaWxlID0gMjsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgaW5k
aWNlc1BlclRyaWFuZ2xlID0gMzsKLSAgICAgICAgcmV0dXJuIHRpbGVzQ291bnQoKSAqIHRyaWFu
Z2xlc1BlclRpbGUgKiBpbmRpY2VzUGVyVHJpYW5nbGU7Ci0gICAgfQotICAgIAotICAgIHVuc2ln
bmVkIGZsb2F0c1BlclZlcnRleCgpIGNvbnN0Ci0gICAgewotICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgQXR0YWNoZWRNZXNoVmVydGV4U2l6ZSA9IDQgKyAvLyB2ZWM0IGFfcG9zaXRpb24K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
ICsgLy8gdmVjMiBhX3RleENvb3JkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjsgLy8gdmVjMiBhX21lc2hDb29yZAotCi0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBEZXRhY2hlZE1lc2hWZXJ0ZXhTaXplID0gQXR0YWNoZWRNZXNo
VmVydGV4U2l6ZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzsgLy8gdmVjMyBhX3RyaWFuZ2xlQ29vcmQKLQotICAgICAgICByZXR1cm4g
bV9tZXNoVHlwZSA9PSBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVEID8gQXR0YWNoZWRN
ZXNoVmVydGV4U2l6ZSA6IERldGFjaGVkTWVzaFZlcnRleFNpemU7Ci0gICAgfQotICAgIAotICAg
IHVuc2lnbmVkIHZlcnRpY2VzQ291bnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
bWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCA/IHBvaW50c0NvdW50
KCkgOiBpbmRpY2VzQ291bnQoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB2b2lk
IChNZXNoR2VuZXJhdG9yOjoqQWRkVHJpYW5nbGVWZXJ0ZXhGdW5jdGlvbikoaW50IHF1YWRYLCBp
bnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSk7Ci0g
ICAgCi0gICAgdGVtcGxhdGUgPEFkZFRyaWFuZ2xlVmVydGV4RnVuY3Rpb24gYWRkVHJpYW5nbGVW
ZXJ0ZXg+Ci0gICAgdm9pZCBhZGRUaWxlKGludCBxdWFkWCwgaW50IHF1YWRZKQotICAgIHsKLSAg
ICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMCwgMCwg
MSk7Ci0gICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFks
IDEsIDAsIDIpOwotICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgs
IHF1YWRZLCAxLCAxLCAzKTsKLSAgICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkp
KHF1YWRYLCBxdWFkWSwgMCwgMCwgNCk7Ci0gICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVW
ZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDEsIDEsIDUpOwotICAgICAgICAoKCp0aGlzKS4qKGFkZFRy
aWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZLCAwLCAxLCA2KTsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBhZGRBdHRhY2hlZE1lc2hJbmRleChpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFu
Z2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xlKQotICAgIHsKLSAgICAgICAgVU5VU0VE
X1BBUkFNKHRyaWFuZ2xlKTsKLSAgICAgICAgbV9pbmRpY2VzLmFwcGVuZCgocXVhZFkgKyB0cmlh
bmdsZVkpICogbV9wb2ludHMud2lkdGgoKSArIChxdWFkWCArIHRyaWFuZ2xlWCkpOwotICAgIH0K
LSAgICAKLSAgICB2b2lkIGdlbmVyYXRlQXR0YWNoZWRNZXNoKCkKLSAgICB7Ci0gICAgICAgIGZv
ciAoaW50IGogPSAwOyBqIDwgbV9wb2ludHMuaGVpZ2h0KCk7ICsraikgewotICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBtX3BvaW50cy53aWR0aCgpOyArK2kpCi0gICAgICAgICAgICAg
ICAgYWRkQXR0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhpLCBqKTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtX3RpbGVzLmhlaWdodCgpOyArK2op
IHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV90aWxlcy53aWR0aCgpOyArK2kp
Ci0gICAgICAgICAgICAgICAgYWRkVGlsZTwmTWVzaEdlbmVyYXRvcjo6YWRkQXR0YWNoZWRNZXNo
SW5kZXg+KGksIGopOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHZvaWQgYWRkRGV0YWNo
ZWRNZXNoVmVydGV4QW5kSW5kZXgoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgs
IGludCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSkKLSAgICB7Ci0gICAgICAgIGFkZERldGFjaGVk
TWVzaFZlcnRleEF0dHJpYnV0ZXMocXVhZFgsIHF1YWRZLCB0cmlhbmdsZVgsIHRyaWFuZ2xlWSwg
dHJpYW5nbGUpOwotICAgICAgICBtX2luZGljZXMuYXBwZW5kKG1faW5kaWNlcy5zaXplKCkpOwot
ICAgIH0KLSAgICAKLSAgICB2b2lkIGdlbmVyYXRlRGV0YWNoZWRNZXNoKCkKLSAgICB7Ci0gICAg
ICAgIGZvciAoaW50IGogPSAwOyBqIDwgbV90aWxlcy5oZWlnaHQoKTsgKytqKSB7Ci0gICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdGlsZXMud2lkdGgoKTsgKytpKQotICAgICAgICAg
ICAgICAgIGFkZFRpbGU8Jk1lc2hHZW5lcmF0b3I6OmFkZERldGFjaGVkTWVzaFZlcnRleEFuZElu
ZGV4PihpLCBqKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICB2b2lkIGFkZFBvc2l0aW9u
QXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZKQotICAgIHsKLSAgICAgICAgLy8gdmVjNCBh
X3Bvc2l0aW9uCi0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJblBpeGVscy53
aWR0aCgpICogcXVhZFggLSAwLjVmICsgbV9tZXNoQm94LngoKSk7Ci0gICAgICAgIG1fdmVydGlj
ZXMuYXBwZW5kKG1fdGlsZVNpemVJblBpeGVscy5oZWlnaHQoKSAqIHF1YWRZIC0gMC41ZiArIG1f
bWVzaEJveC55KCkpOwotICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZCgwLjBmKTsgLy8gegotICAg
ICAgICBtX3ZlcnRpY2VzLmFwcGVuZCgxLjBmKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZFRleENv
b3JkQXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZKQotICAgIHsKLSAgICAgICAgLy8gdmVj
MiBhX3RleENvb3JkCi0gICAgICAgIG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJblBpeGVs
cy53aWR0aCgpICogcXVhZFggKyBtX21lc2hCb3gueCgpKTsKLSAgICAgICAgbV92ZXJ0aWNlcy5h
cHBlbmQobV90aWxlU2l6ZUluUGl4ZWxzLmhlaWdodCgpICogcXVhZFkgKyBtX21lc2hCb3gueSgp
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZE1lc2hDb29yZEF0dHJpYnV0ZShpbnQgcXVhZFgsIGlu
dCBxdWFkWSkKLSAgICB7Ci0gICAgICAgIC8vIHZlYzIgYV9tZXNoQ29vcmQKLSAgICAgICAgbV92
ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluRGV2aWNlU3BhY2Uud2lkdGgoKSAqIHF1YWRYKTsK
LSAgICAgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluRGV2aWNlU3BhY2UuaGVpZ2h0
KCkgKiBxdWFkWSk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRUcmlhbmdsZUNvb3JkQXR0cmlidXRl
KGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGUpCi0gICAgewotICAgICAgICAvLyB2
ZWMzIGFfdHJpYW5nbGVDb29yZAotICAgICAgICBtX3ZlcnRpY2VzLmFwcGVuZChxdWFkWCk7Ci0g
ICAgICAgIG1fdmVydGljZXMuYXBwZW5kKHF1YWRZKTsKLSAgICAgICAgbV92ZXJ0aWNlcy5hcHBl
bmQodHJpYW5nbGUpOwotICAgIH0KLQotICAgIHZvaWQgYWRkQXR0YWNoZWRNZXNoVmVydGV4QXR0
cmlidXRlcyhpbnQgcXVhZFgsIGludCBxdWFkWSkKLSAgICB7Ci0gICAgICAgIGFkZFBvc2l0aW9u
QXR0cmlidXRlKHF1YWRYLCBxdWFkWSk7Ci0gICAgICAgIGFkZFRleENvb3JkQXR0cmlidXRlKHF1
YWRYLCBxdWFkWSk7Ci0gICAgICAgIGFkZE1lc2hDb29yZEF0dHJpYnV0ZShxdWFkWCwgcXVhZFkp
OwotICAgIH0KLQotICAgIHZvaWQgYWRkRGV0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhpbnQg
cXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFuZ2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFu
Z2xlKQotICAgIHsKLSAgICAgICAgYWRkQXR0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhxdWFk
WCArIHRyaWFuZ2xlWCwgcXVhZFkgKyB0cmlhbmdsZVkpOwotICAgICAgICBhZGRUcmlhbmdsZUNv
b3JkQXR0cmlidXRlKHF1YWRYLCBxdWFkWSwgdHJpYW5nbGUpOwotICAgIH0KLSAgICAKLSNpZm5k
ZWYgTkRFQlVHCi0gICAgdm9pZCBkdW1wQnVmZmVycygpIGNvbnN0Ci0gICAgewotICAgICAgICBw
cmludGYoIk1lc2ggYnVmZmVyczogUG9pbnRzLndpZHRoKCk6ICVkLCBQb2ludHMuaGVpZ2h0KCk6
ICVkIG1lc2hCb3g6ICVmLCAlZiwgJWYsICVmLCB0eXBlOiAlc1xuIiwgCi0gICAgICAgICAgICAg
ICBtX3BvaW50cy53aWR0aCgpLCBtX3BvaW50cy5oZWlnaHQoKSwgbV9tZXNoQm94LngoKSwgbV9t
ZXNoQm94LnkoKSwgbV9tZXNoQm94LndpZHRoKCksIG1fbWVzaEJveC5oZWlnaHQoKSwgCi0gICAg
ICAgICAgICAgICAobV9tZXNoVHlwZSA9PSBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVE
KSA/ICJBdHRhY2hlZCIgOiAiRGV0YWNoZWQiKTsKLSAgICAgICAgcHJpbnRmKCItLS1WZXJ0ZXg6
XG5cdCIpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92ZXJ0aWNlcy5zaXpl
KCk7ICsraSkgewotICAgICAgICAgICAgcHJpbnRmKCIlZiAiLCBtX3ZlcnRpY2VzLmF0KGkpKTsK
LSAgICAgICAgICAgIGlmICghKChpICsgMSkgJSBmbG9hdHNQZXJWZXJ0ZXgoKSkpCi0gICAgICAg
ICAgICAgICAgcHJpbnRmKCJcblx0Iik7Ci0gICAgICAgIH0KLSAgICAgICAgcHJpbnRmKCJcbi0t
LUluZGljZXM6ICIpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9pbmRpY2Vz
LnNpemUoKTsgKytpKQotICAgICAgICAgICAgcHJpbnRmKCIlZCAiLCBtX2luZGljZXMuYXQoaSkp
OwotICAgICAgICBwcmludGYoIlxuIik7Ci0gICAgfQotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAg
VmVjdG9yPGZsb2F0PiBtX3ZlcnRpY2VzOwotICAgIFZlY3Rvcjx1aW50MTZfdD4gbV9pbmRpY2Vz
OwotICAgIAotICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbV9tZXNoVHlwZTsK
LSAgICBJbnRTaXplIG1fcG9pbnRzOwotICAgIEludFNpemUgbV90aWxlczsKLSAgICBGbG9hdFNp
emUgbV90aWxlU2l6ZUluUGl4ZWxzOwotICAgIEZsb2F0U2l6ZSBtX3RpbGVTaXplSW5EZXZpY2VT
cGFjZTsKLSAgICBGbG9hdFJlY3QgbV9tZXNoQm94OwotfTsKIAotQ3VzdG9tRmlsdGVyTWVzaDo6
Q3VzdG9tRmlsdGVyTWVzaChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgY29s
dW1ucywgdW5zaWduZWQgcm93cywgCitDdXN0b21GaWx0ZXJNZXNoOjpDdXN0b21GaWx0ZXJNZXNo
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBjb2x1bW5zLCB1bnNpZ25lZCBy
b3dzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFJlY3Qm
IG1lc2hCb3gsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGUpCiAgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fdmVydGljZXNCdWZmZXJPYmplY3QoMCkKQEAg
LTI0MSw3ICs0NCw3IEBAIEN1c3RvbUZpbHRlck1lc2g6OkN1c3RvbUZpbHRlck1lc2goR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIGNvbHVtbnMsCiAgICAgLCBtX21lc2hCb3go
bWVzaEJveCkKICAgICAsIG1fbWVzaFR5cGUobWVzaFR5cGUpCiB7Ci0gICAgTWVzaEdlbmVyYXRv
ciBnZW5lcmF0b3IoY29sdW1ucywgcm93cywgbWVzaEJveCwgbWVzaFR5cGUpOworICAgIEN1c3Rv
bUZpbHRlck1lc2hHZW5lcmF0b3IgZ2VuZXJhdG9yKGNvbHVtbnMsIHJvd3MsIG1lc2hCb3gsIG1l
c2hUeXBlKTsKICAgICBtX2luZGljZXNDb3VudCA9IGdlbmVyYXRvci5pbmRpY2VzQ291bnQoKTsK
ICAgICBtX2J5dGVzUGVyVmVydGV4ID0gZ2VuZXJhdG9yLmZsb2F0c1BlclZlcnRleCgpICogc2l6
ZW9mKGZsb2F0KTsgICAgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3Iu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNkOWQ0ZDFiMjBkMzI1YjVhOWRkZDFjOWQzZjViZGY4N2Y3MWM2NjAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwCkBAIC0wLDAgKzEsMTczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwK
KyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpICYmIFVTRSgzRF9HUkFQSElDUykKKyNpbmNsdWRlICJDdXN0b21G
aWx0ZXJNZXNoR2VuZXJhdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmbmRlZiBO
REVCVUcKKy8vIFVzZSAiY2FsbCAnV2ViQ29yZTo6c19kdW1wQ3VzdG9tRmlsdGVyTWVzaEJ1ZmZl
cnMnID0gMSIgaW4gR0RCIHRvIGFjdGl2YXRlIHByaW50aW5nIG9mIHRoZSBtZXNoIGJ1ZmZlcnMu
CitzdGF0aWMgYm9vbCBzX2R1bXBDdXN0b21GaWx0ZXJNZXNoQnVmZmVycyA9IGZhbHNlOworI2Vu
ZGlmCisKK0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OkN1c3RvbUZpbHRlck1lc2hHZW5lcmF0
b3IodW5zaWduZWQgY29sdW1ucywgdW5zaWduZWQgcm93cywgY29uc3QgRmxvYXRSZWN0JiBtZXNo
Qm94LCBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlKQorICAgIDogbV9t
ZXNoVHlwZShtZXNoVHlwZSkKKyAgICAsIG1fcG9pbnRzKGNvbHVtbnMgKyAxLCByb3dzICsgMSkK
KyAgICAsIG1fdGlsZXMoY29sdW1ucywgcm93cykKKyAgICAsIG1fdGlsZVNpemVJblBpeGVscyht
ZXNoQm94LndpZHRoKCkgLyBtX3RpbGVzLndpZHRoKCksIG1lc2hCb3guaGVpZ2h0KCkgLyBtX3Rp
bGVzLmhlaWdodCgpKQorICAgICwgbV90aWxlU2l6ZUluRGV2aWNlU3BhY2UoMS4wZiAvIG1fdGls
ZXMud2lkdGgoKSwgMS4wZiAvIG1fdGlsZXMuaGVpZ2h0KCkpCisgICAgLCBtX21lc2hCb3gobWVz
aEJveCkKK3sKKyAgICAvLyBCdWlsZCB0aGUgdHdvIGJ1ZmZlcnMgbmVlZGVkIHRvIGRyYXcgdHJp
YW5nbGVzOgorICAgIC8vICogbV92ZXJ0aWNlcyBoYXMgYSBudW1iZXIgb2YgZmxvYXQgYXR0cmli
dXRlcyB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSB2ZXJ0ZXggc2hhZGVyCisgICAgLy8gZm9y
IGVhY2ggY29tcHV0ZWQgdmVydGV4LiBUaGlzIG51bWJlciBpcyBjYWxjdWxhdGVkIGluIGZsb2F0
c1BlclZlcnRleCgpIGJhc2VkIG9uIHRoZSBtZXNoVHlwZS4KKyAgICAvLyAqIG1faW5kaWNlcyBp
cyBhIGJ1ZmZlciB0aGF0IHdpbGwgaGF2ZSAzIGluZGljZXMgcGVyIHRyaWFuZ2xlLiBFYWNoIGlu
ZGV4IHdpbGwgcG9pbnQgaW5zaWRlCisgICAgLy8gdGhlIG1fdmVydGljZXMgYnVmZmVyLgorICAg
IG1fdmVydGljZXMucmVzZXJ2ZUNhcGFjaXR5KHZlcnRpY2VzQ291bnQoKSAqIGZsb2F0c1BlclZl
cnRleCgpKTsKKyAgICBtX2luZGljZXMucmVzZXJ2ZUNhcGFjaXR5KGluZGljZXNDb3VudCgpKTsK
KworICAgIC8vIEJhc2VkIG9uIHRoZSBtZXNoVHlwZSB0aGVyZSBjYW4gYmUgdHdvIHR5cGVzIG9m
IG1lc2hlcy4KKyAgICAvLyAqIGF0dGFjaGVkOiBlYWNoIHRyaWFuZ2xlIHVzZXMgdmVydGljZXMg
ZnJvbSB0aGUgbmVpZ2hib3IgdHJpYW5nbGVzLiBUaGlzIGlzIHVzZWZ1bCB0byBzYXZlIHNvbWUg
R1BVIG1lbW9yeQorICAgIC8vIHdoZW4gdGhlcmUncyBubyBuZWVkIHRvIGV4cGxvZGUgdGhlIHRp
bGVzLgorICAgIC8vICogZGV0YWNoZWQ6IGVhY2ggdHJpYW5nbGUgaGFzIGl0cyBvd24gdmVydGlj
ZXMuIFRoaXMgbWVhbnMgZWFjaCB0cmlhbmdsZSBjYW4gYmUgbW92ZWQgaW5kZXBlbmRlbnRseSBh
bmQgYSB2ZWMzCisgICAgLy8gYXR0cmlidXRlIGlzIHBhc3NlZCwgc28gdGhhdCBlYWNoIHZlcnRl
eCBjYW4gYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KKyAgICBpZiAobV9tZXNoVHlwZSA9PSBDdXN0
b21GaWx0ZXJPcGVyYXRpb246OkFUVEFDSEVEKQorICAgICAgICBnZW5lcmF0ZUF0dGFjaGVkTWVz
aCgpOworICAgIGVsc2UKKyAgICAgICAgZ2VuZXJhdGVEZXRhY2hlZE1lc2goKTsKKworI2lmbmRl
ZiBOREVCVUcKKyAgICBpZiAoc19kdW1wQ3VzdG9tRmlsdGVyTWVzaEJ1ZmZlcnMpCisgICAgICAg
IGR1bXBCdWZmZXJzKCk7CisjZW5kaWYKK30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJh
dG9yOjphZGRBdHRhY2hlZE1lc2hJbmRleChpbnQgcXVhZFgsIGludCBxdWFkWSwgaW50IHRyaWFu
Z2xlWCwgaW50IHRyaWFuZ2xlWSwgaW50IHRyaWFuZ2xlKQoreworICAgIFVOVVNFRF9QQVJBTSh0
cmlhbmdsZSk7CisgICAgbV9pbmRpY2VzLmFwcGVuZCgocXVhZFkgKyB0cmlhbmdsZVkpICogbV9w
b2ludHMud2lkdGgoKSArIChxdWFkWCArIHRyaWFuZ2xlWCkpOworfQorCit2b2lkIEN1c3RvbUZp
bHRlck1lc2hHZW5lcmF0b3I6OmdlbmVyYXRlQXR0YWNoZWRNZXNoKCkKK3sKKyAgICBmb3IgKGlu
dCBqID0gMDsgaiA8IG1fcG9pbnRzLmhlaWdodCgpOyArK2opIHsKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBtX3BvaW50cy53aWR0aCgpOyArK2kpCisgICAgICAgICAgICBhZGRBdHRhY2hl
ZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKGksIGopOworICAgIH0KKworICAgIGZvciAoaW50IGogPSAw
OyBqIDwgbV90aWxlcy5oZWlnaHQoKTsgKytqKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbV90aWxlcy53aWR0aCgpOyArK2kpCisgICAgICAgICAgICBhZGRUaWxlPCZDdXN0b21GaWx0
ZXJNZXNoR2VuZXJhdG9yOjphZGRBdHRhY2hlZE1lc2hJbmRleD4oaSwgaik7CisgICAgfQorfQor
Cit2b2lkIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZERldGFjaGVkTWVzaFZlcnRleEFu
ZEluZGV4KGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZ
LCBpbnQgdHJpYW5nbGUpCit7CisgICAgYWRkRGV0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhx
dWFkWCwgcXVhZFksIHRyaWFuZ2xlWCwgdHJpYW5nbGVZLCB0cmlhbmdsZSk7CisgICAgbV9pbmRp
Y2VzLmFwcGVuZChtX2luZGljZXMuc2l6ZSgpKTsKK30KKwordm9pZCBDdXN0b21GaWx0ZXJNZXNo
R2VuZXJhdG9yOjpnZW5lcmF0ZURldGFjaGVkTWVzaCgpCit7CisgICAgZm9yIChpbnQgaiA9IDA7
IGogPCBtX3RpbGVzLmhlaWdodCgpOyArK2opIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBtX3RpbGVzLndpZHRoKCk7ICsraSkKKyAgICAgICAgICAgIGFkZFRpbGU8JkN1c3RvbUZpbHRl
ck1lc2hHZW5lcmF0b3I6OmFkZERldGFjaGVkTWVzaFZlcnRleEFuZEluZGV4PihpLCBqKTsKKyAg
ICB9Cit9CisKK3ZvaWQgQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvcjo6YWRkUG9zaXRpb25BdHRy
aWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCit7CisgICAgLy8gdmVjNCBhX3Bvc2l0aW9uCisg
ICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90aWxlU2l6ZUluUGl4ZWxzLndpZHRoKCkgKiBxdWFkWCAt
IDAuNWYgKyBtX21lc2hCb3gueCgpKTsKKyAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXpl
SW5QaXhlbHMuaGVpZ2h0KCkgKiBxdWFkWSAtIDAuNWYgKyBtX21lc2hCb3gueSgpKTsKKyAgICBt
X3ZlcnRpY2VzLmFwcGVuZCgwLjBmKTsgLy8gegorICAgIG1fdmVydGljZXMuYXBwZW5kKDEuMGYp
OworfQorCit2b2lkIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3I6OmFkZFRleENvb3JkQXR0cmli
dXRlKGludCBxdWFkWCwgaW50IHF1YWRZKQoreworICAgIC8vIHZlYzIgYV90ZXhDb29yZAorICAg
IG1fdmVydGljZXMuYXBwZW5kKG1fdGlsZVNpemVJblBpeGVscy53aWR0aCgpICogcXVhZFggKyBt
X21lc2hCb3gueCgpKTsKKyAgICBtX3ZlcnRpY2VzLmFwcGVuZChtX3RpbGVTaXplSW5QaXhlbHMu
aGVpZ2h0KCkgKiBxdWFkWSArIG1fbWVzaEJveC55KCkpOworfQorCit2b2lkIEN1c3RvbUZpbHRl
ck1lc2hHZW5lcmF0b3I6OmFkZE1lc2hDb29yZEF0dHJpYnV0ZShpbnQgcXVhZFgsIGludCBxdWFk
WSkKK3sKKyAgICAvLyB2ZWMyIGFfbWVzaENvb3JkCisgICAgbV92ZXJ0aWNlcy5hcHBlbmQobV90
aWxlU2l6ZUluRGV2aWNlU3BhY2Uud2lkdGgoKSAqIHF1YWRYKTsKKyAgICBtX3ZlcnRpY2VzLmFw
cGVuZChtX3RpbGVTaXplSW5EZXZpY2VTcGFjZS5oZWlnaHQoKSAqIHF1YWRZKTsKK30KKwordm9p
ZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGRUcmlhbmdsZUNvb3JkQXR0cmlidXRlKGlu
dCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGUpCit7CisgICAgLy8gdmVjMyBhX3RyaWFu
Z2xlQ29vcmQKKyAgICBtX3ZlcnRpY2VzLmFwcGVuZChxdWFkWCk7CisgICAgbV92ZXJ0aWNlcy5h
cHBlbmQocXVhZFkpOworICAgIG1fdmVydGljZXMuYXBwZW5kKHRyaWFuZ2xlKTsKK30KKwordm9p
ZCBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjphZGRBdHRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1
dGVzKGludCBxdWFkWCwgaW50IHF1YWRZKQoreworICAgIGFkZFBvc2l0aW9uQXR0cmlidXRlKHF1
YWRYLCBxdWFkWSk7CisgICAgYWRkVGV4Q29vcmRBdHRyaWJ1dGUocXVhZFgsIHF1YWRZKTsKKyAg
ICBhZGRNZXNoQ29vcmRBdHRyaWJ1dGUocXVhZFgsIHF1YWRZKTsKK30KKwordm9pZCBDdXN0b21G
aWx0ZXJNZXNoR2VuZXJhdG9yOjphZGREZXRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKGludCBx
dWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBpbnQgdHJpYW5n
bGUpCit7CisgICAgYWRkQXR0YWNoZWRNZXNoVmVydGV4QXR0cmlidXRlcyhxdWFkWCArIHRyaWFu
Z2xlWCwgcXVhZFkgKyB0cmlhbmdsZVkpOworICAgIGFkZFRyaWFuZ2xlQ29vcmRBdHRyaWJ1dGUo
cXVhZFgsIHF1YWRZLCB0cmlhbmdsZSk7Cit9CisKKyNpZm5kZWYgTkRFQlVHCit2b2lkIEN1c3Rv
bUZpbHRlck1lc2hHZW5lcmF0b3I6OmR1bXBCdWZmZXJzKCkgY29uc3QKK3sKKyAgICBwcmludGYo
Ik1lc2ggYnVmZmVyczogUG9pbnRzLndpZHRoKCk6ICVkLCBQb2ludHMuaGVpZ2h0KCk6ICVkIG1l
c2hCb3g6ICVmLCAlZiwgJWYsICVmLCB0eXBlOiAlc1xuIiwKKyAgICAgICAgICAgbV9wb2ludHMu
d2lkdGgoKSwgbV9wb2ludHMuaGVpZ2h0KCksIG1fbWVzaEJveC54KCksIG1fbWVzaEJveC55KCks
IG1fbWVzaEJveC53aWR0aCgpLCBtX21lc2hCb3guaGVpZ2h0KCksCisgICAgICAgICAgIChtX21l
c2hUeXBlID09IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6QVRUQUNIRUQpID8gIkF0dGFjaGVkIiA6
ICJEZXRhY2hlZCIpOworICAgIHByaW50ZigiLS0tVmVydGV4OlxuXHQiKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV92ZXJ0aWNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBwcmlu
dGYoIiVmICIsIG1fdmVydGljZXMuYXQoaSkpOworICAgICAgICBpZiAoISgoaSArIDEpICUgZmxv
YXRzUGVyVmVydGV4KCkpKQorICAgICAgICAgICAgcHJpbnRmKCJcblx0Iik7CisgICAgfQorICAg
IHByaW50ZigiXG4tLS1JbmRpY2VzOiAiKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9pbmRpY2VzLnNpemUoKTsgKytpKQorICAgICAgICBwcmludGYoIiVkICIsIG1faW5kaWNlcy5h
dChpKSk7CisgICAgcHJpbnRmKCJcbiIpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykgJiYgVVNFKDNEX0dSQVBISUNT
KQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5
Zjc1NjIxYjQ2NWQxNjFlNzVkY2RlNmQyMTllMWE5NmI2OWJkZjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck1l
c2hHZW5lcmF0b3IuaApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
ICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yX2gKKyNkZWZpbmUgQ3Vz
dG9tRmlsdGVyTWVzaEdlbmVyYXRvcl9oCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpICYmIFVT
RSgzRF9HUkFQSElDUykKKworI2luY2x1ZGUgIkN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIgorI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEN1c3Rv
bUZpbHRlck1lc2hHZW5lcmF0b3IgeworcHVibGljOgorICAgIC8vIExpbmVzIGFuZCBjb2x1bW5z
IGFyZSB0aGUgdmFsdWVzIHBhc3NlZCBpbiBDU1MuIFRoZSByZXN1bHQgaXMgdmVydGV4IG1lc2gg
dGhhdCBoYXMgJ3Jvd3MnIG51bWJlcnMgb2Ygcm93cworICAgIC8vIGFuZCAnY29sdW1ucycgbnVt
YmVyIG9mIGNvbHVtbnMgd2l0aCBhIHRvdGFsIG9mICdyb3dzICsgMScgKiAnY29sdW1ucyArIDEn
IHZlcnRpY2VzLgorICAgIC8vIE1lc2hCb3ggaXMgdGhlIGZpbHRlcmVkIGFyZWEgY2FsY3VsYXRl
ZCBkZWZpbmVkIHVzaW5nIHRoZSBib3JkZXItYm94LCBwYWRkaW5nLWJveCwgY29udGVudC1ib3gg
b3IgZmlsdGVyLWJveAorICAgIC8vIGF0dHJpYnV0ZXMuIEEgdmFsdWUgb2YgKDAsIDAsIDEsIDEp
IHdpbGwgY292ZXIgdGhlIGVudGlyZSBvdXRwdXQgc3VyZmFjZS4KKyAgICBDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yKHVuc2lnbmVkIGNvbHVtbnMsIHVuc2lnbmVkIHJvd3MsIGNvbnN0IEZsb2F0
UmVjdCYgbWVzaEJveCwgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSk7CisKKyAgICBj
b25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGljZXM7
IH0KKyAgICBjb25zdCBWZWN0b3I8dWludDE2X3Q+JiBpbmRpY2VzKCkgY29uc3QgeyByZXR1cm4g
bV9pbmRpY2VzOyB9CisKKyAgICBjb25zdCBJbnRTaXplJiBwb2ludHMoKSBjb25zdCB7IHJldHVy
biBtX3BvaW50czsgfQorICAgIHVuc2lnbmVkIHBvaW50c0NvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9wb2ludHMud2lkdGgoKSAqIG1fcG9pbnRzLmhlaWdodCgpOyB9CisKKyAgICBjb25zdCBJbnRT
aXplJiB0aWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZXM7IH0KKyAgICB1bnNpZ25lZCB0aWxl
c0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV90aWxlcy53aWR0aCgpICogbV90aWxlcy5oZWlnaHQo
KTsgfQorCisgICAgdW5zaWduZWQgaW5kaWNlc0NvdW50KCkgY29uc3QKKyAgICB7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHRyaWFuZ2xlc1BlclRpbGUgPSAyOworICAgICAgICBjb25zdCB1bnNp
Z25lZCBpbmRpY2VzUGVyVHJpYW5nbGUgPSAzOworICAgICAgICByZXR1cm4gdGlsZXNDb3VudCgp
ICogdHJpYW5nbGVzUGVyVGlsZSAqIGluZGljZXNQZXJUcmlhbmdsZTsKKyAgICB9CisKKyAgICB1
bnNpZ25lZCBmbG9hdHNQZXJWZXJ0ZXgoKSBjb25zdAorICAgIHsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIEF0dGFjaGVkTWVzaFZlcnRleFNpemUgPSA0ICsgLy8gdmVjNCBhX3Bvc2l0
aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMiArIC8vIHZlYzIgYV90ZXhDb29yZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDI7IC8vIHZlYzIgYV9tZXNoQ29vcmQKKworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRGV0YWNoZWRNZXNoVmVydGV4U2l6ZSA9IEF0dGFjaGVk
TWVzaFZlcnRleFNpemUgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDM7IC8vIHZlYzMgYV90cmlhbmdsZUNvb3JkCisKKyAgICAgICAgcmV0
dXJuIG1fbWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCA/IEF0dGFj
aGVkTWVzaFZlcnRleFNpemUgOiBEZXRhY2hlZE1lc2hWZXJ0ZXhTaXplOworICAgIH0KKworICAg
IHVuc2lnbmVkIHZlcnRpY2VzQ291bnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
bWVzaFR5cGUgPT0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpBVFRBQ0hFRCA/IHBvaW50c0NvdW50
KCkgOiBpbmRpY2VzQ291bnQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdHlwZWRlZiB2b2lk
IChDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yOjoqQWRkVHJpYW5nbGVWZXJ0ZXhGdW5jdGlvbiko
aW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGludCB0
cmlhbmdsZSk7CisKKyAgICB0ZW1wbGF0ZSA8QWRkVHJpYW5nbGVWZXJ0ZXhGdW5jdGlvbiBhZGRU
cmlhbmdsZVZlcnRleD4KKyAgICB2b2lkIGFkZFRpbGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpCisg
ICAgeworICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xlVmVydGV4KSkocXVhZFgsIHF1YWRZ
LCAwLCAwLCAxKTsKKyAgICAgICAgKCgqdGhpcykuKihhZGRUcmlhbmdsZVZlcnRleCkpKHF1YWRY
LCBxdWFkWSwgMSwgMCwgMik7CisgICAgICAgICgoKnRoaXMpLiooYWRkVHJpYW5nbGVWZXJ0ZXgp
KShxdWFkWCwgcXVhZFksIDEsIDEsIDMpOworICAgICAgICAoKCp0aGlzKS4qKGFkZFRyaWFuZ2xl
VmVydGV4KSkocXVhZFgsIHF1YWRZLCAwLCAwLCA0KTsKKyAgICAgICAgKCgqdGhpcykuKihhZGRU
cmlhbmdsZVZlcnRleCkpKHF1YWRYLCBxdWFkWSwgMSwgMSwgNSk7CisgICAgICAgICgoKnRoaXMp
LiooYWRkVHJpYW5nbGVWZXJ0ZXgpKShxdWFkWCwgcXVhZFksIDAsIDEsIDYpOworICAgIH0KKwor
ICAgIHZvaWQgYWRkQXR0YWNoZWRNZXNoSW5kZXgoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0
cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGludCB0cmlhbmdsZSk7CisKKyAgICB2b2lkIGdlbmVy
YXRlQXR0YWNoZWRNZXNoKCk7CisKKyAgICB2b2lkIGFkZERldGFjaGVkTWVzaFZlcnRleEFuZElu
ZGV4KGludCBxdWFkWCwgaW50IHF1YWRZLCBpbnQgdHJpYW5nbGVYLCBpbnQgdHJpYW5nbGVZLCBp
bnQgdHJpYW5nbGUpOworCisgICAgdm9pZCBnZW5lcmF0ZURldGFjaGVkTWVzaCgpOworICAgIHZv
aWQgYWRkUG9zaXRpb25BdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpOworICAgIHZvaWQg
YWRkVGV4Q29vcmRBdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFkpOworICAgIHZvaWQgYWRk
TWVzaENvb3JkQXR0cmlidXRlKGludCBxdWFkWCwgaW50IHF1YWRZKTsKKyAgICB2b2lkIGFkZFRy
aWFuZ2xlQ29vcmRBdHRyaWJ1dGUoaW50IHF1YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZSk7
CisgICAgdm9pZCBhZGRBdHRhY2hlZE1lc2hWZXJ0ZXhBdHRyaWJ1dGVzKGludCBxdWFkWCwgaW50
IHF1YWRZKTsKKyAgICB2b2lkIGFkZERldGFjaGVkTWVzaFZlcnRleEF0dHJpYnV0ZXMoaW50IHF1
YWRYLCBpbnQgcXVhZFksIGludCB0cmlhbmdsZVgsIGludCB0cmlhbmdsZVksIGludCB0cmlhbmds
ZSk7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgdm9pZCBkdW1wQnVmZmVycygpIGNvbnN0OworI2Vu
ZGlmCisKK3ByaXZhdGU6CisgICAgVmVjdG9yPGZsb2F0PiBtX3ZlcnRpY2VzOworICAgIFZlY3Rv
cjx1aW50MTZfdD4gbV9pbmRpY2VzOworCisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNo
VHlwZSBtX21lc2hUeXBlOworICAgIEludFNpemUgbV9wb2ludHM7CisgICAgSW50U2l6ZSBtX3Rp
bGVzOworICAgIEZsb2F0U2l6ZSBtX3RpbGVTaXplSW5QaXhlbHM7CisgICAgRmxvYXRTaXplIG1f
dGlsZVNpemVJbkRldmljZVNwYWNlOworICAgIEZsb2F0UmVjdCBtX21lc2hCb3g7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpICYm
IFVTRSgzRF9HUkFQSElDUykKKworI2VuZGlmIC8vIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3Jf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKaW5kZXgg
MjE3NzhhODgyMGNlY2Y5ZjEyYzhmMzMzODA2ODI3NTgwMWM5YmRlOC4uYTdkYWNkYmMzM2NhNGFl
Mjk0OWFjYWViNTE2ZWE3NTg3OWUyYTRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clZhbGlkYXRlZFByb2dyYW0uY3BwCkBAIC03Miw2ICs3Miw4IEBAIEN1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0oQ3VzdG9tRmlsdGVyR2xv
YmFsQ29uCiAgICAgLCBtX3Byb2dyYW1JbmZvKHByb2dyYW1JbmZvKQogICAgICwgbV9pc0luaXRp
YWxpemVkKGZhbHNlKQogeworICAgIHBsYXRmb3JtSW5pdCgpOworCiAgICAgU3RyaW5nIG9yaWdp
bmFsVmVydGV4U2hhZGVyID0gcHJvZ3JhbUluZm8udmVydGV4U2hhZGVyU3RyaW5nKCk7CiAgICAg
aWYgKG9yaWdpbmFsVmVydGV4U2hhZGVyLmlzTnVsbCgpKQogICAgICAgICBvcmlnaW5hbFZlcnRl
eFNoYWRlciA9IGRlZmF1bHRWZXJ0ZXhTaGFkZXJTdHJpbmcoKTsKQEAgLTEwMiw3ICsxMDQsNyBA
QCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtKEN1c3RvbUZpbHRlckdsb2JhbENvbgogCiBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbT4gQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Y29tcGlsZWRQcm9ncmFt
KCkKIHsKLSAgICBBU1NFUlQobV9pc0luaXRpYWxpemVkICYmICFtX3ZhbGlkYXRlZFZlcnRleFNo
YWRlci5pc051bGwoKSAmJiAhbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlci5pc051bGwoKSk7Cisg
ICAgQVNTRVJUKG1faXNJbml0aWFsaXplZCAmJiBtX2dsb2JhbENvbnRleHQgJiYgIW1fdmFsaWRh
dGVkVmVydGV4U2hhZGVyLmlzTnVsbCgpICYmICFtX3ZhbGlkYXRlZEZyYWdtZW50U2hhZGVyLmlz
TnVsbCgpKTsKICAgICBpZiAoIW1fY29tcGlsZWRQcm9ncmFtKQogICAgICAgICBtX2NvbXBpbGVk
UHJvZ3JhbSA9IEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTo6Y3JlYXRlKG1fZ2xvYmFsQ29u
dGV4dC0+Y29udGV4dCgpLCBtX3ZhbGlkYXRlZFZlcnRleFNoYWRlciwgbV92YWxpZGF0ZWRGcmFn
bWVudFNoYWRlcik7CiAgICAgcmV0dXJuIG1fY29tcGlsZWRQcm9ncmFtOwpAQCAtMjYzLDEwICsy
NjUsMjIgQEAgU3RyaW5nIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OmNvbXBvc2l0ZUZ1
bmN0aW9uU3RyaW5nKENvbXBvc2l0ZU9wZXJhdG9yIGMKICAgICAKIEN1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW06On5DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKCkKIHsKKyAgICBwbGF0
Zm9ybURlc3Ryb3koKTsKKwogICAgIGlmIChtX2dsb2JhbENvbnRleHQpCiAgICAgICAgIG1fZ2xv
YmFsQ29udGV4dC0+cmVtb3ZlVmFsaWRhdGVkUHJvZ3JhbSh0aGlzKTsKIH0KIAorI2lmICFQTEFU
Rk9STShCTEFDS0JFUlJZKQordm9pZCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpwbGF0
Zm9ybUluaXQoKQoreworfQorCit2b2lkIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnBs
YXRmb3JtRGVzdHJveSgpCit7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clZhbGlkYXRlZFByb2dyYW0uaAppbmRleCAzYTllMGYxOWNlYzYyNDhhMWU0Mzk3ZWI3NjY4ZTFm
M2Q2YzNlYjY5Li42MTA4ODRkNmUwZjI5YWEyYzc0ODM0M2ZiNWQ5MzI0MTRmM2JmN2E0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uaApAQCAtMzksNiArMzks
MTQgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKKy8vIFBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtIGRlZmluZXMgYSB0eXBlIHRoYXQg
aXMgY29tcGF0aWJsZSB3aXRoIHRoZSBmcmFtZXdvcmsgdXNlZCB0byBpbXBsZW1lbnQgYWNjZWxl
cmF0ZWQgY29tcG9zaXRpbmcgb24gYSBwYXJ0aWN1bGFyIHBsYXRmb3JtLgorI2lmIFBMQVRGT1JN
KEJMQUNLQkVSUlkpCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBMYXllckNvbXBpbGVkUHJv
Z3JhbTsKK30KK3R5cGVkZWYgV2ViQ29yZTo6TGF5ZXJDb21waWxlZFByb2dyYW0gUGxhdGZvcm1D
b21waWxlZFByb2dyYW07CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBB
TkdMRVdlYktpdEJyaWRnZTsKQEAgLTcxLDYgKzc5LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBD
dXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgcHJvZ3JhbUluZm8oKSBjb25zdCB7IHJldHVybiBtX3By
b2dyYW1JbmZvOyB9CiAgICAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+
IGNvbXBpbGVkUHJvZ3JhbSgpOwogCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKKyAgICBQbGF0
Zm9ybUNvbXBpbGVkUHJvZ3JhbSogcGxhdGZvcm1Db21waWxlZFByb2dyYW0oKTsKKyNlbmRpZgor
CiAgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxpemVk
OyB9CiAKICAgICAvLyAnZGV0YWNoRnJvbUdsb2JhbENvbnRleHQnIGlzIGNhbGxlZCB3aGVuIHRo
ZSBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0IGlzIGRlbGV0ZWQsIGFuZCB0aGVyZSdzIG5vIG5l
ZWQgZm9yIHRoZSBjYWxsYmFjayBhbnltb3JlLiAKQEAgLTc5LDYgKzkxLDkgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKEN1c3RvbUZpbHRlckds
b2JhbENvbnRleHQqLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYpOwogCisgICAgdm9p
ZCBwbGF0Zm9ybUluaXQoKTsKKyAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOworCiAgICAgc3Rh
dGljIFN0cmluZyBkZWZhdWx0VmVydGV4U2hhZGVyU3RyaW5nKCk7CiAgICAgc3RhdGljIFN0cmlu
ZyBkZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKTsKIApAQCAtOTUsNiArMTEwLDkgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgbV92YWxpZGF0ZWRGcmFnbWVudFNoYWRlcjsKIAogICAgIFJlZlB0
cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IG1fY29tcGlsZWRQcm9ncmFtOworI2lmIFBM
QVRGT1JNKEJMQUNLQkVSUlkpCisgICAgUGxhdGZvcm1Db21waWxlZFByb2dyYW0qIG1fcGxhdGZv
cm1Db21waWxlZFByb2dyYW07CisjZW5kaWYKIAogICAgIGJvb2wgbV9pc0luaXRpYWxpemVkOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
YmxhY2tiZXJyeS9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtQmxhY2tCZXJyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2JsYWNrYmVycnkvQ3VzdG9t
RmlsdGVyVmFsaWRhdGVkUHJvZ3JhbUJsYWNrQmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljZmQxYjZh
ZDM0MDBjYTNlOTNhNjZkNjE4YjQxZmQ5ZmFkZDM4MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2JsYWNrYmVycnkvQ3VzdG9tRmls
dGVyVmFsaWRhdGVkUHJvZ3JhbUJsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
CisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAor
ICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShDU1NfU0hBREVSUykKKworI2luY2x1ZGUgIkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW0uaCIKKworI2luY2x1ZGUgIkxheWVyQ29tcGlsZWRQcm9ncmFtLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworTGF5ZXJDb21waWxlZFByb2dyYW0qIEN1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW06OnBsYXRmb3JtQ29tcGlsZWRQcm9ncmFtKCkKK3sKKyAgICBBU1NFUlQobV9pc0luaXRp
YWxpemVkICYmICFtX3ZhbGlkYXRlZFZlcnRleFNoYWRlci5pc051bGwoKSAmJiAhbV92YWxpZGF0
ZWRGcmFnbWVudFNoYWRlci5pc051bGwoKSk7CisKKyAgICBpZiAoIW1fcGxhdGZvcm1Db21waWxl
ZFByb2dyYW0pCisgICAgICAgIG1fcGxhdGZvcm1Db21waWxlZFByb2dyYW0gPSBMYXllckNvbXBp
bGVkUHJvZ3JhbTo6Y3JlYXRlKG1fdmFsaWRhdGVkVmVydGV4U2hhZGVyLCBtX3ZhbGlkYXRlZEZy
YWdtZW50U2hhZGVyKS5sZWFrUmVmKCk7CisKKyAgICByZXR1cm4gbV9wbGF0Zm9ybUNvbXBpbGVk
UHJvZ3JhbTsKK30KKwordm9pZCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpwbGF0Zm9y
bUluaXQoKQoreworICAgIG1fcGxhdGZvcm1Db21waWxlZFByb2dyYW0gPSAwOworfQorCit2b2lk
IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnBsYXRmb3JtRGVzdHJveSgpCit7CisgICAg
ZGVyZWZJZk5vdE51bGwobV9wbGF0Zm9ybUNvbXBpbGVkUHJvZ3JhbSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykK
</data>

          </attachment>
      

    </bug>

</bugzilla>